




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
銜接篇程序框架第1頁,課件共34頁,創(chuàng)作于2023年2月硬指令和偽指令硬指令——使CPU產(chǎn)生動作、并在程序執(zhí)行時才處理的語句。偽指令(Directive)——不產(chǎn)生CPU動作、在程序執(zhí)行前由匯編程序處理的說明性語句,例如,數(shù)據(jù)說明、變量定義等等。偽指令與具體的處理器類型無關,但與匯編程序的版本有關。我們采用微軟宏匯編程序MASM6.15第2頁,課件共34頁,創(chuàng)作于2023年2月一、匯編語言程序的開發(fā)本節(jié)從匯編語言程序的語句格式出發(fā),給出第一個示范性的匯編語言源程序,并說明匯編語言程序的過程:編輯匯編連接調(diào)試即匯編語言程序的開發(fā)方法第3頁,課件共34頁,創(chuàng)作于2023年2月1匯編語言程序的語句格式⑴執(zhí)行性語句——由硬指令構(gòu)成的語句,它通常對應一條機器指令,出現(xiàn)在程序的代碼段中:標號:硬指令助記符操作數(shù),操作數(shù) ;注釋⑵說明性語句——由偽指令構(gòu)成的語句,它通常指示匯編程序如何匯編源程序:名字偽指令助記符參數(shù),參數(shù),… ;注釋第4頁,課件共34頁,創(chuàng)作于2023年2月
MOVCX,0
;傳送指令,具有2個操作數(shù)DELAY: NOP ;空操作指令,沒有操作數(shù),帶有標號
LOOPDELAY ;循環(huán)指令,標號DELAY說明轉(zhuǎn)移位置BUFFER DB1,2,3,4,5,6,7
;數(shù)據(jù)定義偽指令,在主存中開辟7個連續(xù)的字節(jié)單元,初值依次為1~7,BUFFER表示首地址匯編語言語句實例第5頁,課件共34頁,創(chuàng)作于2023年2月標號、名字與標識符標號是反映硬指令位置(邏輯地址)的標識符,后跟一個冒號分隔名字是反映偽指令位置(邏輯地址)和屬性的標識符,后跟空格或制表符分隔,沒有一個冒號標識符(Identifier)一般最多由31個字母、數(shù)字及規(guī)定的特殊符號(如_、$、?、@)組成,不能以數(shù)字開頭。默認情況下,匯編程序不區(qū)別標識符中的字母大小寫一個程序中,每個標識符的定義是唯一的,還不能是匯編語言采用的保留字第6頁,課件共34頁,創(chuàng)作于2023年2月保留字保留字(ReservedWord)是匯編程序已經(jīng)利用的標識符,主要有:硬指令助記符——例如:MOV、ADD偽指令助記符——例如:DB、EQU操作符——例如:OFFSET、PTR寄存器名——例如:AX、CS預定義符號——例如:@data
匯編語言大小寫不敏感第7頁,課件共34頁,創(chuàng)作于2023年2月注釋語句中由分號“;”開始的部分為注釋內(nèi)容,用以增加源程序的可讀性必要時,一個語句行也可以由分號開始作為階段性注釋匯編程序在翻譯源程序時將跳過該部分,不對它們做任何處理第8頁,課件共34頁,創(chuàng)作于2023年2月2匯編語言的程序格式完整的匯編語言源程序由段組成一個匯編語言源程序可以包含若干個代碼段、數(shù)據(jù)段、附加段或堆棧段,段與段之間的順序可隨意排列需獨立運行的程序必須包含一個代碼段,并指示程序執(zhí)行的起始點,一個程序只有一個起始點所有的可執(zhí)行性語句必須位于某一個代碼段內(nèi),說明性語句可根據(jù)需要位于任一段內(nèi)通常,程序還需要一個堆棧段第9頁,課件共34頁,創(chuàng)作于2023年2月匯編語言源程序源程序分別用兩種格式書寫第一種格式從MASM5.0開始支持簡化段定義格式第二種格式MASM5.0以前就具有完整段定義格式Hello,Everybody!程序功能第10頁,課件共34頁,創(chuàng)作于2023年2月;01a.asm(文件名)stack segmentstack ;定義堆棧段
dw512dup(?) ;堆棧段有512字(1024字節(jié))空間stack ends ;堆棧段結(jié)束data segment ;定義數(shù)據(jù)段string db’Hello,Everybody!’,0dh,0ah,’$’data endscode segment’code’ ;定義代碼段
assumecs:code,ds:data,ss:stackstart: movax,data ;建立DS段地址
movds,ax例:完整段定義格式第11頁,課件共34頁,創(chuàng)作于2023年2月
movdx,offsetstring movah,9 int21h movax,4c00h int21h ;利用功能調(diào)用返回DOScode ends ;代碼段結(jié)束
endstart ;匯編結(jié)束,同時指明程序起始點例:完整段定義格式第12頁,課件共34頁,創(chuàng)作于2023年2月;SampleA.ASMstack segmentstack dw512dup(?)stack endsdata segment ... ;在數(shù)據(jù)段定義數(shù)據(jù)data endscode segment’code’ assumecs:code,ds:data,ss:stackstart: movax,data movds,ax ... ;在代碼段填入指令序列
movax,4c00h int21hcode ends... ;子程序代碼
endstart完整段定義格式
MASM5.x支持第13頁,課件共34頁,創(chuàng)作于2023年2月;01b.asm(文件名)
.modelsmall ;定義程序的存儲模式
.stack ;定義堆棧段
.data ;定義數(shù)據(jù)段string db’Hello,Everybody!’,0dh,0ah,’$’ ;在數(shù)據(jù)段定義要顯示的字符串
.code ;定義代碼段
.startup ;程序起始點,建立DS、SS movdx,offsetstring ;指定字符串
movah,9 int21h ;利用功能調(diào)用顯示信息
.exit0 ;程序結(jié)束點,返回DOS end ;匯編結(jié)束例:簡化段定義格式第14頁,課件共34頁,創(chuàng)作于2023年2月;SampleB.ASM .modelsmall .stack .data ... ;在數(shù)據(jù)段定義數(shù)據(jù)
.code .startup ;(注1)
... ;在代碼段填入指令序列
.exit0 ;(注2)
... ;子程序代碼
end ;(注3)簡化段定義格式
MASM6.x支持第15頁,課件共34頁,創(chuàng)作于2023年2月;SampleC.ASM .modelsmall .stack .data ... ;在數(shù)據(jù)段定義數(shù)據(jù)
.codestart:movax,@data movds,ax ... ;在代碼段填入指令序列
movax,4c00h int21h ... ;子程序代碼
endstart簡化段定義格式
MASM5.x支持第16頁,課件共34頁,創(chuàng)作于2023年2月TITLE A04ASM1(EXE)MoveandaddoperationsSTACK SEGMENTPARASTACK'Stack' …….STACK ENDS;----------------------------------------------DATASEG SEGMENTPARA'Data'……DATASEG ENDS;-----------------------------------------------CODESEG SEGMENTPARA'Code'MAIN PROCFAR ASSUMESS:STACK,DS:DATASEG,CS:CODESEG MOVAX,DATASEG ;Setaddressofdata MOVDS,AX ;segmentinDS……. MOV AX,4C00H ;Endprocessing INT 21HMAIN ENDP ;EndofprocedureCODESEG ENDS ;Endofsegment END MAIN ;Endofprogram程
序
的
框
架
結(jié)
構(gòu)
(1)第17頁,課件共34頁,創(chuàng)作于2023年2月TITLE A04ASM2(EXE)Moveandaddoperations;----------------------------------------------------- .MODELSMALL .STACK64 ;Definestack .DATA ;Definedata…….;-----------------------------------------------------
.CODE ;DefinecodesegmentMAIN PROCFAR MOV AX,@data ;Setaddressofdata MOV DS,AX ;segmentinDS
……. MOV AX,4C00H ;Endprocessing INT 21HMAIN ENDP ;Endofprocedure END MAIN ;Endofprogram程
序
的
框
架
結(jié)
構(gòu)
(2)第18頁,課件共34頁,創(chuàng)作于2023年2月3匯編語言程序的開發(fā)過程編輯文本編輯器,如EDIT.COM源程序:文件名.asm匯編匯編程序,如MASM.EXE目標模塊:文件名.obj連接連接程序,如LINK.EXE可執(zhí)行文件:文件名.exe調(diào)試調(diào)試程序,如DEBUG.EXE應用程序錯誤錯誤錯誤錯誤第19頁,課件共34頁,創(chuàng)作于2023年2月源程序:.asm目標文件:.obj可執(zhí)行文件:.exe編輯源程序.asm.asm匯編.obj連接.exe選項.LST.CRF第20頁,課件共34頁,創(chuàng)作于2023年2月編寫注意編寫建議:對任一功能段,編寫注釋程序識別一般不區(qū)分大小寫可讀性強,通常所有匯編指令用大寫,而注釋全部用小寫第21頁,課件共34頁,創(chuàng)作于2023年2月二、DEBUG程序跟蹤調(diào)試第22頁,課件共34頁,創(chuàng)作于2023年2月基本命令的使用DEBUG是我們學習匯編語言的調(diào)試工具。所有的命令不區(qū)分大小寫所有的輸入數(shù)據(jù)都默認十六進制的,不用H結(jié)尾C:\>DEBUG-C:\>DEBUGfile.exe-第23頁,課件共34頁,創(chuàng)作于2023年2月R檢查寄存器C:\>DEBUG-RAX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=0AC4ES=0AC4SS=0AC4CS=0AC4IP=0100NVUPEIPLNZNAPONC0AC4:0100F6C280TESTDL,80第24頁,課件共34頁,創(chuàng)作于2023年2月RF標記寄存器-RF列舉出標志寄存器的各個位狀態(tài)OF 溢出(是/否) OV NVDF 方向(減量/增量) DN UPIF 中斷(允許/關閉) EI DISF 符號(負/正) NG PLZF 零(是/否) ZR NZAF 輔助進位(是/否) AC NAPF 奇偶(偶/奇) PE POCF 進位(是/否 CY NC第25頁,課件共34頁,創(chuàng)作于2023年2月D檢查內(nèi)存內(nèi)容使用的格式:
-Dstartingaddress[length]開始的地址:segment:offset采用默認DS的偏移地址offset例如:-D0000-DDS:0000-D0100L5第26頁,課件共34頁,創(chuàng)作于2023年2月E編輯機器指令程序C:\>DEBUG-ECS:100B82301052500-ECS:1068BD803D88BCB-ECS:10C2bc82bc0ebee-DCS:1000B00:0100B823010525008BD8-03D88BCB2BC82BC0.#..%.......+.+.0B00:0110EBEEC3750580CF80-EBD43C0D3400EF0A...u......<.4...0B00:0120013A0602967503E9-1701B23A3814751D.:...u.....:8.u.第27頁,課件共34頁,創(chuàng)作于2023年2月U反匯編采用U反匯編機器程序例如,反匯編剛才的機器指令-U1000B05:0100B82301MOVAX,01230B05:0103052500ADDAX,00250B05:01068BD8MOVBX,AX0B05:010803D8ADDBX,AX0B05:010A8BCBMOVCX,BX0B05:010C2BC8SUBCX,AX0B05:010E2BC0SUBAX,AX0B05:0110EBEEJMP01000B05:01123EDS:0B05:01133299C606XORBL,[BX+DI+06C6]0B05:01173499XORAL,99第28頁,課件共34頁,創(chuàng)作于2023年2月T跟蹤執(zhí)行指令命令T執(zhí)行CS:IP指向的一條指令-RAX=0000BX=0290CX=0148DX=0000SP=FFFEBP=0000SI=0000DI=0000DS=0B05ES=0B05SS=0B05CS=0B05IP=0100NVUPEIPLZRNAPENC0B05:0100B82301MOVAX,0123-TAX=0123BX=0290CX=0148DX=0000SP=FFFEBP=0000SI=0000DI=0000DS=0B05ES=0B05SS=0B05CS=0B05IP=0103NVUPEIPLZRNAPENC0B05:0103052500ADDAX,0025-TAX=0148BX=0290CX=0148DX=0000SP=FFFEBP=0000SI=0000DI=0000DS=0B05ES=0B05SS=0B05CS=0B05IP=0106NVUPEIPLNZNAPENC0B05:01068BD8MOVBX,AX-TAX=0148BX=0148CX=0148DX=0000SP=FFFEBP=0000SI=0000DI=0000DS=0B05ES=0B05SS=0B05CS=0B05IP=0108NVUPEIPLNZNAPENC0B05:010803D8ADDBX,AX第29頁,課件共34頁,創(chuàng)作于2023年2月R改變寄存器的內(nèi)容命令R改變寄存器的內(nèi)容,在提示符下敲入寄存器的值格式
Rregname-RAX=0000BX=0290CX=0148DX=0000SP=FFFEBP=0000SI=0000DI=0000DS=0B05ES=0B05SS=0B05CS=0B05IP=0100NVUPEIPLZRNAPENC0B05:0100B82301MOVAX,0123-RAXAX0000:1234-RAX=1234BX=0290CX=0148DX=0000SP=FFFEBP
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)機拖板轉(zhuǎn)讓合同樣本
- 古建筑駁岸施工方案
- 樹皮收購方案范本
- 內(nèi)墻油漆合同樣本
- 人工探管施工方案
- 京東店鋪運營合同樣本
- 保溫門窗采購合同標準文本
- 倫敦就業(yè)合同標準文本
- 培養(yǎng)學生團隊合作精神的活動計劃
- 農(nóng)民種地使用快遞合同樣本
- -體育測量與評價課件-第七章體質(zhì)測評
- 滾筒式柑橘分選機的設計
- 隨班就讀學生個人檔案
- 公司治理中的法律風險防范資料
- 2017年10月自考00015英語二試卷及答案
- 《母雞》課件 王崧舟 千課萬人 (圖片版不可編輯)
- 國開電大《工程數(shù)學(本)》形成性考核作業(yè)5答案
- 13、試生產(chǎn)開停工方案
- 暖通工程設備吊裝施工方案
- JJG 109-2004百分表式卡規(guī)
- GB/T 5597-1999固體電介質(zhì)微波復介電常數(shù)的測試方法
評論
0/150
提交評論