lec05語言中的操作數(shù)_第1頁
lec05語言中的操作數(shù)_第2頁
lec05語言中的操作數(shù)_第3頁
lec05語言中的操作數(shù)_第4頁
lec05語言中的操作數(shù)_第5頁
已閱讀5頁,還剩25頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第 05 講講 匯編語言中的操作數(shù)匯編語言中的操作數(shù)n常量常量:作為硬指令的立即數(shù)或偽指令的參數(shù):作為硬指令的立即數(shù)或偽指令的參數(shù)n變量:變量:主要作為存儲(chǔ)器操作數(shù)主要作為存儲(chǔ)器操作數(shù) MOV 指令指令MOV指令的功能指令的功能一、一、 常量常量常量表示一個(gè)固定的數(shù)值,它又分成多種形式常量表示一個(gè)固定的數(shù)值,它又分成多種形式n常數(shù)n字符串n符號(hào)常量1.數(shù)值表達(dá)式(1)常數(shù))常數(shù)n指由指由10、16、2和和8進(jìn)制形式表達(dá)的數(shù)值,各種進(jìn)制進(jìn)制形式表達(dá)的數(shù)值,各種進(jìn)制的數(shù)據(jù)以后綴字母區(qū)分,默認(rèn)不加后綴字母的是十進(jìn)的數(shù)據(jù)以后綴字母區(qū)分,默認(rèn)不加后綴字母的是十進(jìn)制數(shù)制數(shù)十進(jìn)制十進(jìn)制由由0 9數(shù)字組成,

