




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、本章學(xué)習(xí)要點(diǎn): (1)常見(jiàn)的偽指令及它們的用法 (2)匯編語(yǔ)言的結(jié)構(gòu) 一、匯編語(yǔ)句的種類(lèi)和格式 1. 語(yǔ)句的種類(lèi) 匯編語(yǔ)言有多種類(lèi)型的語(yǔ)句,指令語(yǔ)句、偽指令語(yǔ)句、宏指令語(yǔ)句。 匯編語(yǔ)言在對(duì)源程序進(jìn)行匯編時(shí),把指令語(yǔ)句翻譯成機(jī)器指令,也就是說(shuō)指令語(yǔ)句有著與之對(duì)應(yīng)的機(jī)器指令。 偽指令語(yǔ)句沒(méi)有與其對(duì)應(yīng)的機(jī)器指令,只是指示匯編程序如何對(duì)源程序進(jìn)行匯編,包括符號(hào)的定義、變量的定義、段的定義等。通俗點(diǎn)講,它實(shí)際上是屬于一種說(shuō)明語(yǔ)句。 2.語(yǔ)句的格式 指令語(yǔ)句格式: (標(biāo)號(hào))指令助記符(操作數(shù)(,操作數(shù))(;注釋?zhuān)?偽指令語(yǔ)句的格式如下: (名字)偽指令定義符(參數(shù),參數(shù))(;注釋?zhuān)?偽指令定義符:規(guī)定了偽
2、指令的功能 參數(shù):說(shuō)明偽指令操作的對(duì)象,如常數(shù)(數(shù)值表達(dá)式)等 名稱(chēng):給所定義的內(nèi)容起的名稱(chēng)。 在匯編語(yǔ)言中,名字和標(biāo)號(hào)很容易區(qū)分,名字后面沒(méi)有冒號(hào),而標(biāo)號(hào)后一定用冒號(hào)。 標(biāo)號(hào)和名字最多由31個(gè)字母、數(shù)字及規(guī)定的特殊字符組成,并且不能以數(shù)字來(lái)開(kāi)頭。 標(biāo)號(hào)和名字不能是匯編語(yǔ)言的保留字,如不能是“MOV”。 匯編語(yǔ)言不區(qū)分保留字中字母的大小寫(xiě)。如“MOV AX ,03H”等同于“mov ax , 03h” 偽指令有多種,常見(jiàn)的如: (1)段定義偽操作 (2)數(shù)值數(shù)據(jù)定義及存儲(chǔ)器分配 (3)符號(hào)數(shù)據(jù)定義 (4)程序開(kāi)始和結(jié)束偽操作 (5)表達(dá)式賦值偽操作 此外還有基數(shù)控制偽操作、對(duì)準(zhǔn)偽操作等。,看看
3、下列代碼有哪些偽指令:,二、常見(jiàn)的偽指令/偽操作 (1)段定義語(yǔ)句 為了與存儲(chǔ)器的分段結(jié)構(gòu)相對(duì)應(yīng),匯編語(yǔ)言的源程序也是由若干個(gè)段組成。 1. 段開(kāi)始和段結(jié)束語(yǔ)句 段定義的一般格式如下: 段名SEGMENT 定位類(lèi)型 組合類(lèi)型 類(lèi)型 段名ENDS 例:一個(gè)簡(jiǎn)單的段如下所示: DSEGSEGMENT MESS DB HELLO , 0DH , 0AH , $ DSEGENDS,2. 段使用設(shè)定語(yǔ)句 匯編程序根據(jù)段開(kāi)始語(yǔ)句和段結(jié)束語(yǔ)句判斷出源程序的段劃分,為了有效地產(chǎn)生目標(biāo)代碼,匯編程序還要了解各程序段與段寄存器間的對(duì)應(yīng)關(guān)系。這種對(duì)應(yīng)關(guān)系由段使用設(shè)定語(yǔ)句說(shuō)明。 ASSUME 段寄存器名:段名,段寄存
4、器名:段名 段寄存器名可以是CS,DS,SS和ES。 段名就是段開(kāi)始和段結(jié)束語(yǔ)句中規(guī)定的段名。 例如:CS寄存器對(duì)應(yīng)CSEG段,DS寄存器對(duì)應(yīng)DSEG段。 ASSUME CS : CSEG , DS : DSEG ASSUME偽指令中段名也可以是一個(gè)特別的關(guān)鍵字NOTHING,它表示某個(gè)段寄存器不與任何段有對(duì)應(yīng)關(guān)系。,DSEG1 SEGMENT VARW DW 12 DSEG1 ENDS DSEG2 SEGMENT XXX DW 0 DSEG2 ENDS CSEG SEGMENT ASSUME CS:CSEG , DS: DSG1 , ES : DSG2 MOV AX , DSEG1 MOV
5、DS , AX MOV AX , DSEG2 MOV ES , AX ASSUME DS: DSG2 , ES :NOTHING MOV AX , DSEG2 MOV DS , AX DSEG ENDS,(2)關(guān)于數(shù)值數(shù)據(jù)定義語(yǔ)句及存儲(chǔ)器分配 通過(guò)數(shù)值數(shù)據(jù)定義語(yǔ)句可以為數(shù)據(jù)項(xiàng)分配存儲(chǔ)單元,并根據(jù)需要設(shè)置其初值。 還可以用符號(hào)代表數(shù)據(jù)項(xiàng),此時(shí)符號(hào)就與分配的存儲(chǔ)單元相聯(lián)系。代表數(shù)據(jù)項(xiàng)的符號(hào)本省稱(chēng)為變量名,與之相對(duì)應(yīng)的存儲(chǔ)單元用于存放變量。 1. 數(shù)據(jù)定義的格式 數(shù)據(jù)定義語(yǔ)句是最常用的偽指令語(yǔ)句。一般格式如下: 變量名 數(shù)據(jù)定義符 表達(dá)式,表達(dá)式,表達(dá)式;注釋 例如:VARB DB3 WARW DW
6、 -1234 BUFF DB 100 , 3+4 , 5*6,1)定義字節(jié)數(shù)據(jù)項(xiàng)(DB) 每一個(gè)字節(jié)數(shù)據(jù)項(xiàng)只占用一個(gè)字節(jié)存儲(chǔ)單元 例:COUNT DB 100 DB 0DH ,0AH , $ TABLEDB 0 , 1 , 4 , 9 , 16 2)定義字?jǐn)?shù)據(jù)項(xiàng)(DW) 每一個(gè)字?jǐn)?shù)據(jù)項(xiàng)只占用兩個(gè)字節(jié)存儲(chǔ)單元 例:FLAG DW 2FCDH, 100,-1 VECTDW 0 DW 100H 3)定義雙字?jǐn)?shù)據(jù)項(xiàng)(DD) 每一個(gè)雙字?jǐn)?shù)據(jù)項(xiàng)只占用四個(gè)字節(jié)存儲(chǔ)單元 例:VECTOR DD 4 FARPTRDD 12345678H, 0 此外,還可以定義8字節(jié)的數(shù)據(jù)項(xiàng)(DQ),10字節(jié)的數(shù)據(jù)項(xiàng)(DT),4
7、)定義沒(méi)有初值的數(shù)據(jù)項(xiàng) 如果數(shù)據(jù)定義語(yǔ)句中的表達(dá)式只是一個(gè)問(wèn)號(hào)(?),則表示不預(yù)置對(duì)應(yīng)變量的初值,而僅僅是給變量分配存儲(chǔ)單元。 例:INBUFF DB 5 , ? , ? , ? , 8 , ? VARWDW ? OLDVDD ? 5)定義字符串 定義字節(jié)數(shù)據(jù)的偽指令DB也可以用于方便地定義字符串。 字符串要用引號(hào)括起來(lái),單引號(hào)和雙引號(hào)皆可,只要配對(duì)。 例如:MESS DB HELLO! 上述語(yǔ)句與如下語(yǔ)句定義內(nèi)容相同: MESS DB H , E , L , L , O , !,2. 重復(fù)操作符DUP 有時(shí)需要定義數(shù)組,有時(shí)還需要定于數(shù)據(jù)緩沖區(qū)。 例如: BUFFER DB 0 , 0 ,
8、0 , 0 , 0 , 0 , 0 , 0 以上操作太不方便,為此,匯編語(yǔ)言停供了在數(shù)據(jù)定義語(yǔ)句中使用的重復(fù)操作符DUP。 比如,上述定義語(yǔ)句與如下定義語(yǔ)句起相同的作用: BUFFER DB 8 DUP(0) 重復(fù)操作符DUP的一般格式如下: count DUP (表達(dá)式, 表達(dá)式, ) 例如: BUFFER1 DB 5 , 0 , 5 DUP(?) BUFFER2 DB 100 DUP(0 , 2 DUP(1 , 2) , 0 , 3) BUFFER3 DB 256 DUP(ABCDE),(3)關(guān)于符號(hào)數(shù)據(jù)的定義語(yǔ)句 1. 等價(jià)語(yǔ)句EQU 格式 EQU 表達(dá)式 例:COUNT EQU 100
9、;符號(hào)COUNT就代表常數(shù)100 BUFF_LEN EQU 4*COUNT;COUNT是已定義的符號(hào)常數(shù) HELLO EQU “How are you!” 例:MOVE EQU MOV COUNT EQU CX 在安排上述語(yǔ)句后,就可以用MOVE代替指令助記符MOV,用COUNT代替寄存器CX。當(dāng)然,MOV和CX仍可以照樣使用。 當(dāng)遇到:MOVE AX , CX;MOV AX , CX MOVE COUNT , 100;MOV CX , 100 需要注意:第1,等價(jià)語(yǔ)句不另外給符號(hào)分配存儲(chǔ)單元; 第2,等價(jià)語(yǔ)句定義的符號(hào)不能與其它符號(hào)相同,也不能被重新定義。,2. 等號(hào)語(yǔ)句(=) 匯編語(yǔ)言專(zhuān)門(mén)
10、提供了符號(hào)語(yǔ)句來(lái)定義符號(hào)常數(shù),即用符號(hào)表示一個(gè)常數(shù)。等號(hào)語(yǔ)句的一般格式如下: 符號(hào)名 = 數(shù)值表達(dá)式 例如:XX = 10 用符號(hào)定義語(yǔ)句可被重新定義。 例如: ABCD = 1 ABCD = 100,3. 定義符號(hào)名語(yǔ)句 格式:符號(hào)名 LABEL 類(lèi)型 其中類(lèi)型可以是BYTE、WORD、DWORD、NEAR、FAR,其中前3項(xiàng)對(duì)應(yīng)于數(shù)據(jù)項(xiàng),后2項(xiàng)對(duì)應(yīng)于可執(zhí)行代碼。 功能:指定為某一類(lèi)型的符號(hào),且該符號(hào)的段屬性和偏移屬性與下一個(gè)緊接著的存儲(chǔ)單元的段屬性和偏移屬性相同。 例如: BUFFER LABEL WORD BUFF DB 100 DUP(0) 定義了一個(gè)符號(hào)BUFFER,其類(lèi)型是WORD
11、。因?yàn)槎螌傩耘c偏移屬性和BUFF相同,所以?xún)?nèi)容為0000H。 又如: QUIT LABEL FAR EXIT:MOV AH , 4CH “MOV AH , 4CH”有了QUIT和EXIT兩個(gè)標(biāo)號(hào)。,(4)程序開(kāi)始與結(jié)束偽操作 END 偽操作 格式: END 標(biāo)號(hào) 其中標(biāo)號(hào)表示程序開(kāi)始執(zhí)行的起始地址。 注意: 程序是從END所指的“標(biāo)號(hào)”開(kāi)始執(zhí)行,遇到END指令后結(jié)束。 如果END沒(méi)有指定標(biāo)號(hào),則從相應(yīng)代碼段從開(kāi)始運(yùn)行。,注意以下2個(gè)程序的區(qū)別:,(5)對(duì)準(zhǔn)偽操作 1. EVEN 格式:EVEN 功能:使緊隨其后的內(nèi)容從偶地址開(kāi)始存儲(chǔ)。 DSEG SEGMENT EVEN WORD_ARRAY
12、DW 100 DUP(?) DSEG ENDS,2. ORG 格式: ORG 常數(shù)表達(dá)式 功能:使緊隨其后的內(nèi)容從表達(dá)式所指定的地址開(kāi)始存儲(chǔ)。 DSEG SEGMENT ORG 10 VECT1 DW 47A5H ORG 20 VECT2 DW 1234H DSEG ENDS,可以使用符號(hào)$來(lái)代表當(dāng)前正在匯編的指令的地址。 例:已知ARRAY的偏移量為0074H,試寫(xiě)出下列語(yǔ)句所分配空間的內(nèi)容 ARRAY DW 1 , 2 , $+4 , 3, 4, $ + 4,三. 關(guān)于表達(dá)式的偽操作 (1)數(shù)值表達(dá)式 1.常數(shù) 常數(shù)有多種類(lèi)型和表示方式,如: 1)十進(jìn)制常數(shù),以字母D結(jié)束為標(biāo)識(shí)。 例:MO
13、V AX , 178D 2)十六進(jìn)制常數(shù),以字母H結(jié)束為標(biāo)識(shí) 例:MOV AL , 0AH 注意,在程序編寫(xiě)時(shí),十六進(jìn)制數(shù)必須以數(shù)字開(kāi)頭。 例:要使(AL)為ABH,程序必須使用下列寫(xiě)法: MOV AL , 0ABH 3)二進(jìn)制常數(shù),以字母B結(jié)束為標(biāo)識(shí) 例:OR AL , 11001010B TEST BL , 00101000B 4)八進(jìn)制常數(shù),以字母Q結(jié)束為標(biāo)識(shí),如127Q。,5)字符串常數(shù)(串常數(shù)) 串常數(shù)的值是包括在引號(hào)中的字符的ASCII代碼值。 例:A的ASCII碼值是41H CMP AL , A 相當(dāng)于 CMP AL , 41H 6)偽指令RADIX 設(shè)置其后數(shù)值的缺省進(jìn)制 格式
14、:RADIX exp exp的值必須是區(qū)間2,16內(nèi)的一個(gè)整數(shù)。 例如: RADIX 8 MOV AL , 10 RADIX 16 MOV AH , 10 但是,為了避免混淆和不必要的誤會(huì),我們提倡慎用RADIX.,2. 算術(shù)運(yùn)算符 算術(shù)運(yùn)算府包括正(+)、負(fù)(-),加(+)、減(-)、乘(*)、除(/)和模(MOD),這些算術(shù)運(yùn)算符的意義與高級(jí)語(yǔ)言中同樣運(yùn)算符的意義相似。 ADD AX , 100 * 4 + 2 ; 100 * 4 + 2就構(gòu)成了一個(gè)算術(shù)表達(dá)式 SUB CX , 100H / 2 MOV AL , -3 3.關(guān)系運(yùn)算符 關(guān)系運(yùn)算符包括相等(EQ)、不等(NE)、小于(LT)
15、、大于(GT)、小于或等于(LE)、大于或等于(GE)。 若關(guān)系不成立,則結(jié)果為0(一個(gè)數(shù)值); 若關(guān)系成立,則結(jié)果為FFFFH(一個(gè)數(shù)值)。 例如, MOV AX , 1234H LT 1024H 等同于 MOV AX , 0H MOV BX , 1234H GT 1024H 等同于 MOV BX , 0FFFFH,4. 邏輯運(yùn)算符 邏輯運(yùn)算符包括按位操作的“與”(AND)、“或” (OR) 、“非” (NOT) 、“異或” (XOR) 、“左移”(SHL)和“右移” (SHR)。 邏輯運(yùn)算的結(jié)果也是數(shù)值。 例: MOV BX , (VAL LT 5) AND 20) OR (VAL GE
16、5) AND 30) 當(dāng)VAL 5時(shí),匯編的結(jié)果應(yīng)該是: MOV BX , 20 否則,匯編結(jié)果應(yīng)該是: MOV BX , 30 注意:邏輯運(yùn)算符和指令助記符的區(qū)別,表達(dá)式中的邏輯運(yùn)算符屬于偽指令,在匯編時(shí)起說(shuō)明作用;而指令助記符則有機(jī)器指令與之對(duì)應(yīng)。,5. 在數(shù)值表達(dá)式中使用操作符 (1)HIGH、LOW 功能:取數(shù)值表達(dá)式的值的高8位(或低8位)。 例:MOV AL , LOW 3080H 將匯編成:MOV AL , 80H MOV AH , HIGH 2050H 將匯編成:MOV AH , 20H MOV AH , HIGH(1234H + 5) 將匯編成:MOV , 12H MOV A
17、H , HIGH 1234H + 5 將匯編成:MOV AH , 17H 注意:最后1題為什么是先取1234H的高8位再加5,而不是先加5再取高8位?,6. 優(yōu)先級(jí) 匯編語(yǔ)言中各種運(yùn)算符和操作符的優(yōu)先級(jí)按高到低排列如下: (1)圓括號(hào),尖括號(hào),方括號(hào),圓點(diǎn)符,LENGTH,SIZE,WIDTH , MASK。 (2)PTR, OFFSET,SEG,TYPE, THIS,冒號(hào)。 (3)* , / , MOD, SHL, SHR (4)HIGH, LOW (5)+ , - (6)EQ,NE,LT,LE,GT,GE (7)NOT (8)AND (9)OR , XOR (10)SHORT,7. 其它操
18、作符 SEG、OFFSET、TYPE、LENGTH、SIZE、PTR 1)SEG 變量名或標(biāo)號(hào) 功能:取變量或標(biāo)號(hào)所在段的段值 2)OFFSET 變量名或標(biāo)號(hào) 功能:取變量或標(biāo)號(hào)在段中的偏移 例:定義變量如下,假設(shè)VARW的段內(nèi)偏移為100H。 VARW DW 1234H, 5678H VARB DB 3,4 MOV AX, SEG VARW MOV DS, AX MOV BX, OFFSET VARW; 100H 送BX MOV DI, OFFSET VARW 2;102H送DI, ;OFFSET優(yōu)先級(jí)高于+ MOV SI, OFFSET VARB; 104H送SI,3)TYPE 變量名或標(biāo)
19、號(hào) 功能:返回變量或標(biāo)號(hào)的類(lèi)型。 定義常見(jiàn)類(lèi)型及其對(duì)應(yīng)數(shù)值如下: 字節(jié)(BYTE)變量:1 字(WORD)變量:2 雙字(DWORD)變量:4 近(NEAR)標(biāo)號(hào):-1 遠(yuǎn)(FAR)標(biāo)號(hào):-2 可見(jiàn):變量的類(lèi)型值是對(duì)應(yīng)類(lèi)型變量所占用的字節(jié)數(shù),而標(biāo)號(hào)的類(lèi)型值卻沒(méi)有實(shí)際的物理意義。 例:假設(shè)變量VARW的定義為“VARW DW 1234H, 5678H” ADD SI, TYPE VARW 將匯編成:ADD SI , 2,4)LENGTH 變量名 功能:返回利用DUP定義的數(shù)組中元素的個(gè)數(shù)。 如果變量定義語(yǔ)句中沒(méi)有使用DUP,則總返回1。 如果嵌套使用了DUP,則只返回最外層的重復(fù)數(shù)。 例:定義變量如下 VARW DW 1234H, 5678H VARB DB 3,4 VARD DD 5 DUP(?) 則 MOV CX, LENGTH VARW;1送CX MOV CX, LENGTH VARB;1送CX MOV CX, LENGTH VARD;5送CX,5)SIZE 變量名 功能:返回利用DUP定義的數(shù)組占用字節(jié)的個(gè)數(shù)。 可按下式計(jì)算: SIZE 變量 = (LEGNTH 變量)* (TYPE 變量) 例:定義變量如下 VARW DW 1234H, 5678H VARB DB 3,4 VARD DD 5 DUP(?) 則 MOV CX, SIZE VARW;2送CX MOV CX,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 肝病護(hù)理課件
- 福清市數(shù)學(xué)試卷
- 廣安市高二數(shù)學(xué)試卷
- 高中生在家做數(shù)學(xué)試卷
- 廚房清理知識(shí)培訓(xùn)課件
- 肌腱斷裂的護(hù)理課件
- 高一入學(xué)分班考數(shù)學(xué)試卷
- 2025年04月云南寧洱縣醫(yī)療衛(wèi)生事業(yè)單位第二輪急需緊缺人才招聘3人筆試歷年專(zhuān)業(yè)考點(diǎn)(難、易錯(cuò)點(diǎn))附帶答案詳解
- 2025至2030大閘蟹養(yǎng)殖行業(yè)發(fā)展趨勢(shì)分析與未來(lái)投資戰(zhàn)略咨詢(xún)研究報(bào)告
- 2024年文山州麻栗坡縣縣級(jí)衛(wèi)生健康單位選調(diào)筆試真題
- 鋼結(jié)構(gòu)工程安裝勞務(wù)合同
- 團(tuán)員發(fā)展紀(jì)實(shí)簿
- DB11-T 1952-2022 地理國(guó)情監(jiān)測(cè)技術(shù)規(guī)程
- 記憶有方 過(guò)目不忘 課件
- 3D三維可視化BIM模板安全施工方案
- 國(guó)開(kāi)(貴州)2024年秋《地域文化(專(zhuān))》形考任務(wù)1-2答案
- 采油工(信息化)高級(jí)技能鑒定理論考試題及答案
- GB/T 15843.2-2024網(wǎng)絡(luò)安全技術(shù)實(shí)體鑒別第2部分:采用鑒別式加密的機(jī)制
- 餐飲場(chǎng)所裝修安全協(xié)議模板
- 2022年自考專(zhuān)業(yè)(英語(yǔ))高級(jí)英語(yǔ)考試真題及答案16
- 附件3:微創(chuàng)介入中心評(píng)審實(shí)施細(xì)則2024年修訂版
評(píng)論
0/150
提交評(píng)論