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

下載本文檔

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

文檔簡介

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

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

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

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

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

6、l 類型運算符類型運算符 (type, length, size)n【例例 2 5】數(shù)值表達式及其應(yīng)用數(shù)值表達式及其應(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變量變量實質(zhì)上是指內(nèi)存單元的數(shù)據(jù),雖然內(nèi)存單元地址實質(zhì)上是指內(nèi)存單元的數(shù)據(jù),雖然內(nèi)存單元地址不變,但其中存放的數(shù)據(jù)可以改變不變,但其中存放的數(shù)據(jù)可以改變n變量需要變量需要事先定義才能使用事先定義才能使用n變量定義偽指令變量定義偽指令為變量申請為變量申請以固定長度為單位以固定長度

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

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

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

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

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

13、量占用存儲單變量的類型屬性指的是變量占用存儲單元的字節(jié)數(shù)。屬性值由變量定義偽指令來決定。元的字節(jié)數(shù)。屬性值由變量定義偽指令來決定。q主要的變量和標(biāo)號類型屬性及返回值主要的變量和標(biāo)號類型屬性及返回值 (變量變量 / 標(biāo)號標(biā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) 析值運算符析值運算符n析值運算符也稱為數(shù)值回送運算符,把一些特征析值運算符也稱為數(shù)值回送運算符,把一些特征或存儲器地址的一部分作為數(shù)值回送?;虼鎯ζ鞯刂返?/p>

14、一部分作為數(shù)值回送。 n常用析值運算符常用析值運算符 SEG 名字名字/標(biāo)號標(biāo)號返回名字或標(biāo)號的段地址返回名字或標(biāo)號的段地址OFFSET 名字名字/標(biāo)號標(biāo)號返回名字或標(biāo)號的偏移地址返回名字或標(biāo)號的偏移地址TYPE 名字名字/標(biāo)號標(biāo)號返回變量或標(biāo)號的類型,類型用數(shù)值表示返回變量或標(biāo)號的類型,類型用數(shù)值表示LENGTH 變量名變量名返回利用返回利用DUP定義的變量中元素的個數(shù),即重復(fù)定義的變量中元素的個數(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)號標(biāo)號功能:回送變量或標(biāo)號的偏址功能:回送變量或標(biāo)號的偏址 / / 段地址段地址TYPETYPE 變量變量 / 標(biāo)號標(biā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代表該段的段基址,是一個立即數(shù)代表該段的段基址,是一個立即數(shù)MOV AX, SEG DATA ;?。蝗ATA的段基址,結(jié)果是立即數(shù)的段基址,結(jié)果是立即數(shù)MOV AX, SEG LIST ;取;取LIST的段基址,結(jié)果是立即數(shù)的

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

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

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

溫馨提示

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

評論

0/150

提交評論