2、以字母數(shù)字組成,以字母D(d)結(jié)尾)結(jié)尾(缺省情況可以省略)(缺省情況可以省略)100,255D十六進(jìn)制十六進(jìn)制由由0 9、A F數(shù)字組成,以字母數(shù)字組成,以字母H(h)結(jié)尾,以字母開頭的常數(shù)需要加)結(jié)尾,以字母開頭的常數(shù)需要加一個(gè)前導(dǎo)一個(gè)前導(dǎo)064H,0FFH,0B800H二進(jìn)制二進(jìn)制由由0和和1兩個(gè)數(shù)字組成,以字母兩個(gè)數(shù)字組成,以字母B(b)結(jié)尾結(jié)尾01100100B(2) 字符串字符串n字符串常量是用字符串常量是用單引號(hào)單引號(hào)或或雙引號(hào)雙引號(hào)括起來的單個(gè)字括起來的單個(gè)字符或多個(gè)字符符或多個(gè)字符n其數(shù)值是每個(gè)字符對(duì)應(yīng)的其數(shù)值是每個(gè)字符對(duì)應(yīng)的ASCII碼值碼值n例如:例如:d(等于(等于64

3、H)AB(等于(等于4142H)Hello, Assembly !(3) 符號(hào)常量符號(hào)常量n符號(hào)常量使用標(biāo)識(shí)符表達(dá)一個(gè)數(shù)值符號(hào)常量使用標(biāo)識(shí)符表達(dá)一個(gè)數(shù)值n符號(hào)常量定義偽指令有符號(hào)常量定義偽指令有“EQU”和和“”兩種兩種:符號(hào)名符號(hào)名 EQU 數(shù)值表達(dá)式數(shù)值表達(dá)式符號(hào)名符號(hào)名 數(shù)值表達(dá)式數(shù)值表達(dá)式nEQU用于數(shù)值等價(jià)時(shí)用于數(shù)值等價(jià)時(shí)不能重復(fù)定義不能重復(fù)定義符號(hào)名符號(hào)名,但,但“”允許有重復(fù)賦值允許有重復(fù)賦值。例如:。例如:X= 7;等效于:;等效于:X equ 7X= X+5 ;“X EQU X+5”是錯(cuò)誤的是錯(cuò)誤的匯編時(shí),對(duì)匯編時(shí),對(duì)EQU定義的符號(hào)名用對(duì)應(yīng)的表達(dá)式進(jìn)行定義的符號(hào)名用對(duì)應(yīng)的表

4、達(dá)式進(jìn)行“替換替換”。例如:例如:NUMEQU 215 MOD 15ERR_MSGEQU“Data Override ”MESSAGEDBERR_MSG;等價(jià)于;等價(jià)于MESSAGE DB “Data Override ”MOV CX, NUM+1;等價(jià)于;等價(jià)于MOVCX, 215 MOD 15+1(4) 數(shù)值表達(dá)式數(shù)值表達(dá)式n數(shù)值表達(dá)式一般是指由數(shù)值表達(dá)式一般是指由運(yùn)算符運(yùn)算符連接的連接的各種常量各種常量所構(gòu)成所構(gòu)成的表達(dá)式的表達(dá)式n匯編程序匯編程序在匯編過程中計(jì)算表達(dá)式在匯編過程中計(jì)算表達(dá)式,最終得到一個(gè)確,最終得到一個(gè)確定的數(shù)值,所以也是常量定的數(shù)值,所以也是常量n表達(dá)式的數(shù)值在程序運(yùn)

5、行前的匯編階段計(jì)算,所以表達(dá)式的數(shù)值在程序運(yùn)行前的匯編階段計(jì)算,所以組組成表達(dá)式的各部分必須在匯編時(shí)就能確定成表達(dá)式的各部分必須在匯編時(shí)就能確定n匯編語言支持多種運(yùn)算符匯編語言支持多種運(yùn)算符q例如:例如:mov ax,3*4+5;等價(jià)于:;等價(jià)于:mov ax,17構(gòu)成數(shù)值表達(dá)式可使用以下幾類運(yùn)算符:構(gòu)成數(shù)值表達(dá)式可使用以下幾類運(yùn)算符:l 算術(shù)運(yùn)算符算術(shù)運(yùn)算符 (+,-,*,/,mod)l 邏輯運(yùn)算符邏輯運(yùn)算符 (shl, shr, and, or, xor, not)l 關(guān)系運(yùn)算符關(guān)系運(yùn)算符 (gt, ge, eq, le, lt, ne)l 地址運(yùn)算符地址運(yùn)算符 (seg, offset)

6、l 類型運(yùn)算符類型運(yùn)算符 (type, length, size)n【例例 2 5】數(shù)值表達(dá)式及其應(yīng)用數(shù)值表達(dá)式及其應(yīng)用n;匯編語言指令匯編語言指令 nMOV DH, 01100100B SHR 2nMOV BL, 8CH AND 73HnMOV AH, 8CH OR 73HnMOV AX, 10H GT 16nMOV BL, 6 EQ 0110BnMOV BX, 32+(13/6)MOD 3);匯編后形成的指令匯編后形成的指令;MOV DH,19H;MOV BL,0 ;MOV AH,0FFH;MOV AX,0 ;MOV BL,0FFH ;MOV BX,0022HMOV AX, BX+2需要把

7、需要把BX的值與常數(shù)的值與常數(shù)2相加并存入相加并存入AX的操作只能在的操作只能在程序執(zhí)行階段由以下兩條指令完成:程序執(zhí)行階段由以下兩條指令完成:MOV AX, BX ;BX寄存器值存入寄存器值存入AX寄存器寄存器ADDAX, 2 ;AX寄存器的值加寄存器的值加2,結(jié)果存,結(jié)果存AX 不良用法不良用法二、二、 變量變量 n變量變量實(shí)質(zhì)上是指內(nèi)存單元的數(shù)據(jù),雖然內(nèi)存單元地址實(shí)質(zhì)上是指內(nèi)存單元的數(shù)據(jù),雖然內(nèi)存單元地址不變,但其中存放的數(shù)據(jù)可以改變不變,但其中存放的數(shù)據(jù)可以改變n變量需要變量需要事先定義才能使用事先定義才能使用n變量定義偽指令變量定義偽指令為變量申請為變量申請以固定長度為單位以固定長度

8、為單位的存儲(chǔ)的存儲(chǔ)空間空間,并可以同時(shí)將相應(yīng)的存儲(chǔ)單元初始化,并可以同時(shí)將相應(yīng)的存儲(chǔ)單元初始化n定義后的變量可以利用定義后的變量可以利用變量名變量名等方法引用其中的數(shù)據(jù)等方法引用其中的數(shù)據(jù),即變量的數(shù)值,即變量的數(shù)值(1) 變量的定義變量的定義 n變量定義的匯編語言格式為:變量定義的匯編語言格式為:變量名變量名 偽指令偽指令 初值表初值表q變量名變量名為用戶自定義標(biāo)識(shí)符,表示初值表首元素的邏輯地址為用戶自定義標(biāo)識(shí)符,表示初值表首元素的邏輯地址,常稱為,常稱為符號(hào)地址符號(hào)地址。q初值表初值表是用逗號(hào)分隔的參數(shù)是用逗號(hào)分隔的參數(shù),主要由常量或主要由常量或“?”組成。其中組成。其中“?”表示未賦初值

9、表示未賦初值n多個(gè)存儲(chǔ)單元如果初值相同,可以用復(fù)制操作符(重多個(gè)存儲(chǔ)單元如果初值相同,可以用復(fù)制操作符(重復(fù)定義符)復(fù)定義符)DUP進(jìn)行定義:進(jìn)行定義:重復(fù)次數(shù)重復(fù)次數(shù) DUP(重復(fù)參數(shù)重復(fù)參數(shù))變量定義偽指令變量定義偽指令 DB(Define Byte):每個(gè)數(shù)據(jù)占用一個(gè)字節(jié)():每個(gè)數(shù)據(jù)占用一個(gè)字節(jié)(8b) DW(Define Word):每個(gè)數(shù)據(jù)占用一個(gè)字():每個(gè)數(shù)據(jù)占用一個(gè)字(16b) DD(Define Double Word):每個(gè)數(shù)據(jù)占用一個(gè)雙字):每個(gè)數(shù)據(jù)占用一個(gè)雙字(32b) DQ(Define QuartWord):每個(gè)數(shù)據(jù)占用):每個(gè)數(shù)據(jù)占用8個(gè)字節(jié)個(gè)字節(jié)(64b) D

