版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 第3章 80X86的尋址方式和指令系統(tǒng)第1節(jié) 80X86的數(shù)據(jù)類型第2節(jié) 80X86的尋址方式第3節(jié) 80X86的指令系統(tǒng)1第1頁(yè),共106頁(yè)。學(xué)習(xí)指導(dǎo)和要求掌握80486的七種數(shù)據(jù)類型;熟練掌握九種尋址方式;熟記各種類型的指令格式及功能,并能編寫簡(jiǎn)單程序。2第2頁(yè),共106頁(yè)。 第1節(jié) 80X86的數(shù)據(jù)類型 80486匯編語(yǔ)言中可使用的數(shù)據(jù)類型有以下七種: 無(wú)符號(hào)二進(jìn)制數(shù) 字節(jié)(8位):0255 (00FFH),占用一字節(jié)存儲(chǔ)單元。 字(16位):065535 (00FFFFH),占用連續(xù)的兩字節(jié)存儲(chǔ)單元,低地址存儲(chǔ)單元存放低8位數(shù)據(jù),高地址存儲(chǔ)單元存放高8位數(shù)據(jù),低字節(jié)地址為該字的地址。
2、 雙字(32位):04294967299 (00FFFFFFFFH),占用連續(xù)的四字節(jié)存儲(chǔ)單元,最低地址存儲(chǔ)單元存放最低8位數(shù)據(jù),最高地址存儲(chǔ)單元存放最高8位數(shù)據(jù),最低字節(jié)地址為該雙字的地址。3第3頁(yè),共106頁(yè)。有符號(hào)二進(jìn)制數(shù)字節(jié): -128+127 (80HFFH, 00H7FH)字: -32768+32767 (8000HFFFFH, 00000H7FFFH)雙字:-2147483650+2147483649 (80000000HFFFFFFFFH,000000000H7FFFFFFFH) 以補(bǔ)碼形式存儲(chǔ),地址單元分配與無(wú)符號(hào)數(shù)類似。浮點(diǎn)數(shù)(實(shí)數(shù))單精度數(shù)(32位):數(shù)據(jù)格式如下: 階
3、碼 有 效 數(shù) 31 30 23 22 0符號(hào)位1.1位符號(hào),8位階碼,24位有效數(shù)(顯式23位,外加1位隱含的整數(shù)“1.”。4第4頁(yè),共106頁(yè)。雙精度數(shù)(64位): 數(shù)據(jù)格式如下:1位符號(hào),11位階碼,53位有效數(shù)(顯式52位,外加1位隱含的整數(shù)“1.”。 63 62 52 51 0 階 碼 有 效 數(shù)符號(hào)位1.擴(kuò)展精度數(shù)(80位): 數(shù)據(jù)格式如下:79 78 64 63 62 0 階 碼 1 有 效 數(shù)符號(hào)位1位符號(hào),15位階碼,64位有效數(shù)(內(nèi)含1位整數(shù)1,小數(shù)點(diǎn)是隱含的。.5第5頁(yè),共106頁(yè)。BCD碼壓縮BCD碼:1字節(jié)存放兩個(gè)BCD碼,格式如圖a 7 4 3 0 7 4 3 0
4、(a) (b)非壓縮BCD碼:1字節(jié)存放一個(gè)BCD碼(低4位),格式如圖b串?dāng)?shù)據(jù)位串:從任何字節(jié)的任何位開(kāi)始的相鄰位序列,最長(zhǎng)可達(dá)232-1位字節(jié)/字/雙字串:是字節(jié)、字、雙字的相鄰序列,最長(zhǎng)可達(dá)232-1字節(jié)。十位 個(gè)位0或任意 個(gè)位6第6頁(yè),共106頁(yè)。ASCII碼數(shù)據(jù) ASCII碼字符串: 如ABC123 ASCII碼數(shù): 如30H39H(09),41H46H(AF)指針數(shù)據(jù)近指針(32位): 是一個(gè)32位的段內(nèi)偏移地址,段內(nèi)尋址時(shí)使用。遠(yuǎn)指針(48位): 是一個(gè)由16位選擇符和32位偏移量組成,段間尋址時(shí)使用。返 回7第7頁(yè),共106頁(yè)。 第2節(jié) 80X86的尋址方式 尋找指令中所需操
5、作數(shù)或操作數(shù)地址的方式稱為尋址方式。指令的操作數(shù)來(lái)自:(1)操作數(shù)包含在指令中。(2)操作數(shù)包含在CPU的某個(gè)內(nèi)部寄存器中。(3)操作數(shù)在內(nèi)存儲(chǔ)器中。尋找此操作數(shù),先找到該操作數(shù)在內(nèi)存中存放的地址,再?gòu)脑摰刂分腥〔僮鲾?shù)。內(nèi)存單元的地址由段基址和偏移地址組成。偏移地址由基址寄存器、間(變)址寄存器、比例因子、位移量組合而成。8第8頁(yè),共106頁(yè)。由偏移地址元素按某種計(jì)算方法組合形成的偏移地址稱為有效地址EA(Effective Address)。計(jì)算方法:EA=基址+(間址比例因子)+位移量采用16位尋址,位移量是8位或16位,用BX和BP作基址寄存器,SI和DI作間址寄存器,比例因子為1。采用
6、32位尋址,可使用8位和32位的位移量,32位的通用寄存器都可作基址寄存器或間址寄存器(ESP不用于間址),可采用1、2、4、8幾種比例因子。9第9頁(yè),共106頁(yè)。80X86的尋址方式共有11種:1.立即數(shù)尋址2.寄存器尋址3.直接尋址4.寄存器間接尋址5.(帶位移的)基址尋址 6.(帶位移的)間址尋址7.(帶位移的)比例間址尋址8.基址加間址尋址9.基址加比例間址尋址10. 帶位移的基址加間址尋址11. 帶位移的基址加比例間址尋址10第10頁(yè),共106頁(yè)。1 立即尋址 指定的操作數(shù)緊跟在操作碼之后,直接存放在代碼段中。如:MOV BL,56H ;BL 56H MOV AX,2056H ;AX
7、 2056H MOV ECX,12345678H ;ECX 12345678H 立即數(shù)只能作源操作數(shù)。不能作目的操作數(shù)。2 寄存器尋址操作數(shù)在CPU的寄存器中,而寄存器的名由指令指出。如:INC CL ;CL (CL)+1 MOV AX,BX ;AX (BX)11第11頁(yè),共106頁(yè)。3 直接尋址操作數(shù)有效地址(16位或32位)直接包含在指令中,它位于操作碼之后,存放在代碼段中。如果指令無(wú)前綴指明在那一段中,則默認(rèn)操作數(shù)存放在數(shù)據(jù)段。 如:MOV AX,2000H ;DS段2000H的內(nèi)容送AL, 2001H的內(nèi)容送AH MOV AX,F(xiàn)S:2000H;FS段2000H的內(nèi)容送AL, 2001
8、H的內(nèi)容送AH4 寄存器間接尋址操作數(shù)的偏移地址存放在寄存器中,而操作數(shù)存放在存儲(chǔ)器中。 (1)16位尋址 EA= (SI)、(DI)、 (BX)、(BP) 無(wú)前綴默認(rèn)操作數(shù)存放在數(shù)據(jù)段無(wú)前綴默認(rèn)操作數(shù)存放在堆棧段12第12頁(yè),共106頁(yè)。例如: MOV AX,BX ; AX (DS)*10H+(BX) MOV AX,BP ; AX (SS)*10H+(BP) MOV AX,ES:BX; AX (ES)*10H+(BX) MOV AX,DS:BP; AX (DS)*10H+(BP)(2)32位尋址EA= (EAX)、(EBX)、 (ECX)、(EDX)、(ESP)、(EBP) 、(ESI)、(
9、EDI)ESP、EBP默認(rèn)操作數(shù)存放在堆棧段,其它默認(rèn)操作數(shù)存放在數(shù)據(jù)段。 例如:MOV AX,EBX ;DS段字?jǐn)?shù)據(jù)送AX MOV AX,EBP ;SS段字?jǐn)?shù)據(jù)送AX MOV ECX,ES:EBX ; ES段雙字?jǐn)?shù)據(jù)送ECX 13第13頁(yè),共106頁(yè)。5 (帶位移的)基址尋址基址寄存器內(nèi)容與位移量之和形成操作數(shù)的有效地址。即: EA=(基址寄存器)+位移量 (1) 16位尋址 EA=(BX)、(BP)+位移量(帶符號(hào)8或16位整數(shù)),BX默認(rèn)段寄存器DS,BP默認(rèn)段寄存器SS如: MOV AX,2040HBX 或 MOV AX,BX+2040H;DS段(BX)+2040H中的字 數(shù)據(jù)送AX。
10、 (2) 32位尋址 EA=(8個(gè)32位通用寄存器)+位移量(帶符號(hào)8或32位整數(shù)) 如:MOV ECX,1500HEAX;DS段(EAX)+1500H 或MOV ECX, EAX +1500H 中的雙字?jǐn)?shù)據(jù)送ECX。14第14頁(yè),共106頁(yè)。6 (帶位移的)間址尋址間址寄存器內(nèi)容與位移量之和形成操作數(shù)的有效地址。即: EA=(間接寄存器)+位移量 (1) 16位尋址 EA=(SI)、(DI)+位移量(帶符號(hào)8或16位整數(shù))如: MOV AX,2040HSI 或 MOV AX,SI+2040H;DS段(BX)+2040H中的字 數(shù)據(jù)送AX。 MOV DX, COUNTDI (2) 32位尋址
11、EA=(除ESP外的其他7個(gè)寄存器)+位移量(帶符號(hào)8或32位整數(shù)) 如:MOV ECX,1500HEAX;DS段(EAX)+1500H 或MOV ECX, EAX +1500H 中的雙字?jǐn)?shù)據(jù)送ECX。(帶位移的)基址尋址、間址尋址合稱為相對(duì)寄存器間址15第15頁(yè),共106頁(yè)。7 (帶位移的)比例間(變)址尋址(32位尋址) 間址寄存器內(nèi)容乘以比例因子再加位移量之和形成操作數(shù)的32位有效地址。即: EA=(變址寄存器)*比例因子+位移量 如:MOV EAX,1200HESI*48 基址加間(變)址尋址 基址寄存器內(nèi)容與間址寄存器內(nèi)容之和形成操作數(shù)的有效地址。即:EA=(基址寄存器)+(變址寄存
12、器) (1) 16位尋址 基址寄存器:BX、BP; 變址寄存器:DI、SI如:MOV AX,BX+SI或MOV AX,BXSI;DS段(BX)+(SI)中的字?jǐn)?shù) 據(jù)送AX。 16第16頁(yè),共106頁(yè)。 (2) 32位尋址 基址寄存器: 任何一個(gè)32位通用寄存器 變址寄存器:除ESP之外的任一個(gè)32位通用寄存器 如:MOV AX,EBX+ECX ;DS段(EBX)+(ECX)中 或 MOV AX,EBXECX 的字?jǐn)?shù)據(jù)送AX。 9 基址加比例間(變)址尋址(32位尋址)基址寄存器的內(nèi)容加變址寄存器內(nèi)容乘以比例因子,形成操作數(shù)的32位有效地址。即: EA= (基址寄存器) +(間址寄存器)*比例因
13、子如:MOV AX,EBX*4+ESI(默認(rèn)段DS)17第17頁(yè),共106頁(yè)。10 帶位移的基址加間址尋址基址寄存器內(nèi)容與變址寄存器內(nèi)容再加偏移量之和形成操作數(shù)的有效地址。即: EA=(基址寄存器)+(變址寄存器)+偏移量 如 : MOV A X,1234HBX+DI 或MOV AX,BX+DI+1234H 或MOV AX,1234HBXDI ;DS段 (BX)+(DI)+1234H中的字?jǐn)?shù)據(jù)送AX。18第18頁(yè),共106頁(yè)。11 帶位移的基址加比例間(變)址尋址(32位尋址)基址寄存器的內(nèi)容加變址寄存器內(nèi)容乘以比例因子再加上位移量之和,形成操作數(shù)的32位有效地址。即:EA =(基址寄存器)+
14、(變址寄存器)*比例因子+位移量如:MOV AX,EDI*8+EBX+40H MOV ECX,2000HEDX*4EAX比例變址尋址、基址加比例變址尋址、帶位移的基址加比例變址尋址只有32位尋址一種情況。19第19頁(yè),共106頁(yè)。與跳轉(zhuǎn)有關(guān)的尋址方式與跳轉(zhuǎn)有關(guān)的尋址方式用于確定程序轉(zhuǎn)移或調(diào)用的目標(biāo)。如:無(wú)條件轉(zhuǎn)移語(yǔ)句:JMP dst dst:轉(zhuǎn)移目標(biāo)調(diào)用語(yǔ)句:CALL dst dst:調(diào)用目標(biāo) 參見(jiàn)轉(zhuǎn)移和調(diào)用指令一節(jié)。練習(xí)題:假設(shè)(DS)=2000H, (ES)=2100H, (SS)=1500H, (SI)=00A0H, (BX)=0100H, (BP)=0040H,指令 MOV AX, s
15、rc中, 以下src為何種尋址方式?有效地址和物理地址各是多少? (1)100HBX (2)BX (3)BP (4)ES:BX+10H (5)BX (6)1000H (7)SI (8)1000HBX+SI (9)1000HBPSI (10)BXSI20第20頁(yè),共106頁(yè)。 第3節(jié) 80X86的指令系統(tǒng)一、指令格式 指令格式: 標(biāo)號(hào): 操作碼 操作數(shù), ;注釋 其中: 標(biāo)號(hào):確定匯編語(yǔ)句的位置,提供跳轉(zhuǎn)、循環(huán)的目標(biāo)。 操作碼:匯編語(yǔ)句操作。 操作數(shù):操作數(shù)據(jù)項(xiàng),數(shù)目因操作碼而異。 注釋:程序注解。 如:START:MOV AX,DATA MOV DS,AX ;設(shè)置DS21第21頁(yè),共106頁(yè)。
16、一條指常由6個(gè)字段組成,字段1為前綴字段,字段26為基本字段。1. 前綴字段前綴字段用于修改指令操作的某些屬性,為可選字段。 (1)段超越前綴:用于指明某個(gè)段寄存器取代指令中默認(rèn)的段寄存器。(2)操作數(shù)寬度前綴:用于改變當(dāng)前操作數(shù)的默認(rèn)寬度值。(3)地址寬度前綴:用于改變當(dāng)前地址的默認(rèn)寬度值。(4)重復(fù)前綴:用于重復(fù)串的操作。(5)總線鎖定前綴:用于產(chǎn)生LOCK信號(hào),防止其他設(shè)備中斷CPU在總線上的操作。22第22頁(yè),共106頁(yè)。2. 操作碼字段(OP Code)它規(guī)定了指令的操作性質(zhì)。此字段不可省咯。3. 尋址方式字段(mod r/m和s-i-b)此兩個(gè)字段稱為尋址方式說(shuō)明符字段。mod r
17、/m為主尋址字節(jié),而s-i-b為第二尋址字節(jié)。4. 位移量字段(Displ)當(dāng)尋址方式中需要位移量時(shí),指令中將出現(xiàn)此字段。其長(zhǎng)度為1,2,4個(gè)字節(jié),通常用帶符號(hào)數(shù)(補(bǔ)碼)表示。5. 立即數(shù)字段(Data)當(dāng)尋址方式是立即數(shù)尋址時(shí)需用此字段,其長(zhǎng)度為I,2,4個(gè)字節(jié),立即效字段總是該指令的最后字段。操作碼字段是必選字段,其它各字段可根據(jù)不同的尋址方式選用。23第23頁(yè),共106頁(yè)。二、指令系統(tǒng) 80X86的指令系統(tǒng)分為整數(shù)指令、浮點(diǎn)數(shù)指令和操作系統(tǒng)指令。 整數(shù)指令:數(shù)據(jù)傳送類、算術(shù)運(yùn)算類、邏輯運(yùn)算類、串操作類、控制轉(zhuǎn)移類、處理器控制類、高級(jí)和保護(hù)控制類指令等浮點(diǎn)數(shù)指令:數(shù)據(jù)傳送、算術(shù)運(yùn)算、比較、
18、超越函數(shù)、常量、控制等指令操作系統(tǒng)型指令24第24頁(yè),共106頁(yè)。 指令操作數(shù)符號(hào)說(shuō)明: OP1,OP2,OP3:操作數(shù) reg :通用寄存器。長(zhǎng)度可以是8位、16位、32位 reg8 :8位通用寄存器 reg16 :16位通用寄存器 reg32 :32位通用寄存器 Sreg :段寄存器(段選擇符) mem :存儲(chǔ)器。長(zhǎng)度可以是8位、16位、32位 mem8 :8位存儲(chǔ)器 mem16 :16位存儲(chǔ)器 mem32 :32位存儲(chǔ)器 imm :立即數(shù)。長(zhǎng)度可以是8位、16位、32位 imm8 :8位立即數(shù) 累加器:Acc I/O端口:Port src(源):源操作數(shù) dst(目標(biāo)):目標(biāo)操作數(shù)25第
19、25頁(yè),共106頁(yè)。與運(yùn)算有關(guān)的標(biāo)志標(biāo)志寄存器FLAGS中存放運(yùn)算結(jié)果的屬性。CF:進(jìn)位/借位標(biāo)志。加、減運(yùn)算最高位產(chǎn)生進(jìn)位/借位時(shí)置1。AF:輔助進(jìn)位/借位標(biāo)志。加、減運(yùn)算時(shí)低半字節(jié)位產(chǎn)生進(jìn)位/借位時(shí)置1。OF:溢出標(biāo)志。有符號(hào)數(shù)二進(jìn)制加、減運(yùn)算結(jié)果超出范圍時(shí)置1。ZF:零標(biāo)志。結(jié)果為零時(shí)置1。SF:符號(hào)標(biāo)志。結(jié)果為負(fù)時(shí)置1。PF:奇偶標(biāo)志。結(jié)果最低字節(jié)“1”的個(gè)數(shù)為偶數(shù)時(shí)置1。26第26頁(yè),共106頁(yè)。 指令執(zhí)行對(duì)標(biāo)志位影響的符號(hào)說(shuō)明: X :表示相應(yīng)標(biāo)志位狀態(tài)依運(yùn)算或操作結(jié)果決定 0 : 表示相應(yīng)標(biāo)志位無(wú)條件清“0” 1 :表示相應(yīng)標(biāo)志位無(wú)條件置“1” U : 表示相應(yīng)標(biāo)志位狀態(tài)未定義,
20、狀態(tài)隨機(jī) - : 表示相應(yīng)標(biāo)志位狀態(tài)不受影響,保持原狀態(tài) r : 恢復(fù)原來(lái)保存的值27第27頁(yè),共106頁(yè)。數(shù)據(jù)傳送類指令 用于實(shí)現(xiàn)存儲(chǔ)器與寄存器、寄存器與寄存器、累加器與I/O端口之間字節(jié)、字或雙字的傳送,也可將立即數(shù)傳送到存儲(chǔ)器或寄存器。這類指令基本上不影響標(biāo)志位。傳送指令MOV 指令格式:MOV OP1, OP2 reg/Sreg,reg reg, Sreg reg/Sreg, mem mem, reg/Sreg reg, imm mem, imm28第28頁(yè),共106頁(yè)。 功能:把OP2的內(nèi)容傳送到OP1中,OP1和OP2為字節(jié)、字或雙字 說(shuō)明:立即數(shù)只能作為源操作數(shù),而其他三種既可作
21、源操作數(shù)又可作目的操作數(shù); 存儲(chǔ)器和存儲(chǔ)器之間(串操作除外)以及段寄存器和段寄存器之間不允許傳數(shù),CS不能作目的操作數(shù),立即數(shù)不能直接送段寄存器,源操作數(shù)和目標(biāo)操作數(shù)不能一個(gè)是字節(jié)一個(gè)是字,類型要一致,立即數(shù)只能出現(xiàn)在源操作數(shù)位置。 例如:用如下指令可給數(shù)據(jù)段寄存器DS賦初值 MOV AX,DATA MOV DS, AX 再如:MOV EBX, 12345678H MOV AX, BX+2429第29頁(yè),共106頁(yè)。交換指令XCHG 指令格式:XCHG OP1, OP2 reg, reg mem,reg reg, mem 功能:用于交換兩個(gè)操作數(shù)。 說(shuō)明:指令中的兩個(gè)操作數(shù)可以是兩個(gè)寄存器操作
22、數(shù),或一個(gè)寄存器與一個(gè)存儲(chǔ)器操作數(shù)。 例如:XCHG AX, BX XCHG AX, BX XCHG BX+20H, AX30第30頁(yè),共106頁(yè)。I/O指令I(lǐng)N和OUT 指令格式: IN OP1,OP2 OUT OP1, OP2 AL, imm8 imm8, AL AX,imm8 imm8, AX EAX,imm8 imm8, EAX AL, DX DX, AL AX, DX DX, AX EAX,DX DX, EAX 功能:用于在I/O端口和CPU之間的信息交換,只能用AL、AX或EAX接收或發(fā)送數(shù)據(jù)。 31第31頁(yè),共106頁(yè)。 例如: IN AL,0FAH ;從端口FAH讀一個(gè)字節(jié)到A
23、L IN EAX,28H ; 從端口28H讀一個(gè)雙字到EAX MOV DX,3AEH; I/O地址大于255時(shí)應(yīng)通過(guò) DX間接尋址 IN AX,DX ;從DX指定的端口讀入一個(gè)字到AX OUT 21H,AL ;將8位數(shù)從AL輸出到端口21H OUT DX,EAX ;將32位數(shù)從EAX輸出到DX指 定的端口32第32頁(yè),共106頁(yè)。裝入有效地址指令LEA 格式: LEA OP1, OP2 reg32,mem reg16,mem 功能:將有效地址(即偏移地址)送通用寄存器。 例如:LEA ECX, DOLLARESI*4+EDX 設(shè): EDX=30H,ESI=32H,DOLLAR=7580H, 則
24、 ( ECX)=7678H(32H*4 + 30H +7580H)33第33頁(yè),共106頁(yè)。裝入全地址指令LDS,LES,LFS.LGS,LSS 格式: LDS reg,mem LES reg,mem LFS reg,mem LGS reg,mem LSS reg,mem 功能:取mem指示的32位或48位全地址指針,裝入段寄存器和16位或32位reg中。 34第34頁(yè),共106頁(yè)。 對(duì)于實(shí)地址方式和虛擬8086方式,段基址和偏移地址都是16位 ,段基址送段寄存器,偏移地址送reg中。 例如:X DD 12345678H LDS SI ,X ;DS=1234H,SI=5678H 對(duì)于16位和3
25、2位保護(hù)方式,選擇符送段寄存器,偏移地址送reg中。 例如:X1 DF 123456780010H; 32位偏移值+ 16 位選擇符 LDS ESI,X1 ; DS=1234H , ESI=56780010H 35第35頁(yè),共106頁(yè)。壓棧/彈棧指令PUSH/POP 格式:PUSH OP1 POP OP1 imm16 mem16 imm32 mem32 mem16 reg16 mem32 reg32 reg16 功能: reg32 PUSH指令使(E)SP的內(nèi)容減2或減4,然后把16位或32位的立即數(shù)、存儲(chǔ)器操作數(shù)或寄存器操作數(shù)壓入堆棧, SS:(E)SP指向新的棧頂。 POP指令從堆棧把字或
26、雙字彈出至16位或32位存儲(chǔ)器或通用寄存器中,(E)SP的內(nèi)容加2或加4。 36第36頁(yè),共106頁(yè)。例如:PUSH AX;(SP)-2 SP,(AX) (SP) PUSH BX;(SP)-2 SP,(BX) (SP) PUSH CX;(SP)-2 SP,(CX) (SP) . . . POP CX;(SP) CX,(SP)+2 SP POP BX;(SP) BX,(SP)+2 SP POP AX;(SP) AX,(SP)+2 SP 堆棧為“先進(jìn)后出”的數(shù)據(jù)結(jié)構(gòu)。37第37頁(yè),共106頁(yè)。棧底棧底SPSP00H20H60H30H40H60H棧頂SSSS圖A圖B設(shè): AX=6040H,BX=30
27、60H,CX=2000H 執(zhí)行PUSH指令后,堆棧狀態(tài)如圖A,執(zhí)行POP指令后,堆棧狀態(tài)如圖B。38第38頁(yè),共106頁(yè)。已知(IP)=1000H,(SP)=2000H,(BX)=283FH,CALL WORD PTRBX指令的機(jī)器碼是FF17H,試問(wèn)執(zhí)行該指令后,SS:1FFEH的值是多少?( )(A) 28H (B) 3FH (C) 00 (D) 02H39第39頁(yè),共106頁(yè)。全部通用寄存器壓棧和出棧指令格式:PUSHA/POPA;16位通用寄存器壓棧和 出棧指令。入棧順序?yàn)椋?AX、CX、DX、 BX、 SP、BP、SI和DI。 PUSHAD/POPAD;32位通用寄存器壓棧和 出棧指
28、令。入棧順序?yàn)椋?EAX、ECX、EDX、EBX、 ESP、EBP、ESI和EDI。 其中:SP和ESP為操作前的棧頂指針。 40第40頁(yè),共106頁(yè)。 標(biāo)志寄存器傳送指令指令格式:LAHF ; F寄存器內(nèi)容送AH指令SAHF ; AH內(nèi)容送F寄存器指令PUSHF ; 16位F內(nèi)容進(jìn)棧指令(保存F)POPF ; 16位F內(nèi)容出棧指令(恢復(fù)F)PUSHFD;32位F內(nèi)容進(jìn)棧指令(保存F)POPD ;32位F內(nèi)容出棧指令(恢復(fù)F)41第41頁(yè),共106頁(yè)。查表轉(zhuǎn)換指令XLAT 格式:XLAT ; AL (BX)+(AL) 功能:完成一個(gè)字節(jié)的查表轉(zhuǎn)換 BX指向表的首地址(DS段內(nèi)),AL裝入要轉(zhuǎn)換
29、的代碼在表中的序號(hào),并XLAT指令執(zhí)行的結(jié)果存于AL中。 例如:查找ASCII碼表中, (BX) 3的ASCII碼。 程序如下: (BX)+(AL) MOV DS,AX LEA BX,TABLE;DS段表的首地址送BX MOV AL,3 ;要轉(zhuǎn)換的代碼在表中的序號(hào)3送AL XLAT ;AL (BX)+(AL),查找到的3的 ASCII碼33H保存在AL中序號(hào)01234.TABLE 30H 31H 32H 33H 34H . . 42第42頁(yè),共106頁(yè)。算術(shù)運(yùn)算指令 支持加、減、乘、除四種基本算術(shù)運(yùn)算,其操作對(duì)象可以是字節(jié)、字、雙字的二進(jìn)制整數(shù),也可以是壓縮、非壓縮BCD碼。算術(shù)運(yùn)算指令一般會(huì)
30、影響FLAGS寄存器中的狀態(tài)標(biāo)志。加法和減法指令A(yù)DD/SUB格式:ADD OP1,OP2; OP1 OP1+OP2,置標(biāo)志位 reg, reg reg, mem reg, imm mem,reg mem,imm43第43頁(yè),共106頁(yè)。ADD的功能:將OP1和OP2相加,結(jié)果存放在OP1。例:ADD AX,BX ; AX (AX)+(BX)ADD EBX,ECX ;EBX (EBX)+(ECX)ADD 3000H,AX ;3000H (3000H)+(AX)ADD 3000H,23 ; 3000H (3000H)+23SUB OP1,OP2 ; OP1 OP1-OP2 ,置標(biāo)志位 reg,
31、reg reg, mem reg, imm mem,reg mem,imm44第44頁(yè),共106頁(yè)。SUB的功能:從OP1中減去OP2,結(jié)果存OP1中。例:SUB AX,BX ; AX (AX)-(BX) SUB EAX,ECX ;EAX (EAX)-(ECX) SUB N,12345678H; N (N)-12345678HADD和SUB對(duì)標(biāo)志位的影響:OF SF ZF AF PF CFX X X X X X例:設(shè)AL=64H,AH=0A8H,求執(zhí)行下列指令的結(jié)果和標(biāo)志位的狀態(tài)。 (1) ADD AL,AH ; AL (AL)+(AH),有符號(hào)數(shù).解:01100100 100D 得: (AL
32、)=0CH(正確) + 10101000 -88D OF SF ZF AF PF CF 1 00001100 12D 0 0 0 0 1 145第45頁(yè),共106頁(yè)。(2) SUB AL,AH ; AL (AL)-(AH),有符號(hào)數(shù).解:| 01100100 100D 得: (AL)=BCH(不正確) - 10101000 -88D OF SF ZF AF PF CF 10111100 -68D 1 1 0 1 0 1 有符號(hào)數(shù)加、減的結(jié)果有“溢出”的判斷規(guī)則: 對(duì)于加法: 正數(shù)+正數(shù)=負(fù)數(shù),負(fù)數(shù)+負(fù)數(shù)=正數(shù) 對(duì)于減法: 正數(shù)-負(fù)數(shù)=負(fù)數(shù), 負(fù)數(shù)-正數(shù)=正數(shù) 例:設(shè)(AL)=7FH,(BL)=
33、40H,判斷執(zhí)行ADD AL,BL指令的結(jié)果是否正確。解: 01111111 127D 得: (AL)=0BFH(不正確) + 01000000 64D OF SF ZF AF PF CF 10111111 -65D 1 1 0 0 0 046第46頁(yè),共106頁(yè)。帶進(jìn)/借位的加、減法指令A(yù)DC/SBB格式:ADC OP1,OP2;OP1 OP1+OP2+CF ,置標(biāo)志位 reg, reg reg, mem reg, imm mem,reg mem,immADC的功能:將OP1、OP2和進(jìn)位標(biāo)志位CF相加,結(jié)果存放在OP1。例: ADC AX,375 ; AX (AX)+375+CF ADC
34、EBX,ECX;EBX (EBX)+(ECX)+CF47第47頁(yè),共106頁(yè)。SBB OP1,OP2; OP1 OP1-OP2-CF ,置標(biāo)志位 reg, reg reg, mem reg, imm mem,reg mem,immSBB的功能:從OP1中減去OP2,再減去借位標(biāo)志CF,結(jié)果存OP1中。例: SBB AX,BX;AX (AX)-(BX)-CF SBB ECX,456789ABH; ADC和SBB對(duì)標(biāo)志位的影響: OF SF ZF AF PF CF X X X X X X48第48頁(yè),共106頁(yè)。格式:DEC OP1 ; OP1 OP1-1,置標(biāo)志位 mem reg功能:INC使操
35、作數(shù)的值加1;DEC使操作數(shù)的值減1,常用于修改計(jì)數(shù)器或地址指針。例:下面是從300H端口輸出256個(gè)字節(jié)數(shù)據(jù)的程序段:BUFFER DB 12,34, MOV CX,256 MOV SI,OFFSET BUFFER MOV DX,300HNEXT :MOV AL,SI OUT DX,AL INC SI ;地址加1,取下一個(gè)數(shù) LOOP NEXT ;未完,繼續(xù)49第49頁(yè),共106頁(yè)。INC和DEC對(duì)標(biāo)志位的影響:OF SF ZF AF PF X X X X X 交換加法指令XADD 格式:XADD OP1,OP2;OP1 OP1+OP2 OP2 OP1 功能:OP1與OP2相加,結(jié)果存于OP
36、1中,并將OP1的值送OP2中。 例:XADD EAX,ECX ;EAX (EAX)+(ECX) ECX (EAX)變反指令NEG 格式:NEG OP1 ;OP1 0-OP1,置標(biāo)志位 功能:求OP1的相反數(shù)。50第50頁(yè),共106頁(yè)。ADD 和ADC、SUB和SBB經(jīng)常配合使用,完成64位加、減法運(yùn)算。例:ADD EAX,ECX;EAX (EAX)+(ECX)ADC EBX,EDX;EBX (EBX)+(EDX)+CFSUB EAX,ECX ;EAX (EAX)-(ECX) SBB EBX,EDX ;EBX (EBX)-(EDX)-CF加1/減1指令I(lǐng)NC/DEC格式:INC OP1; OP
37、1 OP1+1,置標(biāo)志位 mem reg 51第51頁(yè),共106頁(yè)。例:NEG AL ;AL 0-(AL)若(AL)=13H,執(zhí)行NEG指令后,(AL)=EDH比較指令CMP格式:CMP OP1,OP2;OP1-OP2,置標(biāo)志位 reg, reg reg, mem reg, imm mem,reg mem,imm功能:將OP1減去OP2,但結(jié)果不存在OP1中,只使結(jié)果影響標(biāo)志位。 CMP指令用于比較OP1與OP2的大小,由標(biāo)志位來(lái)反映兩數(shù)的關(guān)系(見(jiàn)表A)。52第52頁(yè),共106頁(yè)。 A-B CF ZF SF OF A=B 0 1 0 0 AB 0 0 - - AB - 0 0/1 0/1表A
38、比較并交換指令CMPXCHG 格式:CMPXCHG OP1,OP2 功能:將OP1與累加器(AL、AX或EAX)的內(nèi)容進(jìn)行比較,若相等則將OP2存于OP1中;否則將OP1送到累加器中。例:CMPXCHG CX,DX;若(CX)=(AX) 則CX (DX),否則AX (CX)第53頁(yè),共106頁(yè)。無(wú)符號(hào)數(shù)乘法指令MUL 格式:MUL OP1 reg mem 功能:被乘數(shù)隱含在累加器中(AL,AX,EAX),OP1為乘數(shù)。字節(jié)運(yùn)算時(shí)乘積返回到AX;字運(yùn)算時(shí)乘積 返 回 到 DX:AX;雙 字 運(yùn) 算 時(shí) 乘 積 返 回 到 EDX:EAX。源操作數(shù)不能是立即數(shù)。例:MUL CL; AX ( AL)
39、*(CL) MUL BX;DX:AX (AX)*(BX) MUL DWORDESI;EDX:EAX (EAX)*(ESI) MUL指令影響標(biāo)志位 OF和 CF: 若積的高字節(jié)、字或雙字為“0”,則OF、CF清“0”,否則OF、CF置“1”。54第54頁(yè),共106頁(yè)。 有符號(hào)乘法指令I(lǐng)MUL 指令格式有下列三種: (1)單操作數(shù):IMUL OP1 reg mem 功能:被乘數(shù)隱含在累加器中(AL,AX,EAX),OP1為乘數(shù)。字節(jié)運(yùn)算時(shí)乘積返回到AX;字運(yùn)算時(shí)乘積 返 回 到 DX:AX;雙 字 運(yùn) 算 時(shí) 乘 積 返 回 到 EDX:EAX。 (2)雙操作數(shù):IMUL OP1,OP2 reg,
40、 reg reg, mem reg, imm功能:OP1乘以O(shè)P2,積存放在OP1中。Reg為16或32位。55第55頁(yè),共106頁(yè)。 (3)三操作數(shù):IMUL OP1,OP2,OP3 reg, reg, imm reg, mem, imm 功能:OP2乘以O(shè)P3,積存放在OP1中。reg為16位。 例如: IMUL DL ;AX (AL)*(DL) IMUL EBX ;EDX:EAX (EAX)*(EBX) IMUL BX,CX ;BX (BX)*(CX) IMUL BX,CX,4 ;BX (CX)*4IMUL指令影響標(biāo)志位 OF 和 CF對(duì)(1)若乘積的高半部分是低半部分的符號(hào)位的擴(kuò)展,則
41、CF=OF=0,否則CF=OF=1。對(duì)(2)、(3)如果乘積超過(guò)目標(biāo)寄存器所能 存儲(chǔ)的范圍,則系統(tǒng)將置溢出標(biāo)志OF為1。56第56頁(yè),共106頁(yè)。除法指令DIV/IDIV 格式:DIV OP1 ;無(wú)符號(hào)除法 reg mem IDIV OP1 ;有符號(hào)除法 reg mem 功能: 字節(jié)運(yùn)算時(shí),被除數(shù)隱含在AX中,OP1為字節(jié)除數(shù),商存入AL,余數(shù)存入AH。 字運(yùn)算時(shí),被除數(shù)隱含在DX:AX中,OP1為字除數(shù),商存入AX,余數(shù)存入DX 雙字運(yùn)算時(shí),被除數(shù)隱含在EDX:EAX中,OP1為雙字除數(shù),商存入EAX,余數(shù)存入EDX。57第57頁(yè),共106頁(yè)。 例如: DIV BL ;(AX)/(BL),商
42、存入AL,余數(shù)存入AH。 IDIV ECX ;(EDX:EAX)/(ECX) 商存入EAX,余數(shù)存入EDX。 符號(hào)擴(kuò)展指令 格式: CBW ;將AL中8位帶符號(hào)數(shù)擴(kuò)展為16位存入AX。 CWD ;將AX中16位帶符號(hào)數(shù)擴(kuò)展為32位存入DX:AX CWDE;將AX中16位帶符號(hào)數(shù)擴(kuò)展為32位 存入EAX。 CDQ ;將EAX中32位帶符號(hào)數(shù)擴(kuò)展為64位 存入 EDX:EAX。58第58頁(yè),共106頁(yè)。符號(hào)擴(kuò)展指令常用于帶符號(hào)數(shù)除法運(yùn)算時(shí),對(duì)被除數(shù)位數(shù)的擴(kuò)展。當(dāng)兩個(gè)帶符號(hào)數(shù)的字節(jié)/字/雙字?jǐn)?shù)相除時(shí),必須將被除數(shù)擴(kuò)展為雙倍長(zhǎng)度。例如:編寫程序,計(jì)算789AH/1234H。BUFFER DW 789A
43、H ;被除數(shù) DW 1234H ;除數(shù) DD 0 ;存結(jié)果 START: MOV BX,OFFSET BUFFER MOV AX,BX ;取被除數(shù) CWD ;字?jǐn)U展為雙字,AX符 號(hào)位擴(kuò)展到DX各位 IDIV 2BX ;帶符號(hào)除 MOV 4BX,AX ;存商 MOV 6BX,DX ;存余數(shù)59第59頁(yè),共106頁(yè)。 十進(jìn)制(BCD碼)調(diào)整指令 壓縮BCD碼運(yùn)算:將壓縮BCD數(shù)用二進(jìn)制加、減指令 (ADD, SUB, ADC, SBC)運(yùn)算,運(yùn)算結(jié)果必須用以下調(diào)整指 令調(diào)整為壓縮BCD數(shù)的結(jié)果。 指令格式及功能: DAA ;將AL中的和調(diào)整為壓縮BCD數(shù) DAS ;將AL中的差調(diào)整為壓縮BCD數(shù)
44、 非壓縮BCD字節(jié)數(shù)加、減、乘、除(ASCII調(diào)整) 非壓縮BCD碼運(yùn)算:將非壓縮BCD數(shù)用二進(jìn)制加、減、乘、除指令運(yùn)算,配合相應(yīng)的調(diào)整。 AAA ;將AL中的和調(diào)整為非壓縮BCD數(shù) AAS ;將AL中的差調(diào)整為非壓縮BCD數(shù) AAM ;將AL中的積調(diào)整為非壓縮BCD數(shù) AAD ;調(diào)整AX中的被除數(shù),相除的商即為非壓縮BCD數(shù)第60頁(yè),共106頁(yè)。DAA: 若AL的低4位9AF=1,則: (AL)(AL)+6,AF1;若AL的高4位9CF=1,則: (AL)(AL)+60H,CF1。 DAS:若AL的低4位9AF=1,則: AL(AL)-6,AF1;若AL的高4位9CF=1,則: AL(AL)
45、-60H,CF1。 61第61頁(yè),共106頁(yè)。AAA: 如果AL的低4位9 或AF=1,則: AL(AL)+6,AH(AH)+1,AF1 AL(AL)0FH) CFAF否則AL(AL)0FHAAS: 如果AL的低4位9或AF=1,則: AL(AL)-6,AH(AH)-1,AF1 AL(AL)0FH CFAF否則AL(AL)0FH。 62第62頁(yè),共106頁(yè)。AAM:AH(AL)/0AH,AL(AL)%0AH AAD: AL(AH)10+(AL),AH0 63第63頁(yè),共106頁(yè)。BCD碼運(yùn)算編程舉例例1 求組合BCD數(shù)1283+2574=3857 BCD1 DB 83H,12H BCD2 DB
46、 74H,25H BCD3 DB ?, ?START: MOV AL,BCD1 ADD AL,BCD2 DAA ;調(diào)整,(AL)=57H MOV BCD3,AL ;存和的底字節(jié) MOV AL,BCD1+1 ADC AL,BCD2+1 DAA ;調(diào)整,(AL)=38H MOV BCD+1,AL ;存和的高字節(jié)64第64頁(yè),共106頁(yè)。例2 兩個(gè)ASCII碼數(shù)(7-5)相減 MOV AL, 7 ;37H SUB AL, 5 ;37H-35H AAS ;調(diào)整,(AL)=02H例3 非組合BCD數(shù)6*8=48 MOV AL, 06H MOV BL, 08H MUL BL ;AX (AL)*(BL) A
47、AM ;調(diào)整,(AX)=0408H例4 非組合BCD數(shù)17/5=3余2 MOV AX,0107H MOV BL, 05H AAD ;調(diào)整被除數(shù),(AX)=0011H DIV BL ;相除,(AL)=03,(AH)=02第65頁(yè),共106頁(yè)。邏輯運(yùn)算與移位指令 這類指令包括與、或、非、異或、測(cè)試和左移、 右移、循環(huán)左/右移指令。除NOT外,都影響某些標(biāo)志位(OF、CF、PF、SF、ZF),對(duì)AF無(wú)影響或隨機(jī)。 邏輯與/或/異或指令A(yù)ND/OR/XOR格式:AND/OR/XOR OP1, OP2 reg,mem reg,imm mem,reg mem,imm功能:兩操作數(shù)按位與、或、異或,結(jié)果存入
48、OP1中。第66頁(yè),共106頁(yè)。例如:MOV AL,6 AND AL,0FH ;(AL)=06H MOV AL,6 OR AL,30H ;(AL)=36H MOV AL,0F0H XOR AL,0F0H ;(AL)=00H 測(cè)試指令TEST 格式:TEST OP1,OP2 reg, reg reg,mem reg,imm功能:兩操作數(shù)按位與,置標(biāo)志位,不保存結(jié)果。 67第67頁(yè),共106頁(yè)。TEST常用于測(cè)試某位的狀態(tài)。例如測(cè)試打印機(jī)是否空閑的程序段如下: MOV DX,3BDHPRTBUSY:IN AL,DX ;讀打印機(jī)狀態(tài) TEST AL,80H ;測(cè)試是否空閑 JZ PRTBUSY ;忙
49、,繼續(xù)測(cè)試 . . .邏輯非指令NOT格式: NOT OP1 reg mem功能:將操作數(shù)各位求反,對(duì)標(biāo)志位沒(méi)有影響.68第68頁(yè),共106頁(yè)。算術(shù)/邏輯左移指令SAL/SHL格式: SAL/SHL OP1, OP2 reg, imm8 mem,imm8 reg, CL mem, CL 功能:將OP1向左移位,移動(dòng)的次數(shù)由OP2決定,若移動(dòng)的次數(shù)為1,OP2為立即數(shù),其它情況將移動(dòng)的次數(shù)送入CL中。操作數(shù)每左移一位,在最低位補(bǔ)0,最高位移進(jìn)CF中。 例:設(shè)(AL)=01010011B,將AL的內(nèi)容左移3位。 MOV CL,3 SHL AL,CL ; (AL)=1001100069第69頁(yè),共1
50、06頁(yè)。算術(shù)/邏輯右移指令SAR/SHR 格式: SAR/SHR OP1, OP2 reg, imm8 mem,imm8 reg, CL mem, CL 功能:將OP1向右移位,移動(dòng)的次數(shù)由OP2決定,若移動(dòng) 的次數(shù)為1,OP2為立即數(shù),其它情況將移動(dòng)的次數(shù)送入CL 中。 對(duì)于SHR指令,操作數(shù)為無(wú)符號(hào)數(shù),每右移一位,在最高位補(bǔ)0,最低位移進(jìn)CF中。 對(duì)于SAR指令,操作數(shù)為有符號(hào)數(shù),每右移一位,最高位保持不變,最低位移進(jìn)CF中。70第70頁(yè),共106頁(yè)。71第71頁(yè),共106頁(yè)。例:設(shè)(AL)=10101001B,將AL的內(nèi)容算術(shù)/邏輯右移3位。算術(shù)右移3位: MOV CL,3 SAR AL
51、,CL;(AL)=11110101B邏輯右移3位: MOV CL,3 SHR AL,CL; (AL)= 00010101B 72第72頁(yè),共106頁(yè)。循環(huán)移位指令ROL/ROR/RCL/RCR格式:ROL/ROR/RCL/RCR OP1, OP2 reg,imm8 mem,imm8 reg,CL mem,CL功能:ROL 為左循環(huán)移位指令,ROR為右循環(huán)移位指令,RCL和RCR則分別為帶CF的左循環(huán)移位和右循環(huán)移位指令。CFCFCFCFROLRORRCLRCR73第73頁(yè),共106頁(yè)。串操作指令 串操作是指對(duì)存儲(chǔ)器中的一個(gè)或多個(gè)長(zhǎng)度為字節(jié)、字或雙字的字符串進(jìn)行操作,包括串傳送、串裝入、串存儲(chǔ)、
52、串比較、串掃描、串輸入、串輸出等。 串操作指令采用隱含尋址方式,約定: DS:SI(ESI)尋址源串,ES:DI(EDI)尋址目的串。 且偏移指針SI(ESI),DI(EDI)可根據(jù)DF方向標(biāo)志自動(dòng)增量或減量,以指向串中下一項(xiàng)。即: 當(dāng)DF=0時(shí),增1(字節(jié))、2(字)或4(雙字) 當(dāng)DF=1時(shí),減1(字節(jié))、2(字)或4(雙字)74第74頁(yè),共106頁(yè)。串傳送指令格式:MOVSB ;字節(jié)傳送 MOVSW ;字傳送 MOVSD ;雙字傳送功能:將DS:SI(ESI)指定源串中的數(shù)據(jù)傳送到ES:DI(EDI)指定的目的串中,并修自動(dòng)改源、目指針。串裝入指令格式:LODSB ;裝入字節(jié)串 LODS
53、W ;裝入字串 LODSD ;裝入雙字串功能:將 DS:SI(ESI)指定源串中的數(shù)據(jù)傳送到AL、AX或EAX中,并自動(dòng)修改源指針。75第75頁(yè),共106頁(yè)。串比較指令格式:CMPSB ;字節(jié)串比較 CMPSW ;字串比較 CMPSD ;雙字串比較功能:將DS:SI(ESI)指定源串中的數(shù)據(jù)與ES:DI(EDI)指定的目的串中的數(shù)據(jù)進(jìn)行比較,置標(biāo)志位并自動(dòng)修改指針。串存儲(chǔ)指令格式:STOSB ;存字節(jié)串 STOSW ;存字串 STOSD ;存雙字串功能:將AL、AX或EAX中的數(shù)據(jù)傳送到由ES:DI(EDI)指定的目的串中,并修改指針。 76第76頁(yè),共106頁(yè)。串掃描指令格式:SCASB ;
54、掃描字節(jié)串 SCASW ;掃描字串 SCASD ;掃描雙字串功能:用AL、AX或EAX中的數(shù)據(jù)減去由ES:DI(EDI)指定的目的串中的數(shù)據(jù),置標(biāo)志位并自動(dòng)修改目的指針。 串輸入指令格式:INSB ;輸入字節(jié)串 INSW ;輸入字串 INSD ;輸入雙字串功能:從DX指定的端口輸入數(shù)據(jù)至由ES:DI(EDI)指定的目的串中,并自動(dòng)修改目的指針。77第77頁(yè),共106頁(yè)。串輸出指令格式:OUTSB ;輸出字節(jié)串 OUTSW ;輸出字串 OUTSD ;輸出雙字串功能:將 DS:SI(ESI)指定源串中的數(shù)據(jù)輸出到由DX指定的端口,并自動(dòng)修改源指針。 重復(fù)前綴REP/REPZ/REPE/REPNE/
55、REPNZ 在串操作指令前加上重復(fù)前綴,可使該指令重復(fù)執(zhí)行。重復(fù)前綴的功能為: REP: CX (CX)-1 ,當(dāng)(CX) 0時(shí)重復(fù)。 REPZ/REPE:相等時(shí)重復(fù)。即: CX (CX)-1,當(dāng)(CX) 0且ZF=1時(shí)重復(fù)。 REPNE/REPNZ:不相等時(shí)重復(fù)。即: CX (CX)-1,當(dāng)(CX) 0且ZF=0時(shí)重復(fù)。 REP常與MOVS和STOS指令配合使用。 REPZ/REPE 和REPNE/REPNZ常與CMPS和SCAS指令配合使用。78第78頁(yè),共106頁(yè)。串操作指令應(yīng)用舉例 使用串操作指令時(shí),根據(jù)需要設(shè)置以下內(nèi)容: 設(shè)置DS:SI(ESI);ES:DI(EDI)設(shè)置DF標(biāo)志設(shè)置
56、CX(ECX)選用重復(fù)前綴REP、REPE/REPZ、REPNE/REPNZ79第79頁(yè),共106頁(yè)。例1 將數(shù)據(jù)段中的字符串ABC45傳送到附加段中。程序如下:DATA SEGMENT ST:MOV AX,DATA YCH DB ABC45 MOV DS,AX DATA ENDS MOV AX,EXTRA EXTRA SEGMENT MOV ES,AX MCH DB 5 DUP(?) LEA SI,YCHEXTRA ENDS LEA DI,MCHCODE SEGMENT MOV CX,5 ASSUME CS:CODE CLD ASSUME DS:DATA REP MOVSB ASSUME E
57、S:EXTRA CODE ENDS END ST 80第80頁(yè),共106頁(yè)。 控制轉(zhuǎn)移指令 控制轉(zhuǎn)移指令包括: 無(wú)條件轉(zhuǎn)移指令(JMP) 條件轉(zhuǎn)移指令(JA、JB、JE) 循環(huán)控制指令(LOOP、LOOPZ、LOOPNZ) 調(diào)用/返回指令(CALL、RET) 中斷/中斷返回指令(INT、IRET)無(wú)條件轉(zhuǎn)移指令JMP格式:JMP OP1 lable ;標(biāo)號(hào) reg mem 功能:無(wú)條件地控制程序轉(zhuǎn)移到OP1所指定的目標(biāo)地址。81第81頁(yè),共106頁(yè)。JMP尋址方式:短轉(zhuǎn)移:在段內(nèi)的短距離(-128-127)轉(zhuǎn)移。段內(nèi)轉(zhuǎn)移:CS值不變,只給出地址偏移值。段間轉(zhuǎn)移:CS和(E)IP的值都發(fā)生改變的
58、轉(zhuǎn)移為明確表示標(biāo)號(hào)或存儲(chǔ)單元的類型,可在操作數(shù)前加SHORT、NEAR、FAR、WORD、DWORD、FWORD等修飾符來(lái)限定,默認(rèn)近轉(zhuǎn)移。如:段內(nèi)直接短轉(zhuǎn)移:JMP SHORT 標(biāo)號(hào)段內(nèi)直接近轉(zhuǎn)移:JMP NEAR PTR 標(biāo)號(hào)(范圍:16位)段內(nèi)間接轉(zhuǎn)移:JMP reg 或 WORD PTR mem段間直接轉(zhuǎn)移:JMP FAR PTR 標(biāo)號(hào)或JMP segment:offset 段間間接轉(zhuǎn)移:JMP DWORD PTR mem(低16位:IP,高16位:CS)(直接:直接給出,間接:寄存器或存儲(chǔ)器給出) 82第82頁(yè),共106頁(yè)。例如: JMP NEAR PTR TABLE ;帶標(biāo)號(hào)的段內(nèi)
59、轉(zhuǎn)移 JMP FAR PTR TABLE ;帶標(biāo)號(hào)的段間轉(zhuǎn)移 JMP SHORT TABLE ;帶標(biāo)號(hào)的短轉(zhuǎn)移 JMP WORD PTR DX ;16位尋址時(shí)不帶標(biāo)號(hào)的段內(nèi)轉(zhuǎn)移 JMP DWORD PTRDX ;16位尋址時(shí)不帶標(biāo)號(hào)的段間轉(zhuǎn)移 JMP DWORD PTREDX;32位尋址時(shí)不帶標(biāo)號(hào)的段間轉(zhuǎn)移 JMP FWORD PTREDX;32位尋址時(shí)不帶標(biāo)號(hào)的段間轉(zhuǎn)移83第83頁(yè),共106頁(yè)。條件轉(zhuǎn)移指令Jcc (p77表)格式:Jcc OP1 lable ;短標(biāo)號(hào)或近標(biāo)號(hào)功能:根據(jù)CPU中的標(biāo)志位狀態(tài)組成的轉(zhuǎn)移條件CC,決定程序的執(zhí)行流向。 共19條指令,分為無(wú)符號(hào)數(shù)和有符號(hào)數(shù)的條件轉(zhuǎn)移
60、,執(zhí)行后均不影響標(biāo)志位84第84頁(yè),共106頁(yè)。單標(biāo)志位條件轉(zhuǎn)移:指令助記符 轉(zhuǎn)移條件 說(shuō)明JC CF=1 有進(jìn)位轉(zhuǎn)移JNC CF=0 無(wú)進(jìn)位轉(zhuǎn)移JE/JZ ZF=1 等于/為零轉(zhuǎn)移JNE/JNZ ZF=0 不等于/非零轉(zhuǎn)移JO OF=1 有符號(hào)數(shù)結(jié)果溢出轉(zhuǎn)移JNO OF=0 有符號(hào)數(shù)結(jié)果不溢出轉(zhuǎn)移JP/JPE PF=1 結(jié)果低8位奇偶校驗(yàn)為偶轉(zhuǎn)移JNP/JNPE PF=0 結(jié)果低8位奇偶校驗(yàn)為奇轉(zhuǎn)移JS SF=1 結(jié)果為負(fù)時(shí)轉(zhuǎn)移 JNS SF=0 結(jié)果為非負(fù)時(shí)轉(zhuǎn)移 85第85頁(yè),共106頁(yè)。無(wú)符號(hào)數(shù)條件轉(zhuǎn)移指令:指令助記符 轉(zhuǎn)移條件 說(shuō)明JA/JNBE CF=ZF=0 高于/不低于或等于轉(zhuǎn)移
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 健康檔案管理與質(zhì)量控制制度
- 2024年物聯(lián)網(wǎng)設(shè)備研發(fā)生產(chǎn)合同
- 2024年人力資源管理咨詢服務(wù)合同
- 工程機(jī)械駕駛員聘用合同
- 環(huán)保新材料研發(fā)與生產(chǎn)合同
- 貨物購(gòu)買合同范文(三)(35篇)
- 2024年急救站值班制度(2篇)
- 變配電室缺陷管理制度(2篇)
- 幼兒園教師節(jié)活動(dòng)策劃方案樣本(二篇)
- 發(fā)電廠運(yùn)行部安全生產(chǎn)管理制度(4篇)
- 關(guān)于智障兒童教育學(xué)后感【三篇】
- 可編輯修改中國(guó)地圖模板
- 1:青巖古鎮(zhèn)發(fā)展及規(guī)劃
- 物理學(xué)發(fā)展簡(jiǎn)史
- 化學(xué)反應(yīng)工程(第三版)第七章-流化床反應(yīng)器
- PPT模板中華餐飲美食烤魚宣傳PPT課件
- 含氮有機(jī)化合物-胺、酰胺、尿素、丙二酰脲、胍、磺胺、吡咯、吡啶和嘧啶的結(jié)構(gòu)及化學(xué)性質(zhì)熟悉
- 電動(dòng)車項(xiàng)目合作計(jì)劃書范文模板
- 雙柱基礎(chǔ)暗梁的計(jì)算書
- JJF 1175-2021 試驗(yàn)篩校準(zhǔn)規(guī)范_(高清-最新版)
- 迷路了怎么辦PPT課件
評(píng)論
0/150
提交評(píng)論