《匯編語(yǔ)言程序設(shè)計(jì)》PPT課件.ppt_第1頁(yè)
《匯編語(yǔ)言程序設(shè)計(jì)》PPT課件.ppt_第2頁(yè)
《匯編語(yǔ)言程序設(shè)計(jì)》PPT課件.ppt_第3頁(yè)
《匯編語(yǔ)言程序設(shè)計(jì)》PPT課件.ppt_第4頁(yè)
《匯編語(yǔ)言程序設(shè)計(jì)》PPT課件.ppt_第5頁(yè)
已閱讀5頁(yè),還剩202頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第三章 第4章 匯編語(yǔ)言程序設(shè)計(jì),第4章 匯編語(yǔ)言程序設(shè)計(jì),4.1 概述 4.2 匯編語(yǔ)言程序的格式與基本語(yǔ)法 4.3 偽操作命令與宏指令 4.4 DOS與BIOS的調(diào)用 4.5 匯編語(yǔ)言程序設(shè)計(jì),主要內(nèi)容:,匯編語(yǔ)言源程序的結(jié)構(gòu) 匯編語(yǔ)言語(yǔ)句格式 偽指令 功能調(diào)用 匯編語(yǔ)言程序設(shè)計(jì),4.1 概述,一、機(jī)器語(yǔ)言(Machine Language)二進(jìn)制數(shù)形式的指令和數(shù)據(jù)。 B0 64 這就是機(jī)器語(yǔ)言。既不直觀,又不易理解和記憶. 目標(biāo)程序(Object Program)用機(jī)器語(yǔ)言編寫的程序,MOV AL,64H ;這就是助記符。 助記符用便于記憶的英語(yǔ)單詞表示的指令操作碼。它反映了指令的功能和主要特征,便于人們理解和記憶。,二、匯編語(yǔ)言(Assembly Language)指令助記符,符號(hào)地址,標(biāo)號(hào),偽指令等語(yǔ)言元素的集合以及這些元素使用的規(guī)則。,采用標(biāo)號(hào)或符號(hào)來代替地址,匯編語(yǔ)言源程序(Source Program)用匯編語(yǔ)言編寫的程序。,操作數(shù)可能放在存儲(chǔ)器中,這就涉及操作數(shù)的地址。程序中遇到轉(zhuǎn)移指令或調(diào)用指令,也需要知道轉(zhuǎn)移地址,若采用具體地址就很不方便,一旦有錯(cuò),改動(dòng)也很麻煩。,10D1:0100 09750B OR DI+0B,SI 10D1:0103 807C0A2C CMP BYTE PTR SI+0A,2C 10D1:0107 7505 JNZ 010E 10D1:0109 FF36A22C PUSH 2CA2 10D1:010D 41 INC CX 10D1:010E 93 XCHG BX,AX 10D1:010F 33D2 XOR DX,DX 10D1:0111 EBA7 JMP 00BA 10D1:0113 33D2 XOR DX,DX 10D1:0115 33C0 XOR AX,AX 10D1:0117 FF36952C PUSH 2C95 10D1:011B C3 RET 10D1:011C 33D2 XOR DX,DX 10D1:011E 0BC9 OR CX,CX,匯編程序,源程序的編譯程序,匯編程序,匯編語(yǔ)言源程序,機(jī)器語(yǔ)言目標(biāo)程序,匯編源程序需翻譯成機(jī)器語(yǔ)言,變成可執(zhí)行文件,機(jī)器才能執(zhí)行,這個(gè)翻譯過程叫匯編。高級(jí)語(yǔ)言中稱該過程為“解釋”或“編譯”。執(zhí)行翻譯的程序稱為“匯編程序”。,匯編語(yǔ)言程序設(shè)計(jì)與執(zhí)行過程,輸入?yún)R編語(yǔ)言源程序,源文件 .ASM,匯編(編譯),目標(biāo)文件 .OBJ,鏈接,可執(zhí)行文件 .EXE,調(diào)試,最終程序,MASM、DEBUG,MASM X.ASM,LINK X.OBJ,X.EXE,三、高級(jí)語(yǔ)言(High level Language),適合于描述各種算法,不依賴于計(jì)算機(jī)結(jié)構(gòu)和指令系統(tǒng)。 可移植性好,編成方法適合人們的習(xí)慣、通用性好。 編譯和解釋程序復(fù)雜,占內(nèi)存大,產(chǎn)生目標(biāo)代碼長(zhǎng)。執(zhí)行速度慢。處理中斷和接口困難。,高級(jí)語(yǔ)言源程序,目標(biāo) 程序,編譯,編譯軟件程序或解釋軟件程序,4.1.1 匯編語(yǔ)言源程序的結(jié)構(gòu),匯編語(yǔ)言源程序通常由一個(gè)或幾個(gè)程序模塊組成,每個(gè)模塊一般由三個(gè)邏輯段組成: 數(shù)據(jù)段存放數(shù)據(jù)、變量 堆棧段堆棧區(qū)域 代碼段存放程序指令,堆棧段,數(shù)據(jù)段,代碼段,一個(gè)基本的匯編語(yǔ)言程序框架如下:,4.2 匯編語(yǔ)言源程序的格式與基本語(yǔ)法,匯編語(yǔ)言的語(yǔ)句有三種: 指令性語(yǔ)句由8086指令助記符構(gòu)成的語(yǔ)句,由CPU執(zhí)行,每一條指令性語(yǔ)句都有一條機(jī)器碼指令與其對(duì)應(yīng)。 指示性語(yǔ)句由偽指令構(gòu)成的語(yǔ)句,由匯編程序執(zhí)行。它指出匯編程序應(yīng)如何對(duì)源程序進(jìn)行匯編,如何定義變量、分配存儲(chǔ)單元以及指示程序開始和結(jié)束等。指示性語(yǔ)句無機(jī)器碼指令與其相對(duì)應(yīng)。 宏指令語(yǔ)句簡(jiǎn)化匯編語(yǔ)言,可以用一條宏指令指令代替定義過的一段程序,匯編時(shí)將該段程序插入對(duì)應(yīng)程序中。,一、語(yǔ)句的種類,指令性語(yǔ)句的格式為: 標(biāo)號(hào): 指令助記符 目的操作數(shù),源操作數(shù) ;注釋 指示性語(yǔ)句的格式為: 名字 偽指令 參數(shù)1,參數(shù)2,參數(shù)n ;注釋 宏指令語(yǔ)句的格式為: 標(biāo)號(hào): 宏指令 參數(shù)1,參數(shù)2,參數(shù)n ;注釋 注:各部分之間至少要用一個(gè)空格作為分隔符。,二、語(yǔ)句的構(gòu)成元素: 標(biāo)號(hào)指令的符號(hào)地址,用來代表指令在存儲(chǔ)器中的地址。只能出現(xiàn)在指令性語(yǔ)句中,標(biāo)號(hào)后應(yīng)加上冒號(hào)。 名字段、過程、變量的名字,用來代表它們?cè)诖鎯?chǔ)器中的地址。只能出現(xiàn)在指示性語(yǔ)句中,名字后不加冒號(hào)。 指令助記符8086助記符、偽指令 操作數(shù)即指令的操作對(duì)象 對(duì)指令性語(yǔ)句0,1,2個(gè) 對(duì)指示性語(yǔ)句根據(jù)需要而定 操作數(shù)之間以逗號(hào)分隔 操作數(shù)可以是:寄存器、存儲(chǔ)單元、常數(shù)或表達(dá)式 例如:AX,DI+BX+10,200,16*8+TABLE,等等,注釋以分號(hào)開頭,可放在指令后,也可單獨(dú)一行。 注意注解的寫法。要寫指令(段)在程序中的作用,而不要寫指令的操作。 例如:以下為同一條指令寫的注釋 1)MOV CX,100 ;傳送100到CX 2)MOV CX,100 ;循環(huán)計(jì)數(shù)器置初值 顯然,第二種寫法要比第一種寫法要好。,匯編語(yǔ)言的一個(gè)實(shí)例: hello.asm data SEGMENT Hello DB Hello, world!,0DH,0AH,$ data ENDS prog SEGMENT ASSUME CS:prog,DS:data start: MOV AX,data MOV DS,AX LEA DX,hello ;取字符串首地址 MOV AH,9 INT 21H ;顯示字符串 MOV AH,4CH INT 21H ;退回DOS prog ENDS END start,名字,標(biāo)號(hào),三、數(shù)據(jù)項(xiàng)與表達(dá)式,數(shù)據(jù)項(xiàng)包括常量、變量、標(biāo)號(hào)及表達(dá)式。 1.常量 常數(shù) 二進(jìn)制數(shù),以B結(jié)尾。如01001101B。 十進(jìn)制數(shù),如85。 十六進(jìn)制數(shù),以H結(jié)尾。第1個(gè)數(shù)字為A-F時(shí),前面應(yīng)加0,如0F160H。 字符串:用引號(hào)括起來的1個(gè)或多個(gè)字符。如ERROR!, a,匯編時(shí)被翻譯成對(duì)應(yīng)的ASCII碼45H,52H,52H,4FH,52H,21H和61H。 數(shù)值符號(hào)名:用偽指令定義的(EQU)符號(hào)名. 常量表達(dá)式:用各種運(yùn)算符與各種數(shù)值常數(shù)組成的可求值的表達(dá)式。由匯編程序計(jì)算而得。,有三個(gè)屬性: 段地址:即標(biāo)號(hào)所在段的段地址; 偏移量:標(biāo)號(hào)所代表存儲(chǔ)單元的段內(nèi)偏移地址; 類 型:NEAR或FAR: NEAR表示標(biāo)號(hào)所在語(yǔ)句與轉(zhuǎn)移指令/ 調(diào)用指令在同一碼段內(nèi),跳轉(zhuǎn)時(shí) 只需改變IP即可。 FAR標(biāo)號(hào)所在語(yǔ)句與轉(zhuǎn)移指令/調(diào)用 指令不在同一代碼段內(nèi)。 若沒有對(duì)類型進(jìn)行說明,默認(rèn)為NEAR。 標(biāo)號(hào)通常作為轉(zhuǎn)移指令或CALL指令的轉(zhuǎn)移地址。,2.標(biāo)號(hào)指令所在內(nèi)存單元的符號(hào)地址,變量即內(nèi)存中的存儲(chǔ)單元或數(shù)據(jù)區(qū)。 變量名是存儲(chǔ)單元(數(shù)據(jù)區(qū))的符號(hào)地 址或名字。 變量也有三個(gè)屬性: 段地址變量所在段的段地址 偏移量變量單元地址與段首地址之間的位移量。 類 型有BYTE、WORD和DWORD三種。 變量在程序中作為存儲(chǔ)器操作數(shù)被引用。,3.變量,標(biāo)號(hào)和變量名的使用規(guī)則 組成:A-Z(不分大小寫), 0-9, ? . _ $ 不能以數(shù)字開頭,句號(hào)(.)只能作為首字符 長(zhǎng)度小于31個(gè)字符 不能與保留字(指令助記符、偽指令、預(yù)定義符號(hào)等)重名 不能重復(fù)定義 例如: 正確的:LP1, AGAIN, NEXT, _GO, OK_1 錯(cuò)誤的:4M, LOOP, AAA, #HELP, +ONE,4.表達(dá)式,表達(dá)式是常數(shù)、寄存器、標(biāo)號(hào)、變量與運(yùn)算符的組合。 有數(shù)字表達(dá)式和地址表達(dá)式兩種。 匯編時(shí)按優(yōu)先規(guī)則對(duì)表達(dá)式進(jìn)行計(jì)算,計(jì)算出具體的數(shù)值或地址。運(yùn)行時(shí)不能改變。 表達(dá)式中的運(yùn)算符有5類:算術(shù)運(yùn)算符、邏輯運(yùn)算符、關(guān)系運(yùn)算符、分析運(yùn)算符和合成運(yùn)算符。,用于數(shù)字表達(dá)式,例: MOV AX,4*1024 匯編后的形式為: MOV AX,4096 用于地址表達(dá)式,例: LEA SI,TAB+3 若TAB的偏移地址為1000H,則匯編后的形式為: LEA SI,1003H,1)算術(shù)運(yùn)算符 +、-、*、/,MOD,SHL,SHR,邏輯運(yùn)算符只能用于數(shù)字表達(dá)式中。 例:MOV CL,36H AND 0FH 經(jīng)匯編后:MOV CL,06H 注意,不要把邏輯運(yùn)算符與邏輯運(yùn)算指令混淆: 例:AND AX, 3FC0H AND 0FF00H 匯編后源操作數(shù)被翻譯為:3F00H,所以上述指令與AND AX, 3F00H等價(jià)。,2)邏輯運(yùn)算符 AND、OR、XOR、NOT,關(guān)系運(yùn)算的結(jié)果是一個(gè)邏輯值:真或假 關(guān)系為真,結(jié)果為全1 關(guān)系為假,結(jié)果為全0,3)關(guān)系運(yùn)算符EQ、NE、LT、GT、LE、GE,例:MOV BX,PORT GT 300H; 若PORT的值大于300H,則匯編后為:MOV BX,0FFFFH 否則匯編后為: MOV BX,0,例: MOV BX,(PORT GT 300H) AND 20H) OR (PORT LE 300H) AND 30H) 若PORT的值大于300H,則匯編后為: MOV BX,20H 否則匯編后為: MOV BX,30H,SEG:取變量/標(biāo)號(hào)的段地址 OFFSET:取變量/標(biāo)號(hào)的偏移地址 例:VAR DB 12H MOV BX,OFFSET VAR ;取變量VAR的偏移地址 MOV AX,SEG VAR ;取變量VAR的段地址 注意,以下指令的異同: MOV BX, OFFSET VAR LEA BX, VAR OFFSET只能取靜態(tài)的偏移地址; LEA指令即可取靜態(tài)的偏移地址,也可取動(dòng)態(tài)的偏移地址。,取地址運(yùn)算符SEG、OFFSET,4)分析運(yùn)算符: 分析對(duì)MEM(變量或標(biāo)號(hào))的三個(gè)重要的屬性。,TYPE 取變量的類型(1,2,4) LENGTH 取所定義變量的長(zhǎng)度 (即變量中元素的個(gè)數(shù)) SIZE 取所定義存儲(chǔ)區(qū)的字節(jié)數(shù) (=TYPE*LENGTH) 例:VAR DW 20 DUP(?),2 DAT1 DB 5,1 則 TYPE VAR = 2 LENGTH VAR = 20 SIZE VAR = 40 LENGTH、SIZE 僅用于帶DUP的外層有效,取值運(yùn)算符TYPE、LENGTH、SIZE,格式 運(yùn)算符 操作數(shù),SEG OFFSET TYPE,變量名或標(biāo)號(hào) 變量名或標(biāo)號(hào) 標(biāo)號(hào) 或變量名,返回其所在段的段基址 返回其所在段的偏移地址 返回其屬性值NEAR、FAR DB、DW、DD、DQ、DT,變量名 變量名,LENGTH SIZE,1、 2、 4、 8、 10,-1、 -2,元素個(gè)數(shù) 字節(jié)數(shù),SIZE=TYPE*LENGTH,用于帶DUP的外層有效,6)合成運(yùn)算符PTR、THIS,用來指定地址操作數(shù)的類型。 格式: PTR 類型BYTE, WORD, DWORD, NEAR, FAR BYTE、WORD、DWORD 用于描述數(shù)據(jù)存儲(chǔ)單元(變量)地址 NEAR、FAR 用于描述轉(zhuǎn)移、調(diào)用的目的地址,變量:指令中臨時(shí)指定的變量的新屬性 可利用PTR指定地址相同而類型不同的新變量,例:MOV BYTE PTRDI,0 ;字節(jié)類型 MOV WORD PTRDI,0 ;字類型 MOV DI,0B5H ;類型不定 例: STR1 DW ? ;STR1定義為字類型 STR2 EQU BYTE PTR STAR1 MOV AX,STR1 ;合法 MOV AL,STR1 ;非法 MOV AL,BYTE PTR STR1 ;合法 MOV AL,STR2,標(biāo)號(hào):可用PTR建立地址相同而類型不同的新符號(hào)。 可臨時(shí)指定其標(biāo)號(hào)的新屬性。 C1 SEGMENT ASSUME C1:CS JMP NEAR PTR NEXT;超前引用 FNEXT EQU FAR PTR NEXT FFNEXT EQU THIS FAR NEXT:MOV BX,100 C2 SEGMENT C2:CS JMP FNEXT ,符號(hào) equ this 類型 另一符號(hào);放于被指定類型前,6.匯編運(yùn)算符(THIS),格式:THIS 類型 可以像PTR一樣建立一個(gè)指定類型的地址操作數(shù),該操作數(shù)的段地址和偏移地址與下一個(gè)存儲(chǔ)單元地址相同。,例: BUFB EQU THIS BYTE BUFW DW 1234H,5678H . MOV AX,BUFW ;AX=1234H MOV BL,BUFB ;BL=34H,BUFB的偏移地址和BUFW完全相同,但它是字節(jié)類型;而BUFW則是字類型。,P237頁(yè) 運(yùn)算符的優(yōu)先級(jí),4.3 偽操作命令與宏指令,數(shù)據(jù)定義偽指令 符號(hào)定義偽指令 模塊定義偽指令(段) 過程定義偽指令 宏指令 模塊連接 列表偽指令,由匯編程序執(zhí)行的指令,它本身不被匯編成機(jī)器指令。這里僅介紹MASM常用的偽指令。,4.3.1 數(shù)據(jù)定義與存儲(chǔ)器分配偽指令(define),用于定義變量,即內(nèi)存單元或數(shù)據(jù)區(qū)。 數(shù)據(jù)定義偽指令的格式為: 變量名 數(shù)據(jù)定義偽指令 操作數(shù),操作數(shù), DB、DW、DD、DQ、DT 作用:定義變量類型屬性,并可以進(jìn)行初始化 常數(shù)或表達(dá)式 字符串(hello表示其ASC值的) ?(該單元不初始化,預(yù)留出存儲(chǔ)空間) 帶DUP表達(dá)式 n dup(操作數(shù)) 帶$(表示地址計(jì)數(shù)器當(dāng)前值),常數(shù)或表達(dá)式: DATA_B DB 10,5,10H DATA_W DW 100H,-4 DATA_D DD 0FFFBH,注意下面兩個(gè)定義的不同之處: DB AB;41H在低字節(jié) ;42H在高字節(jié) DW AB;42H在低字節(jié), ;41H在高字節(jié),操作數(shù)可以是字符串,例如 STR DB HELLO,操作數(shù)?用來保留存儲(chǔ)空間,但不存入數(shù)據(jù). 例3:ABC DB 0,1,2,3,4,OK,$ RSV DW ?,?,?,?,?,?,?,? 復(fù)制操作符DUP: 重復(fù)的數(shù)據(jù)可以使用復(fù)制操作符DUP,如上面RSV亦可寫成: RSV DW 8 DUP(?),若操作數(shù)中若使用$,則表示的是地址計(jì)數(shù)器的當(dāng)前值。 例: TABLE DB 10 DUP(?) BUFFER DW TABLE,$+3 設(shè)TABLE的偏移地址為0080H,則匯編后如下圖所示: $表示當(dāng)前存儲(chǔ)單元的偏移地址。,BUFFER,0080H,80H,TABLE,008AH 008BH 008CH 008DH,. . .,8FH,00H,00H,0089H,10 Bytes,DATA SEGMENT DAT1 DB 40H DAT10 EQU WORD PTR DAT1 DAT9 EQU THIS WORD DAT2 DW 00H,23H DAT3 DB 2 DUP(20H) DAT4 DB AB DAT5 DW AB DAT6 DW ?,$+3 DAT7 DB 25H*4 A1 EQU 10H DAT8 DB 2 DUP(2 DUP(A1) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA MOV AX,DATA MOV DS,AX MOV BX,SEG DAT2 MOV CX,OFFSET DAT2 XX: MOV DX,TYPE DAT2 MOV AX,TYPE XX MOV AL,LENGTH DAT3 MOV AH,LENGTH DAT8 MOV BL,SIZE DAT8 mov ah,4ch int 21h CODE ENDS END,?H,?H,10H,00H,94H,10H,10H,10H,10H,09H,10H,41H,42H,42H,41H,20H,20H,00H,23H,00H,00H,40H,DAT9,DAT10,D:MASM1DEBUG DEFINED.EXE -D 1254:0000 40 00 00 23 00 20 20 41-42 42 41 00 00 10 00 94 #. ABBA. 1254:0010 10 10 10 10 00 00 00 00-00 00 00 00 00 00 00 00 1254:0020 B8 54 12 8E D8 BB 54 12-B9 01 00 BA 02 00 B8 FF 8TX;T.9:8. 1254:0030 FF B0 02 B4 00 B3 00 B4-4C CD 21 00 00 00 00 00 .LM!. 1254:0040 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 1254:0050 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 1254:0060 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 1254:0070 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 -,AX=0000 BX=0000 CX=0082 DX=0002 SP=0000 BP=0000 SI=0000 DI=0000 DS=1244 ES=1244 SS=1254 CS=1254 IP=0020 NV UP DI PL NZ NA PO NC 1254:0020 B85412 MOV AX,1254 -T AX=1254 BX=0000 CX=0082 DX=0002 SP=0000 BP=0000 SI=0000 DI=0000 DS=1244 ES=1244 SS=1254 CS=1254 IP=0023 NV UP DI PL NZ NA PO NC 1254:0023 8ED8 MOV DS,AX -T AX=1254 BX=0000 CX=0082 DX=0002 SP=0000 BP=0000 SI=0000 DI=0000 DS=1254 ES=1244 SS=1254 CS=1254 IP=0025 NV UP DI PL NZ NA PO NC 1254:0025 BB5412 MOV BX,1254 -T AX=1254 BX=1254 CX=0082 DX=0002 SP=0000 BP=0000 SI=0000 DI=0000 DS=1254 ES=1244 SS=1254 CS=1254 IP=0028 NV UP DI PL NZ NA PO NC 1254:0028 B90100 MOV CX,0001 -T AX=1254 BX=1254 CX=0001 DX=0002 SP=0000 BP=0000 SI=0000 DI=0000 DS=1254 ES=1244 SS=1254 CS=1254 IP=002B NV UP DI PL NZ NA PO NC 1254:002B BA0200 MOV DX,0002 -,AX=1254 BX=1254 CX=0001 DX=0002 SP=0000 BP=0000 SI=0000 DI=0000 DS=1254 ES=1244 SS=1254 CS=1254 IP=002E NV UP DI PL NZ NA PO NC 1254:002E B8FFFF MOV AX,FFFF -T AX=FFFF BX=1254 CX=0001 DX=0002 SP=0000 BP=0000 SI=0000 DI=0000 DS=1254 ES=1244 SS=1254 CS=1254 IP=0031 NV UP DI PL NZ NA PO NC 1254:0031 B002 MOV AL,02 -T AX=FF02 BX=1254 CX=0001 DX=0002 SP=0000 BP=0000 SI=0000 DI=0000 DS=1254 ES=1244 SS=1254 CS=1254 IP=0033 NV UP DI PL NZ NA PO NC 1254:0033 B402 MOV AH,02 -T AX=0202 BX=1254 CX=0001 DX=0002 SP=0000 BP=0000 SI=0000 DI=0000 DS=1254 ES=1244 SS=1254 CS=1254 IP=0035 NV UP DI PL NZ NA PO NC 1254:0035 B302 MOV BL,02 -T AX=0202 BX=1202 CX=0001 DX=0002 SP=0000 BP=0000 SI=0000 DI=0000 DS=1254 ES=1244 SS=1254 CS=1254 IP=0037 NV UP DI PL NZ NA PO NC 1254:0037 B44C MOV AH,4C -,4.3.2 符號(hào)定義偽指令,用EQU定義的符號(hào)未清除前,不能重新定義。清除EQU定義可用PURGE偽指令。 用”=”定義的符號(hào)可在任何時(shí)候進(jìn)行重定義。 二者均不占用存儲(chǔ)空間,僅是給符號(hào)賦值,格式: 符號(hào)名 EQU或= 表達(dá)式,把一個(gè)表達(dá)式用一個(gè)符號(hào)表示,以后凡出現(xiàn)該表達(dá)式的地方都可用這個(gè)符號(hào)表示。類似于C語(yǔ)言中的#define。 符號(hào)定義偽指令有兩種:EQU,=,可以為數(shù)值和地址及其表達(dá)式,變量,標(biāo)號(hào)、指令助記符,例:FIVE EQU 5 COUNT EQU CX TEN EQU 10 DIST = BYTE PTRSI+BP GOTO = JMP MOV AX, TEN MOV CX, COUNT ADD DIST, FIVE DIST = WORD PTRSI+BP+1 ADD DIST, AX GOTO LABEL,定義,引用,4.3.3 程序模塊定義偽指令,當(dāng)功能復(fù)雜、大型的程序設(shè)計(jì)任務(wù),先分解成多個(gè)相對(duì)獨(dú)立的小任務(wù),單獨(dú)編寫 、調(diào)試、匯編。,格式: NAME module_name,1、NAME可省 2、NAME省后文件模塊名? (1)若有TITLE test ,默認(rèn)test前6字符 (2)都無,為源文件名(x.asm)為模塊名,TITLE test,END 表達(dá)式,最多6個(gè)字符,以字母開頭,可指定每頁(yè)的打印標(biāo)題,60多字符(列表文件上),1、可不加表達(dá)式,默認(rèn)第一條成機(jī)器碼指令的地址 2、每個(gè)模塊僅有一個(gè)END 主模塊:END 表達(dá)式,為第一條代碼的標(biāo)號(hào)。 子模塊:不加表達(dá)式,匯編結(jié)束偽指令,END后不形成機(jī)器碼,一、模塊定義偽指令,二、段定義偽指令,匯編語(yǔ)言源程序是按段來組織程序和數(shù)據(jù)的。 匯編語(yǔ)言程序中的段稱為邏輯段。 匯編連接后被映射到物理段中。 三類段:代碼(程序)、數(shù)據(jù)、堆棧 段定義偽指令:SEGMENT、ENDS、ASSUME、ORG 定義一個(gè)段的基本格式: 段名 SEGMENT 定位類型組合方式類別 段名 ENDS,這兩個(gè)偽指令總是成對(duì)出現(xiàn),二者前面的段名應(yīng)一致。SEGMENT說明了一個(gè)段的開始,ENDS說明了一個(gè)段的結(jié)束。 對(duì)數(shù)據(jù)段和堆棧段,段中的語(yǔ)句一般是變量定義。對(duì)代碼段則是指令語(yǔ)句。 如: data SEGMENT data ENDS,(一)SEGMENT和ENDS偽指令,SEGMENT語(yǔ)句后可以帶有可選參數(shù),用以規(guī)定邏輯段的其他一些屬性。,1) 定位類型 說明如何確定邏輯段的邊界。有四種: PARA(Paragraph): 邏輯段從一個(gè)節(jié) (16個(gè)字節(jié)) 的邊界開始。即段的起始地址應(yīng)能被16整除, 或這說段起始物理地址應(yīng)為0H。默認(rèn)類型 BYTE : 邏輯段從字節(jié)邊界開始,即段可以從任何地址開始。 WORD : 邏輯段從字邊界開始。即段的起始地址必須是偶數(shù)。 PAGE : 邏輯段從頁(yè)邊界開始。256字節(jié)稱為一頁(yè),故段的起始物理地址應(yīng)為00H。,2) 組合類型 說明不同模塊中同名段的組合方式。 PUBLIC : 所有此類型的同名段組合成一個(gè)邏輯段,公用一個(gè)段地址,運(yùn)行時(shí)裝入同一個(gè)物理段中。 COMMON : 所有此類型的同名段具有相同的起始地址(覆蓋),共享相同的存儲(chǔ)區(qū)域。 AT : 按絕對(duì)地址定位,段地址就是表達(dá)式的值。 STACK : 專用于說明堆棧段,組合方式同PUBLIC,3) 類別 用單引號(hào)括起來的字符串。所有同類別的段被安排在連續(xù)的存儲(chǔ)區(qū)域中。 如:在模塊1中有段定義: seg1 SEGMENT PARA STACK stack seg1 ENDS 在模塊2中有段定義: seg2 SEGMENT PARA STACK stack seg2 ENDS 則連接時(shí)這兩個(gè)段被安排在一起。,(二)、ASSUME偽指令,功能:在代碼段中,說明段和段寄存器的關(guān)系,并未將段寄存器賦值。 格式: ASSUME 段寄存器:段名,段寄存器:段名 例: ASSUME CS:code, DS:data, ES:data :程序段比為CS,堆棧段必須為SS 該語(yǔ)句一般放于代碼段的最前面。 僅是說明性語(yǔ)句,除CS外(由系統(tǒng)賦值),各段寄存器均需在程序中賦值 取消語(yǔ)句 ASSUME NOTHING,段寄存器的填入:,1、代碼段段寄存器CS及指令指針I(yè)P的填入 當(dāng)匯編程序掃描到程序結(jié)束偽指令END符號(hào)地址時(shí), 系統(tǒng)自動(dòng)將當(dāng)前代碼段基址CS 同時(shí)將END后面的符號(hào)地址的偏移地址IP, (若無符號(hào)地址,將第一條可執(zhí)行性語(yǔ)句的偏移地址IP),2、數(shù)據(jù)段段寄存器DS及擴(kuò)展數(shù)據(jù)段段寄存器ES的填入 由指令填入 MOV AX,段名 MOV DS,AX MOV AX,段名 MOV ES,AX,3、堆棧段段寄存器SS及堆棧指針SP的填入 系統(tǒng)自動(dòng)填入 當(dāng)定義段的組合類型為STACK時(shí)。 即STACK SEGMENT STACK ;將相同名連接在一起形成一個(gè)大的堆棧段 DW 200 DUP(?) STACK ENDS 系統(tǒng)自動(dòng)將此段段基址SS 段長(zhǎng)度SP 用指令填入 當(dāng)定義段的組合類型缺省(非STACK) 代碼段中用MOV指令來完成,S_SEG SEGMENT STA DB 200 DUP(?) S_SEG ENDS C_SEG SEGMENT ASSUME CS:C_SEG,SS:S_SEG START:MOV AX,S_SEG MOV SS,AX MOV SP,SIZE STA ;或mov sp,length sta CODE ENDS,S_SEG SEGMENT STA DB 200 DUP(?) top equ size sta ;或 top equ length sta S_SEG ENDS C_SEG SEGMENT ASSUME CS:C_SEG,SS:S_SEG START:MOV AX,S_SEG MOV SS,AX MOV SP,TOP CODE ENDS,ORG規(guī)定了段內(nèi)的指令或數(shù)據(jù)存放的開始地址(偏移地址的初值),其格式為: ORG 表達(dá)式的值即為開始地址,從此地址起連續(xù)存放程序或數(shù)據(jù)。 例: ABC SEGMENT ORG 100H begin: ABC ENDS,(三)、ORG偽指令,指令從100H開始存放,4.3.4 過程定義偽指令PROC、ENDP,過程就是子程序。一個(gè)過程可以被其它程序所調(diào)用(用CALL指令),過程的最后一條指令一般是返回指令(RET) 過程定義偽指令的格式為 PROC 類型 RET ENDP 注意:PROC和ENDP必須成對(duì)出現(xiàn)。,過程的類型有兩種: NEAR(默認(rèn)類型)表示段內(nèi)調(diào)用 FAR表示段間調(diào)用 調(diào)用一個(gè)過程的格式為: CALL ,4.3.5 宏定義偽指令,如果需要多次使用同一個(gè)程序段,可以將這個(gè)程序段定義為一個(gè)”宏指令”,然后在需要時(shí),可簡(jiǎn)單地用宏指令名來代替這個(gè)程序段。,指令的格式為: MACRO 形參表 ENDM,例:兩個(gè)數(shù)之和的宏定義和宏調(diào)用。 宏定義為: DADD MACRO X,Y,Z MOV AX,X ADD AX,Y MOV Z,AX ENDM,X、Y、Z是形式參數(shù)。調(diào)用宏DADD時(shí)可寫為: DADD DATA1,DATA2,SUM DATA1,DATA2,SUM是實(shí)際參數(shù),由它們替換定義中的X、Y、Z。,宏調(diào)用與過程(子程序)調(diào)用都是一次定義,多次調(diào)用。它們之間的差別是: 執(zhí)行形式:宏命令偽指令由宏匯編程序在匯編過理中進(jìn)行處理,而CALL、RET則是由CPU執(zhí)行的指令。 匯編結(jié)果:宏命令偽指令匯編后被展開。 執(zhí)行速度:宏命令執(zhí)行速度較快(因無調(diào)用轉(zhuǎn)移) 占用內(nèi)存:宏指令簡(jiǎn)化了源程序,但不能簡(jiǎn)化目標(biāo)程序,并不節(jié)省內(nèi)存單元。使用過程可以節(jié)省代碼占用的內(nèi)存空間。,宏展開:匯編程序會(huì)把宏調(diào)用按宏定義展開。 例如:宏定義為: Display MACRO string LEA DX,string MOV AH,9 INT 21H ENDM 程序中宏調(diào)用: DISPLAY ERROR_MESSAGE DISPLAY EXIT_MESSAGE 匯編后的結(jié)果:(帶有+號(hào)的指令為宏展開后的結(jié)果) + LEA DX,ERROR_MESSAGE + MOV AH,9 + INT 21H + LEA DX,EXIT_MESSAGE + MOV AH,9 + INT 21H ,4.3.6 模塊連接偽指令,用于模塊之間的共享信息。 即A模塊中的變量和標(biāo)號(hào)被B模塊使用時(shí)必須加以說明,一、PUBLIC;本模塊說明,格式:PUBLIC 符號(hào)名1 ,符號(hào)名2,功能:公共引用,說明本模塊定義,其它模塊引用的共享信息。,二、EXTRN;引用外模塊的說明(external),格式:EXTRN 符號(hào)名:類型,符號(hào)名:類型,功能:其他模塊定義的,本模塊引用。,NAME A EXTRN VAR2:WORD,LAB2:FAR PUBLIC VAR1,LAB1,VAR4 DATA1 SEGMENT VAR1 DB 12H,34H VAR3 DW 10 DUP(?) VAR4 DW 10 DUP(?) DATA1 ENDS,NAME B EXTRN VAR1:BYTE,VAR4:WORD PUBLIC VAR2 DATA2 SEGMENT VAR2 DW 0 VAR5 DB 5 DUP(0) DATA2 ENDS,NAME C EXTRN LAB1:FAR,VAR5:BYTE PUBLIC LAB2,存儲(chǔ)模式?jīng)Q定了一個(gè)程序的規(guī)模,也確定了子程序調(diào)用、指令轉(zhuǎn)移和數(shù)據(jù)訪問等的缺省屬性 當(dāng)使用簡(jiǎn)化段定義的源程序格式時(shí),必須有存儲(chǔ)模式.MODEL語(yǔ)句,且位于所有簡(jiǎn)化段定義語(yǔ)句之前。其格式為: .MODEL 存儲(chǔ)模式 .MODEL語(yǔ)句確定了程序采用的存儲(chǔ)模式,MASM有7種可以選擇,4.3.7 存儲(chǔ)模式(Memory Model),2. 邏輯段的簡(jiǎn)化定義,.STACK 大小 ;堆棧段定義偽指令.STACK創(chuàng)建一個(gè)堆棧段,段名是:STACK??蛇x的“大小”參數(shù)指定堆棧段所占存儲(chǔ)區(qū)的字節(jié)數(shù),默認(rèn)是1KB(1024400H字節(jié)) .DATA ;數(shù)據(jù)段定義偽指令.DATA創(chuàng)建一個(gè)數(shù)據(jù)段,段名是:_DATA。數(shù)據(jù)段名可用DATA預(yù)定義標(biāo)識(shí)符表示 .CODE 段名 ;代碼段定義偽指令.CODE創(chuàng)建一個(gè)代碼段,可選的“段名”參數(shù)指定該代碼段的段名。如果沒有給出段名,則采用默認(rèn)段名,一個(gè)段的開始自動(dòng)結(jié)束前面的一個(gè)段 簡(jiǎn)化段定義偽指令之前,需有存儲(chǔ)模式語(yǔ)句,3. 程序開始,為了指明程序開始執(zhí)行的位置,需要使用一個(gè)標(biāo)號(hào)(例題中采用了start標(biāo)識(shí)符) 連接程序會(huì)根據(jù)程序起始點(diǎn)正確地設(shè)置CS和IP值,根據(jù)程序大小和堆棧段大小設(shè)置SS和SP值 連接程序沒有設(shè)置DS和ES值。程序如果使用數(shù)據(jù)段或附加段,必須明確給DS或ES賦值 大多數(shù)程序需要數(shù)據(jù)段,程序的執(zhí)行開始應(yīng)是: start: mov ax,data ;data表示數(shù)據(jù)段的段地址 mov ds,ax ;設(shè)置DS,4. 程序終止,應(yīng)用程序執(zhí)行結(jié)束,應(yīng)該將控制權(quán)交還操作系統(tǒng) 匯編語(yǔ)言程序設(shè)計(jì)中,有多種返回DOS的方法,但一般利用DOS功能調(diào)用的4CH子功能實(shí)現(xiàn),它需要的入口參數(shù)是AL返回?cái)?shù)碼(通常用0表示程序沒有錯(cuò)誤) 于是,應(yīng)用程序的終止代碼就是: mov ax,4c00h int 21h,5. 匯編結(jié)束,匯編結(jié)束表示匯編程序到此結(jié)束將源程序翻譯成目標(biāo)模塊代碼的過程 源程序的最后必須有一條END偽指令 END 標(biāo)號(hào) 可選的“標(biāo)號(hào)”參數(shù)指定程序開始執(zhí)行點(diǎn),連接程序據(jù)此設(shè)置CS和IP值(例題中采用了start標(biāo)識(shí)符),不要糊涂 程序終止和匯編結(jié)束是兩碼事,第一個(gè)源程序文件wjl301.asm,;wjl301.asm .model small .stack .data string db Hello, Assembly !,0dh,0ah,$ .code start: mov ax,data mov ds,ax mov dx,offset string mov ah,9 int 21h mov ax,4c00h int 21h end start,簡(jiǎn)化段定義的源程序格式,.model small ;小型模式存儲(chǔ)模式 .stack ; 1KB空間堆棧段 .data ;數(shù)據(jù)段 ;數(shù)據(jù)定義 .code ;代碼段 start: mov ax,data ;起始點(diǎn) mov ds,ax ;設(shè)置DS ;程序代碼 mov ax,4c00h int 21h ;結(jié)束點(diǎn),返回DOS ;子程序代碼 end start ;匯編結(jié)束,完整段定義格式,完整段定義利用SEGMENT和ENDS一對(duì)偽指令定義邏輯段 同時(shí)需要配合ASSUME偽指令指明邏輯段是代碼段、堆棧段、數(shù)據(jù)段還是附加段 完整段定義的優(yōu)勢(shì)是可以指明邏輯段的定位、組合、類別等屬性;而簡(jiǎn)化段定義只能采用系統(tǒng)默認(rèn)的屬性 完整段定義和簡(jiǎn)化段定義的實(shí)質(zhì)是一致的,2.匯編 匯編就是用宏匯編程序MASM.EXE把匯編語(yǔ)言源程序翻譯(匯編)成機(jī)器語(yǔ)言的目標(biāo)程序。宏匯編程序主要有以下功能: 檢查源程序中語(yǔ)法錯(cuò)誤,給出錯(cuò)誤信息; 展開宏指令; 生目標(biāo)程序(.OBJ),列表文件(.LST)和交叉引用文件(.CRF)。,4.3.8 匯編語(yǔ)言上機(jī)調(diào)試,1.編輯 調(diào)用編輯程序EDIT.EXE,WS.EXE等,用鍵盤敲入源程序,退出編輯系統(tǒng)時(shí),保存編輯完成的文件,且擴(kuò)展名為.ASM。,接著屏幕上顯示:,宏匯編程序詢問匯編產(chǎn)生的目標(biāo)程序文件(目標(biāo)程序文件是一個(gè)純二進(jìn)制代碼文件,不能直接在屏幕上顯示觀察)的文件名是否為方括號(hào)中的默認(rèn)值(即目標(biāo)程序與源程序同名)。若是,直接按一回車鍵,否則需自己輸入另一文件名。在回答完這一詢問后,宏匯編程序接著依次詢問產(chǎn)生列表文件(列表文件.LST是一個(gè)很有用的文件,文件中包含了源程序中各語(yǔ)句及其對(duì)應(yīng)的目標(biāo)代碼。給出了源程序中各語(yǔ)句所屬段內(nèi)的偏移量,并且把源程序中所用的標(biāo)號(hào)、變量和符號(hào),列出它們的名字、類型和值,便于查閱)和交叉引用文件(交叉引用文件中給出了源程序中定義的符號(hào)如標(biāo)號(hào)、變量等以及程序中引用這些符號(hào)的情況,且是按字母順序排列的。若要查看這個(gè)符號(hào)表,必須使用CREF軟件,它根據(jù).CRF文件建立一個(gè)擴(kuò)展名為.REF的文件。然后再顯示.REF文件的內(nèi)容就可以看到這個(gè)符號(hào)表)的文件名,屏幕上顯示:,這兩個(gè)文件是否建立由操作人員確定:若要建立其中一個(gè)或兩個(gè),操作人員便可輸入所需建立的文件名,否則直接送入回車鍵。待完成上述人機(jī)對(duì)話后,宏匯編程序便對(duì)源程序進(jìn)行掃描,檢查源程序中各語(yǔ)句是否有語(yǔ)法錯(cuò)誤,同時(shí)把各語(yǔ)句匯編成對(duì)應(yīng)的機(jī)器目標(biāo)代碼。在匯編過程中,若發(fā)現(xiàn)源程序有語(yǔ)法錯(cuò)誤,便隨時(shí)給出出錯(cuò)信息。屏幕上顯示:,如果警告錯(cuò)誤和嚴(yán)重錯(cuò)誤總數(shù)都等于零,那么這次源程序的匯編獲得通過,可以進(jìn)行連接。否則,返回編輯程序,修改源程序,然后再次進(jìn)行匯編,直到源程序匯編正確無誤。 如果匯編時(shí),無須產(chǎn)生列表文件和交叉引用文件,則在啟動(dòng)宏匯編程序時(shí)可用分號(hào)結(jié)尾,比如: C:MASM TEST; 如果需要后面的列表文件和交叉引用文件,且它們的文件名與源文件名相同,這時(shí)啟動(dòng)宏匯編程序時(shí),可用逗號(hào)指明,比如: C:MASM TEST,;,3.連接 源程序經(jīng)過匯編后產(chǎn)生的目標(biāo)程序,必須經(jīng)過連接程序LINK.EXE連接后才能運(yùn)行。 連接程序把一個(gè)或多個(gè)獨(dú)立的目標(biāo)程序模塊連接裝配成一個(gè)可重定位的可執(zhí)行文件(擴(kuò)展名為.EXE)。連接程序LINK除產(chǎn)生一個(gè)可執(zhí)行文件外,還可產(chǎn)生一個(gè)內(nèi)存映象文件(擴(kuò)展名為.MAP)。LINK連接的一定是擴(kuò)展名為.OBJ的目標(biāo)程序。 在操作系統(tǒng)狀態(tài)下,直接啟動(dòng)連接程序LINK.EXE。 例如: C:LINK TEST 接著屏幕上顯示:,連接程序詢問連接時(shí)產(chǎn)生的可執(zhí)行文件名是否用方括號(hào)中的默認(rèn)值(即可執(zhí)行文件與目標(biāo)程序文件同名)。若是,可直接按一回車鍵,否則需要重新輸入一文件名。接著依次詢問,屏幕上顯示:,其中MAP文件(MAP文件列出各段的起點(diǎn),終點(diǎn)及長(zhǎng)度。)是否建立,由操作人員確定。若要,則輸入一文件名,否則直接送一回車鍵。后一個(gè)是詢問在連接時(shí)是否要用庫(kù)文件。對(duì)于來自宏匯編語(yǔ)言程序的目標(biāo)程序文件,通常是直接送一回車鍵。 與啟動(dòng)宏匯編程序一樣,可以在啟動(dòng)連接程序時(shí),用分號(hào)結(jié)束后續(xù)詢問。如: C:LINK TEST; 若要產(chǎn)生MAP文件,且使用目標(biāo)程序文件名,可用一逗號(hào)表示。 C:LINK TEST,;,若需要連接多模塊的目標(biāo)程序時(shí),可用“+”把它們連接起來。例如連接三個(gè)目標(biāo)程序文件P1.OBJ、P2.OBJ、P3.OBJ,其操作如下: C:LINK P1+P2+P3; 這樣產(chǎn)生的一個(gè)可執(zhí)行文件是約定取用第一個(gè)目標(biāo)程序文件名,當(dāng)然操作人員也可重新用另外的文件名。,4.調(diào)試運(yùn)行 在建立好可執(zhí)行文件后,就可以直接從DOS執(zhí)行程序,如下所示: C:TEST.EXE C: 程序運(yùn)行結(jié)束后返回DOS。如果用戶程序已直接把結(jié)果在終端上顯示出來,那么程序已經(jīng)運(yùn)行結(jié)束,結(jié)果也已經(jīng)得到了。,生成 .COM文件 .COM文件也是一種可執(zhí)行文件,由程序本身的二進(jìn)制代碼組成,它沒有 .EXE文件所具有的包括有關(guān)文件信息的標(biāo)題區(qū)(HEADER),因此它占有的存儲(chǔ)空間比 .EXE文件要小。.COM文件不允許分段,它所占有的空間不允許超過64 KB,因而只能用來編制較小的程序。由于其小而簡(jiǎn)單,裝入速度比 .EXE文件要快。 使用 .COM文件時(shí),程序不分段,其入口點(diǎn)(開始運(yùn)行的起始點(diǎn))必須是100H(其前的256個(gè)字節(jié)為程序段前綴所在地),且不必設(shè)置堆棧段。在程序裝入時(shí),由系統(tǒng)自動(dòng)把SP建立在該段之末。對(duì)于所有的過程則應(yīng)定義為NEAR。,用戶在建立源文件以后,同樣經(jīng)過匯編、連接生成 .EXE文件,然后可以通過DOS操作系統(tǒng)下的EXE2BIN程序來建立 .COM文件,操作方法如下: C:EXE2BIN FILENAME FILENAME.COM 請(qǐng)讀者注意,上行中的第一個(gè)FILENAME給出了已形成的 .EXE文件的文件名,但不必給出文件擴(kuò)展名。第二個(gè)FILENAME即為所要求的 .COM文件的文件名,它必須帶有文件擴(kuò)展名 .COM,這樣就形成了所要的 .COM文件。在DOS系統(tǒng)下,可直接在機(jī)器上鍵入文件名以執(zhí)行程序。如果第二個(gè)FILENAME后不跟擴(kuò)展名,則將形成 .BIN文件,在DOS系統(tǒng)下運(yùn)行該程序時(shí),必須先用RENAME命令把它改名為 .COM文件才能直接運(yùn)行。 此外,.COM文件還可以直接在調(diào)試程序DEBUG中用A或E命令建立,對(duì)于一些短小的程序,這也是一種相當(dāng)方便的方法。,1.DEBUG程序的調(diào)用 在DOS的提示符下,可鍵入命令: C:DEBUG D:PATHFILENAME.EXEPARM1PARM2 其中,文件名是被調(diào)試文件的名字。如用戶鍵入文件,則DEBUG將指定的文件裝入存儲(chǔ)器中,用戶可對(duì)其進(jìn)行調(diào)試。 如果未鍵入文件名,則用戶可以用當(dāng)前存儲(chǔ)器的內(nèi)容工作,或者用DEBUG命令N和L把需要的文件裝入存儲(chǔ)器后再進(jìn)行調(diào)試。 命令中的D指定指定驅(qū)動(dòng)器PATH為路徑,PARM1和PARM2則為運(yùn)行被調(diào)試文件時(shí)所需要的命令參數(shù)。,4.3.9 DEBUG主要命令 DEBUG是為匯編語(yǔ)言設(shè)計(jì)的一種高度工具,它通過單步、設(shè)置斷點(diǎn)等方式為匯編語(yǔ)言程序員提供了非常有效的調(diào)試手段。,2.DEBUG的主要命令 (1)顯示存儲(chǔ)單元的命令D(DUMP),格式為: _Daddress或 _Drange 例如,D命令的使用情況如下:,(2)修改存儲(chǔ)單元內(nèi)容的命令有兩種。 輸入命令E(ENTER),有兩種格式如下: 第一種格式可以用給定的內(nèi)容表來替代指定范圍的存儲(chǔ)單元內(nèi)容。命令格式為: -E address list 例如,-E DS:100 F3XYZ8D 第二種格式則是采用逐個(gè)單元相繼修改的方法。命令格式為: -E address,(3)檢查和修改寄存器內(nèi)容的命令R(register) 它有三種格式 顯示CPU內(nèi)所有寄存器內(nèi)容和標(biāo)志位狀態(tài),其格式為: -R 顯示和修改某個(gè)寄存器內(nèi)容,其格式為: -R register name 顯示和修改標(biāo)志位狀態(tài),命令格式為: -RF,(4)運(yùn)行命令G,其格式為: -G=address1address2address3 其中,地址1指定了運(yùn)行的起始地址,如不指定則從當(dāng)前的CS:IP開始運(yùn)行。后面的地址均為斷點(diǎn)地址,當(dāng)指令執(zhí)行到斷點(diǎn)時(shí),就停止執(zhí)行并顯示當(dāng)前所有寄存器及標(biāo)志位的內(nèi)容,和下一條將要執(zhí)行的指令。 (5)跟蹤命令T(Trace),有兩種格式: 逐條指令跟蹤 -T=address 從指定地址起執(zhí)行一條指令后停下來,顯示所有寄存器內(nèi)容及標(biāo)志位的值。如未指定地址則從當(dāng)前的CS:IP開始執(zhí)行。 多條指令跟蹤 -T=addressvalue 從指定地址起執(zhí)行n條指令后停下來,n由value指定。,(6)匯編命令A(yù)(Assemble),其格式為: -Aaddress 該命令允許鍵入?yún)R編語(yǔ)言語(yǔ)句,并能把它們匯編成機(jī)器代碼,相繼地存放在從指定地址開始的存儲(chǔ)區(qū)中。必須注意:DEBUG把鍵入的數(shù)字均看成十六進(jìn)制數(shù),所以如要鍵入十進(jìn)制數(shù),則其后應(yīng)加以說明,如120D。 (7)反匯編命令U(

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論