10、T(Define Ten Byte ):每個(gè)數(shù)據(jù)占用):每個(gè)數(shù)據(jù)占用10個(gè)字節(jié)(個(gè)字節(jié)(80b)【例【例 2 3】 變量定義舉例變量定義舉例DSEGSEGMENTBVAR DB 1,-2,AB,3 DUP(a),?;字節(jié)變量字節(jié)變量, 8項(xiàng)項(xiàng)WVAR DW 1,-2,AB,3 DUP(a),?;字變量,字變量,7項(xiàng)項(xiàng)DVAR DD 1,-2,AB,3 DUP(a),?;雙字變量,雙字變量,7項(xiàng)項(xiàng)VAR1 DW WVAR, DVAR, DVAR-WVAR, VAR1-DVAR;字變量,字變量,4項(xiàng)項(xiàng)VAR2 DD WVAR, DVAR, DVAR-WVAR, VAR1-DVAR;雙字變量,雙字變

11、量,4項(xiàng)項(xiàng)VAR3 DB DVAR-WVAR, VAR1-DVAR;字節(jié)變量,字節(jié)變量,2項(xiàng)項(xiàng)DSEGENDS n有符號(hào)數(shù)用它的補(bǔ)碼存儲(chǔ)有符號(hào)數(shù)用它的補(bǔ)碼存儲(chǔ)n字符用字符用ASCII代碼存儲(chǔ)代碼存儲(chǔ)nDB定義的數(shù)據(jù)在定義的數(shù)據(jù)在 -128255 之內(nèi)之內(nèi)n變量名代表首個(gè)單元的地址變量名代表首個(gè)單元的地址nDW定義的數(shù)據(jù)在定義的數(shù)據(jù)在-32768, 65535內(nèi)內(nèi)n出現(xiàn)在參數(shù)部分的變量名用這個(gè)變量的偏移地址出現(xiàn)在參數(shù)部分的變量名用這個(gè)變量的偏移地址代替代替n多字節(jié)數(shù)據(jù)的存放:多字節(jié)數(shù)據(jù)的存放: “高高低低高高低低”(小端方式)(小端方式)存儲(chǔ)區(qū)域分配存儲(chǔ)區(qū)域分配 (1,-2,AB,3 DUP(a

12、),?)(2)變量和標(biāo)號(hào)的屬性)變量和標(biāo)號(hào)的屬性n變量和標(biāo)號(hào)都表示存儲(chǔ)單元。變量和標(biāo)號(hào)都表示存儲(chǔ)單元。q變量表示的存儲(chǔ)單元中存放數(shù)值變量表示的存儲(chǔ)單元中存放數(shù)值q標(biāo)號(hào)表示的存儲(chǔ)單元中存放指令代碼。標(biāo)號(hào)表示的存儲(chǔ)單元中存放指令代碼。n變量和標(biāo)號(hào)具有如下三種屬性:變量和標(biāo)號(hào)具有如下三種屬性:q 段屬性(段屬性(SEG):): 變量或標(biāo)號(hào)對(duì)應(yīng)存儲(chǔ)單元所在段的段地址。變量或標(biāo)號(hào)對(duì)應(yīng)存儲(chǔ)單元所在段的段地址。q 偏移地址屬性(偏移地址屬性(OFFSET):變量或標(biāo)號(hào)對(duì)應(yīng)的首個(gè)存儲(chǔ)單元):變量或標(biāo)號(hào)對(duì)應(yīng)的首個(gè)存儲(chǔ)單元的段內(nèi)偏移地址。的段內(nèi)偏移地址。q 類型屬性(類型屬性(TYPE): 變量的類型屬性指的是變

13、量占用存儲(chǔ)單變量的類型屬性指的是變量占用存儲(chǔ)單元的字節(jié)數(shù)。屬性值由變量定義偽指令來決定。元的字節(jié)數(shù)。屬性值由變量定義偽指令來決定。q主要的變量和標(biāo)號(hào)類型屬性及返回值主要的變量和標(biāo)號(hào)類型屬性及返回值 (變量變量 / 標(biāo)號(hào)標(biāo)號(hào) / 常數(shù)常數(shù)) DB DW DD DF DQ DT NEAR FAR DB DW DD DF DQ DT NEAR FAR 常數(shù)常數(shù) 1 2 4 6 8 10 -1 -2 01 2 4 6 8 10 -1 -2 0(3) 析值運(yùn)算符析值運(yùn)算符n析值運(yùn)算符也稱為數(shù)值回送運(yùn)算符,把一些特征析值運(yùn)算符也稱為數(shù)值回送運(yùn)算符,把一些特征或存儲(chǔ)器地址的一部分作為數(shù)值回送。或存儲(chǔ)器地址的

14、一部分作為數(shù)值回送。 n常用析值運(yùn)算符常用析值運(yùn)算符 SEG 名字名字/標(biāo)號(hào)標(biāo)號(hào)返回名字或標(biāo)號(hào)的段地址返回名字或標(biāo)號(hào)的段地址OFFSET 名字名字/標(biāo)號(hào)標(biāo)號(hào)返回名字或標(biāo)號(hào)的偏移地址返回名字或標(biāo)號(hào)的偏移地址TYPE 名字名字/標(biāo)號(hào)標(biāo)號(hào)返回變量或標(biāo)號(hào)的類型,類型用數(shù)值表示返回變量或標(biāo)號(hào)的類型,類型用數(shù)值表示LENGTH 變量名變量名返回利用返回利用DUP定義的變量中元素的個(gè)數(shù),即重復(fù)定義的變量中元素的個(gè)數(shù),即重復(fù)操作符操作符DUP前的重復(fù)次數(shù)值,其它情況回送前的重復(fù)次數(shù)值,其它情況回送1 SIZE 變量名變量名返回返回LENGTHTYPE的值的值 數(shù)值回送操作符:數(shù)值回送操作符: OFFSET、S

15、EG、TYPE、 LENGTH、SIZE SIZE SIZE 變量變量功能:功能:LENGTH LENGTH * * TYPE TYPEOFFSETOFFSET / SEGSEG 變量變量 / 標(biāo)號(hào)標(biāo)號(hào)功能:回送變量或標(biāo)號(hào)的偏址功能:回送變量或標(biāo)號(hào)的偏址 / / 段地址段地址TYPETYPE 變量變量 / 標(biāo)號(hào)標(biāo)號(hào) / 常數(shù)常數(shù) DB DW DD DF DQ DT NEAR FAR DB DW DD DF DQ DT NEAR FAR 常數(shù)常數(shù) 1 2 4 6 8 10 -1 -2 01 2 4 6 8 10 -1 -2 0LENGTH LENGTH 變量變量功能:回送由功能:回送由DUP定義

16、的定義的變量的單元數(shù),其它情況回送變量的單元數(shù),其它情況回送1 1MOV AX, LISTMOV AX, OFFSET LIST設(shè)變量設(shè)變量LIST定義在定義在DATA段中,段中,DATA SEGMENT LIST DW 10,20,30DATA ENDS下面三條指令都是把下面三條指令都是把DATA段的段基址裝入段的段基址裝入AX: MOV AX, DATA ;DATA代表該段的段基址,是一個(gè)立即數(shù)代表該段的段基址,是一個(gè)立即數(shù)MOV AX, SEG DATA ;??;取DATA的段基址,結(jié)果是立即數(shù)的段基址,結(jié)果是立即數(shù)MOV AX, SEG LIST ;?。蝗IST的段基址,結(jié)果是立即數(shù)的

17、段基址,結(jié)果是立即數(shù)對(duì)比:對(duì)比:;取出變量;取出變量LIST第一個(gè)元素送入第一個(gè)元素送入AX;取變量;取變量LIST的偏移地址送入的偏移地址送入AX(4) 屬性運(yùn)算符屬性運(yùn)算符n提高訪問變量、標(biāo)號(hào)和一般存儲(chǔ)器操作數(shù)的靈活性提高訪問變量、標(biāo)號(hào)和一般存儲(chǔ)器操作數(shù)的靈活性n常用屬性運(yùn)算符常用屬性運(yùn)算符 類型類型 PTR 變量名變量名/標(biāo)號(hào)標(biāo)號(hào)臨時(shí)指定或臨時(shí)改變變量和標(biāo)號(hào)的使用類型臨時(shí)指定或臨時(shí)改變變量和標(biāo)號(hào)的使用類型THIS 類型類型用于創(chuàng)建采用當(dāng)前地址但為指定類型的操作數(shù)用于創(chuàng)建采用當(dāng)前地址但為指定類型的操作數(shù)SHORT 標(biāo)號(hào)標(biāo)號(hào)將標(biāo)號(hào)作為短轉(zhuǎn)移處理將標(biāo)號(hào)作為短轉(zhuǎn)移處理段寄存器段寄存器 :用來給一

18、個(gè)存儲(chǔ)器操作數(shù)指定一個(gè)段屬性用來給一個(gè)存儲(chǔ)器操作數(shù)指定一個(gè)段屬性, 即段超越即段超越類型限定操作符類型限定操作符 PTRn類型限定操作符類型限定操作符對(duì)類型屬性進(jìn)行設(shè)置對(duì)類型屬性進(jìn)行設(shè)置類型名類型名 PTR 名字名字/標(biāo)號(hào)標(biāo)號(hào)q類型名可以是類型名可以是BYTE、WORD、DWORD(依次表示字節(jié)(依次表示字節(jié)、字、雙字)等、字、雙字)等,或者是或者是NEAR、FAR(分別表示近、遠(yuǎn))(分別表示近、遠(yuǎn))等等例:例:MOV AX, BVAR MOV AX, WORD PTR BVAR(5)變量的應(yīng)用)變量的應(yīng)用n變量變量具有存儲(chǔ)單元的邏輯地址具有存儲(chǔ)單元的邏輯地址n指令語句中指令語句中q通過變量名

19、引用其指向的首個(gè)數(shù)據(jù)通過變量名引用其指向的首個(gè)數(shù)據(jù)q通過變量名加減位移量存取以首個(gè)數(shù)據(jù)為基地址的前后通過變量名加減位移量存取以首個(gè)數(shù)據(jù)為基地址的前后數(shù)據(jù)數(shù)據(jù) n偽指令語句中偽指令語句中q主要是在另一個(gè)變量定義語句中作為參數(shù)部分出現(xiàn)。主要是在另一個(gè)變量定義語句中作為參數(shù)部分出現(xiàn)。 MOV AL, BVAR;AL 1MOV BL, BVAR+3;BL B【例【例 2 3】 變量應(yīng)用舉例變量應(yīng)用舉例;代碼段代碼段MOV CL, BVAR; BVAR第第1個(gè)數(shù)據(jù)送個(gè)數(shù)據(jù)送CL,(,(CL)=01HMOV CH, BVAR+2; BVAR第第3個(gè)數(shù)據(jù)送個(gè)數(shù)據(jù)送CH,(,(CH)=41HMOV BX, WVAR; WVAR第第1個(gè)數(shù)據(jù)送個(gè)數(shù)據(jù)送BX,(,(BX)=0001HMOV SI, WVAR+2; WVAR第第2個(gè)數(shù)據(jù)送個(gè)數(shù)據(jù)送SI,(,(SI)=0FFFEH(-2)MOV DX, WORD PTR DVAR; DVAR第第1個(gè)數(shù)據(jù)低字送個(gè)數(shù)據(jù)低字送DX,(,(DX)=0001HMOV AX, WORD PTR DVAR+2; DVAR第第1個(gè)數(shù)據(jù)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論