尋址方式和指令系統(tǒng)_第1頁
尋址方式和指令系統(tǒng)_第2頁
尋址方式和指令系統(tǒng)_第3頁
尋址方式和指令系統(tǒng)_第4頁
尋址方式和指令系統(tǒng)_第5頁
已閱讀5頁,還剩59頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第3章 尋址方式和指令系統(tǒng)l3.1 尋址方式l3.2 8086指令系統(tǒng)l3.3 80X86與Pentium擴(kuò)充和增加的指令3.1 尋址方式l3.1.1 立即數(shù)尋址l3.1.2 寄存器尋址l3.1.3 直接尋址l3.1.4 寄存器間接尋址l3.1.5 存儲(chǔ)器相對(duì)尋址l3.1.6 基址變址尋址l3.1.7 基址變址相對(duì)尋址l3.1.8 寄存器比例尋址返返 回回3.1.1 立即數(shù)尋址l立即數(shù),操作數(shù)直接包含在指令中,作為指令的一部分存放在代碼段中l(wèi)例3-1lMOV AX,2004H ;(AH)=20H,(AL)=04HlMOV BL, 5AH ;(BL)=5AHlMOV EAX,22334455H

2、;(EAX)=22334455H, (AX)=4455Hl立即數(shù)常用于給寄存器賦初值,只能作源操作數(shù),不能作目的操作數(shù) 返返 回回3.1.2 寄存器尋址l操作數(shù)存放在指令指定的8位、16位或32位通用寄存器中。l例3-2 寄存器尋址lMOV AX,BX ; 將BX中的內(nèi)容送入AX中,l BX中的內(nèi)容保持不變lMOV SI,DI ;將DI中的內(nèi)容送入SI中,l DI中的內(nèi)容保持不變lMOV EAX,EBX ;將EBX中的內(nèi)容送入EAX中返返 回回3.1.3 直接尋址l直接尋址指的是操作數(shù)在存儲(chǔ)器中的有效地址EA直接包含在指令中,書寫時(shí)有效地址加上中括號(hào) l例3-3 存儲(chǔ)器直接尋址lMOV AX,

3、1000H ;將DS段的1000H和1001H兩個(gè)l 單元的內(nèi)容送入AX寄存器中l(wèi)MOV EAX,ES:2000H ;將ES段的2000H2003H四個(gè)l 單元的內(nèi)容送入EAX寄存中,其中ES為段超越前綴lMOV AX,BUF ;將DS段內(nèi)以有效地址BUF (符號(hào)地址)起始的兩個(gè)單元的內(nèi)容送入AX寄存器中返返 回回3.1.4 寄存器間接尋址l操作數(shù)的物理地址為:l(DS)16(SI/DI/BX)或(SS)16(BP)l例3-4 假定(DS)2000H,(SI)=3600H,(23600H)=6022HlMOV AX,SI ;先將DS中的值左移4位,然后與SI中的值相加, 形成物理地址是2360

4、0H,再將該物理地址中的 數(shù)據(jù)6022H送入AX寄存器中l(wèi)例3-5 假定(SS)=3000H,(BP)=1100H,(31100H)=5E28HlMOV BX,BP l例3-6 偏移量為32位時(shí)的寄存器間接尋址lMOV EAX,ECX lMOV EAX,DX返返 回回3.1.5 寄存器相對(duì)尋址l其物理地址為:l(DS)16(SI/DI/BX)8位或16位偏移量l 或 (SS)16(BP)8位或16 位偏移量l例3-7 假定(DS)=2000H,(SS)=3000H,(SI)=3600H,(BP)=1100H,COUNT=10H,(23620H)=8A76H,(31110H)=4567H lMO

5、V AX ,SI+20H lMOV BX ,BP+COUNTl指令MOV BX,BP+COUNT書寫有下面的等效形式: l MOV BX,BP+COUNTl MOV BX,COUNTBP返返 回回3.1.6 基址變址尋址l其物理地址為:l(DS)16(BX)(SI/DI)l或(SS)16+(BP)+(SI/DI)l例3-8基址變址尋址,假定(DS)=2000H,(SS)3000H,(BX)=1800H,(BP)=2080H ,(DI)=1000H,(SI)=0800H, (22800H)=80CFH,(32880H)=067AHlMOV AX,BXDIlMOV AX,BP+SI 返返 回回3.

6、1.7 基址變址相對(duì)尋址l其物理地址為:l(DS)16(BX)+(SI/DI)+8位或16位偏移量l(SS)16(BP)+(SI/DI)+8位或16位偏移量l例3-9基址變址相對(duì)尋址lMOV AX, BX+SI+100HlMOV 20H BP+SI, AXlMOV CX,DS:BX+SI+NUMlMOV DX,SS: NUMDIBPl例3-10 32位偏移量的寄存器比例尋址lMOV EAX,DAT EBX+ESIlMOV EAX,NUM EBP+EDI返返 回回3.1.8 寄存器比例尋址l例3-11 寄存器比例尋址lMOV EAX,XEDI*4 lMOV EBX,EDI*8EBX ;EA=(E

7、DI)*8+(EBX)lMOV EAX,XESI*4EBP ;EA=(ESI)*4+(EBP)+X返返 回回3.2 8086指令系統(tǒng)l3.2.1 數(shù)據(jù)傳送指令l3.2.2 算術(shù)運(yùn)算指令l3.2.3 邏輯運(yùn)算與移位指令l3.2.4 串操作指令l3.2.5 控制轉(zhuǎn)移指令l3.2.6 處理器控制指令返返 回回3.2.1 數(shù)據(jù)傳送指令l1通用數(shù)據(jù)傳送指令l2地址傳送指令l3標(biāo)志傳送指令l4輸入輸出指令(1)基本的傳送指令l格式:MOV DEST , SRCl功能:將源操作數(shù)的內(nèi)容傳送到目的操作數(shù)中l(wèi)例3-12 基本的傳送指令lMOV AL,30H ;立即數(shù)傳送到寄存器lMOV AL, BL ;寄存器之

8、間傳送字節(jié)數(shù)據(jù)lMOV SI, BX+62H ;寄存器和存儲(chǔ)器之間傳送數(shù)據(jù)l例3-13下列指令是不合法的。lMOV 6234H,AX ;立即數(shù)不能用于目的操作數(shù)lMOV CS,AX ;CS不能用于目的操作數(shù)lMOV IP,AX ;IP不能用于目的操作數(shù)lMOV DS,4234H ;立即數(shù)不能直接傳送給段寄存器lMOV AL,BX ;源操作數(shù)與目的操作數(shù)的位數(shù)必須一致lMOV BUF1,BUF2 ;不能在兩個(gè)存儲(chǔ)器單元之間傳送數(shù)據(jù)lMOV DS,ES ;不能在兩個(gè)段寄存器之間傳送數(shù)據(jù)(2)交換指令l格式:XCHG DEST,SRCl功能:將源操作數(shù)與目的操作數(shù)的內(nèi)容交換(Exchange)l例3

9、-14 交換指令lXCHG AL,CL ;字節(jié)交換lXCHG BX,SI ;字交換lXCHG AX,BX+SI ;寄存器和存儲(chǔ)器之間交換數(shù)據(jù)l例3-15 下列指令是非法的lXCHG AX,6234H ;寄存器與立即數(shù)之間不能交換lXCHG BUF1,BUF2 ;存儲(chǔ)器單元與存儲(chǔ)器單元之間不能交換lXCHG ADDR,4234H ;存儲(chǔ)器單元與立即數(shù)之間不能交換lXCHG CS,DATBX ;不能與CS(或IP)寄存器進(jìn)行交換(3)堆棧操作指令l堆棧是按“先進(jìn)后出”原則工作的一段存儲(chǔ)器區(qū)域 l格式:PUSH SRC POP DESTl例3-16 將16位通用寄存器CX的內(nèi)容壓入堆棧,然后,彈出棧

10、頂至CX中,已知:(SS)=0200H,(SP)=0008H,(CX)=12FAH,其示意圖見圖3-1和圖3-2。 -2020012FA162006200712FAH2000存儲(chǔ)器SS段首地址新棧頂原棧頂120008SSCXSP2008FA+12FAH+216存儲(chǔ)器SS段首地址新棧頂原棧頂CXSPSS020012FA0008200620072008FA122000+(4)換碼指令l格式:XLATl功能:這是一條專門用于AL和字節(jié)表中某一存儲(chǔ)單元之間執(zhí)行數(shù)據(jù)傳送的指令。執(zhí)行(AL) BX+AL的操作,使AL中的一個(gè)值變換為內(nèi)存表格中的某一個(gè)值,實(shí)現(xiàn)編碼的轉(zhuǎn)換。 l例3-17 在內(nèi)存的數(shù)據(jù)段中存放

11、有一張數(shù)值09的ASCII碼轉(zhuǎn)換表,首地址為Hex_table,如圖3-3所示。現(xiàn)要把數(shù)值8轉(zhuǎn)換成對(duì)應(yīng)的ASCII碼,可用以下幾條指令實(shí)現(xiàn):lLEA BX,Hex_table ;(BX)表首偏移地址lMOV AL, 8 ; (AL)8lXLAT ;查表轉(zhuǎn)換Hex_table+0Hex_table+1Hex_table+2Hex_table+8Hex_table+90128930H31H32H38H39H返返 回回(1)有效地址傳送指令l格式:LEA DEST,SRCl功能:這是一條取有效地址的指令(Load effective address)。它用來將源操作數(shù)的偏移地址傳送到通用寄存器、指針

12、或變址寄存器中 l例3-18 有效地址傳送指令lMOV BX,3200H ;將3200H單元的內(nèi)容送BXlLEA BX,3200H ;將有效地址3200H送BXlLEA SI,ADDR ;將ADDR的有效地址送SI(2)地址指針傳送指令l格式:LDS DEST,SRC LES DEST,SRCl功能:將源操作數(shù)指定的連續(xù)4個(gè)存儲(chǔ)器單元中存放的32位地址指針(包括一個(gè)段地址和一個(gè)偏移地址)傳送到兩個(gè)16位寄存器 l例3-19 地址指針傳送指令lPOINT DD 55663344H ;設(shè)定POINT的段地址和偏移地址l LDS BX,POINT ;(BX)=3344H,(DS)=5566Hl LE

13、S BX,POINT ;(BX)=3344H,(ES)=5566H返返 回回(1)標(biāo)志讀寫指令l格式:LAHF/SAHFl功能:LAHF用于將標(biāo)志寄存器的低8位送AH,即將標(biāo)志寄存器FLAGS中的SF(符號(hào)標(biāo)志)、ZF(零標(biāo)志)、AF(半加進(jìn)位標(biāo)志)、PF(奇偶標(biāo)志)和CF(進(jìn)位標(biāo)志)5個(gè)標(biāo)志位分別傳送到累加器AH的對(duì)應(yīng)位 D7 D0 D15 OF DF IF TF D0SF ZF AF PF CFAH圖圖3-4 LAHF指令操作示意圖指令操作示意圖FLAGS(2)標(biāo)志入棧出棧指令l格式:PUSHF/POPFl功能:lPUSHF指令是將標(biāo)志寄存器中的內(nèi)容壓入堆棧,指令的操作為SP-1(FLAG

14、SH),SP-2(FLAGSL),(SP)(SP)-2lPOPF指令是將棧頂?shù)淖謫卧獌?nèi)容彈出到標(biāo)志寄存器中,同時(shí)SP(SP)+2返返 回回4輸入輸出指令l格式:IN DEST,SRC OUT DEST,SRCl功能:專門用于累加器和I/O端口之間執(zhí)行數(shù)據(jù)傳送l例3-20 輸入輸出指令lIN AL,28H ;從端口28H輸入一個(gè)字節(jié)到ALlOUT 15,AL ;從AL輸出一個(gè)字節(jié)到端口15lMOV DX,0362H ;先將端口地址送入DXlIN AX,DX ;從端口0362H輸入一個(gè)字到AX返返 回回3.2.2 算術(shù)運(yùn)算指令l1加法指令l2減法指令l3乘法指令l4除法指令返返 回回(1)不帶進(jìn)位

15、加法指令l格式:ADD DEST, SRCl功能:將源操作數(shù)與目的操作數(shù)相加,結(jié)果送入原存放目的操作數(shù)的地方。該指令對(duì)標(biāo)志位有影響。l例3-21 不帶進(jìn)位加法指令lADD CL,20H ;(CL)(CL)+20HlADD AX,SI ;(AX)(AX)+(SI)lADD DATA BX,AL ;(BX)+DATA)(BX)+DATA)+(AL)lADD DX,BX+SI ;(DX)(DX)+(BX)+(SI)(2)帶進(jìn)位加法指令l格式:ADC DEST,SRCl功能:將源操作數(shù)和目的操作數(shù)相加,同時(shí)加上進(jìn)位標(biāo)志的現(xiàn)行值CF,結(jié)果送入原存放目的操作數(shù)的地方l例3-22 帶進(jìn)位加法指令lADC A

16、X,SI ;(AX)(AX)+(SI)+CFlADC BX,3000H ;(BX)(BX)+3000H+CFlADC AX,DATSI ;(AX)(AX)+(SI+DAT)+CF(3)加1指令l格式:INC DESTl功能:將目的操作數(shù)中的內(nèi)容加1,然后送回該操作數(shù)。目的操作數(shù)可以是寄存器或存儲(chǔ)器。該指令一般用在循環(huán)程序中修改指針和循環(huán)次數(shù)l例3-23 加1指令lINC BX ;(BX)(BX)+1lINC BYTE PTR DI+100H ;將(DI)100H所指的字節(jié)l 單元內(nèi)容加1(4)BCD碼加法十進(jìn)制調(diào)整指令 未組合BCD碼的加法調(diào)整指令 l格式:AAAl功能:將AL的內(nèi)容調(diào)整為一位

17、非組合型的十進(jìn)制數(shù) l例3-24 兩個(gè)未組合BCD碼的加法運(yùn)算,設(shè)(AH)=0lMOV AL,08 ;(AL) 08 (AL)=00001000lADD AL,09 ;(AL) 08+09 (AL)=00010001=11HlAAA ;AF=1,(AH)(AH)+01,AL(AL+6),AL高4位 為0,(AL)=00000111,結(jié)果(AX)=0107 AF=1 CF=1 組合BCD碼的加法調(diào)整指令l格式:DAAl功能:將AL的內(nèi)容調(diào)整為兩位組合型的二進(jìn)制數(shù)。調(diào)整方法與AAA指令類似,不同的是DAA指令要分別考慮AL的高4位和低4位。如果AL的低4位大于9或AF1,則AL的內(nèi)容加6,并將AF

18、置1;如果AL 的高4位大于9或CF=1,則AL的內(nèi)容加60H,且將CF置1。l例3-25 兩個(gè)組合BCD碼的加法運(yùn)算lMOV AL,37 ;(AL)37lMOV BL,35 ;(BL)35lADD AL,BL ;(AL)=6CH,AF=0,CF=0lDAA ;因?yàn)锳L中的低4位大于9,所以(AL)(AL)+06, 結(jié)果(AL)=72,AF=1,CF=0返返 回回(1)不帶借位的減法指令l格式:SUB DEST, SRCl功能:將目的操作數(shù)減去源操作數(shù),結(jié)果送入目的操作數(shù)。l例3-26 不帶借位的減法指令lSUB AX,3000H ;(AX)(AX)-3000HlSUB BX,SI+100H

19、;(BX)(BX)-SI+100H(2)帶借位的減法指令l格式:SBB DEST, SRCl功能:將目的操作數(shù)減去源操作數(shù),還要減去CF的值,結(jié)果送入目的操作數(shù)l例3-27 帶借位的減法指令lSBB AX,BX ;(AX)(AX)-(BX)-CFlSBB WORD PTR SI,1068H ;(SI)(SI)-1068H-CF(3)減1指令l格式:DEC DESTl功能:將目的操作數(shù)的內(nèi)容減1,然后送回目的操作數(shù)。l例3-28 減1指令lDEC BL ;(BL)(BL)-1lDEC BYTE PTRDI+2 ;DI+2DI+2-1(4)求補(bǔ)指令l格式:NEG DESTl功能:對(duì)目的操作數(shù)取補(bǔ)碼

20、,即用零減去此操作數(shù),結(jié)果送回此操作數(shù)中。l例3-29設(shè)(AX)=020H,(BX)2212HlNEG AX ;(AX)0-(AX),結(jié)果(AX)=0FEHlNEG BX ;(BX)0-(BX),結(jié)果(BX)=DDEEH(5)比較指令l格式:CMP DEST,SRCl功能:將目的操作數(shù)減去源操作數(shù),結(jié)果不送回目的操作數(shù),二操作數(shù)原值不變,只是影響狀態(tài)標(biāo)志位。其余同SUB指令。l這條指令后邊一般跟條件轉(zhuǎn)移指令,以判斷二操作數(shù)是否滿足某種關(guān)系。根據(jù)比較結(jié)果對(duì)標(biāo)志位的影響來實(shí)現(xiàn)程序的分支。(6)BCD碼減法十進(jìn)制調(diào)整指令 未組合BCD碼的減法調(diào)整指令l格式:AASl功能:與AAA指令類似是將AL的內(nèi)

21、容調(diào)整為一位非組合型的十進(jìn)制數(shù)l例3-30 兩個(gè)未組合BCD碼的減法運(yùn)算lMOV AX,0608H ;AX0608HlSUB AL, 09H ;AL0FFHlAAS ;AL09H,AH05H 組合BCD碼的減法調(diào)整指令l格式:DASl功能:與DAA指令類似,是將AL 的內(nèi)容轉(zhuǎn)換成兩位組合型的十進(jìn)制數(shù)l例3-31:兩個(gè)組合BCD碼的減法運(yùn)算lMOV AL,73H ;AL73HlSUB AL,27H ;AL4CHlDAS ;AL46H返返 回回(1)無符號(hào)數(shù)乘法指令l格式:MUL SRCl功能:字節(jié)相乘時(shí),AL與源操作數(shù)相乘,乘積為16位送入AX中;字相乘時(shí),AX與源操作數(shù)相乘,乘積為32位,高1

22、6位送DX,低16位送AX。l對(duì)標(biāo)志位影響:若乘積的高半部分(字節(jié)相乘時(shí)為AH,字相乘時(shí)為DX)不為零,則CF1,OF1;否則CF=0,OF=0。其它標(biāo)志位為任意值。l例3-32 無符號(hào)數(shù)乘法指令lMUL DL ;AXAX*DLlMUL CX ;DX:AXAX*CXlMUL BYTE PTR SI+8 ;AXAL*SI+8(2)有符號(hào)數(shù)乘法指令l格式:IMUL SRCl功能:與MUL的功能相同,只是要求兩乘數(shù)都必須為有符號(hào)數(shù)。l例3-33兩個(gè)有符號(hào)數(shù)的乘法lMOV AL,F(xiàn)EH ;ALFEH,F(xiàn)EH看作有符號(hào)數(shù)-2lMOV CL,11H ;CL11H,11H看作有符號(hào)數(shù)17lIMUL CL ;

23、AXFFDEH,執(zhí)行02H*11H, 將乘積結(jié)果取補(bǔ)碼得FFDEH=-34(3)非組合BCD碼乘法調(diào)整指令l格式:AAMl功能:用于將非組合BCD碼乘法的結(jié)果(在AL中)轉(zhuǎn)換成兩個(gè)非組合型BCD碼(AH和AL中)l例3-34 兩個(gè)非組合BCD碼的乘法運(yùn)算。lMOV AL,,06H ;AL06HlMOV BL,07H ;BL07HlMUL BL ;AX002AHlAAM ;AX0402H返返 回回(1)無符號(hào)數(shù)除法指令l格式:DIV SRCl功能:a.字節(jié)除法:將AX/SRC的商送入AL,將AX/SRC的余數(shù)送入AHlb.字除法:將DX:AX/SRC的商送入AX,將DX:AX/SRC的余數(shù)送入D

24、Xl例3-35 無符號(hào)數(shù)除法指令lDIV CL ;AX中的16位數(shù)除以CL中的8位數(shù), 商送AL,余數(shù)送AHlDIV CX ;DX和AX中的32位數(shù)除以CX中的16位數(shù), 商送AX,余數(shù)送DX(2)有符號(hào)數(shù)除法指令l格式:IDIV SRCl功能:與DIV指令相比只有兩點(diǎn)不同:la.兩個(gè)操作數(shù)均為有符號(hào)數(shù)。lb.如果被除數(shù)不是除數(shù)的兩倍長度,對(duì)被除數(shù)要用專門的指令進(jìn)行符號(hào)擴(kuò)展,以產(chǎn)生雙倍長度表示的被除數(shù)。 (3)非組合BCD碼除法調(diào)整指令l格式:AADl功能:AAD指令常用于DIV指令之前,將AX中的兩位非組合BCD碼變?yōu)槎M(jìn)制數(shù)l例3-36 兩個(gè)非組合BCD碼的除法運(yùn)算。lMOV AX, 06

25、05H ;AX0605HlMOV BL,07H ;BL07HlAAD ;AX0041HlDIV BL ;商值A(chǔ)L09,余數(shù)AH02H(4)有符號(hào)擴(kuò)展指令l格式:CBW CWDl功能:CBW為字節(jié)擴(kuò)展指令,將AL中有符號(hào)數(shù)的符號(hào)位擴(kuò)展到AH中l(wèi)例3-37lMOV AL,12H ;AL12HlCBW ;AX0012H,AH=00HlMOV AX,BBA3HlCWD ;DXFFFFH,AXBBA3H返返 回回3.2.3 邏輯運(yùn)算與移位指令l1邏輯運(yùn)算指令l2移位指令l3循環(huán)移位指令返返 回回1邏輯運(yùn)算指令l例3-38lAND AL,0FH ;AL中的內(nèi)容和OFH相與,結(jié)果在AL中l(wèi)AND AX,BX

26、 ;AX和BX中的內(nèi)容相與,結(jié)果在AX中l(wèi)AND DX,BX+SI ;lOR AX,00F0H ;AX和00F0相或,結(jié)果在AX中l(wèi)XOR AL,0FH ;AL和0FH相異或,結(jié)果在AL中l(wèi)XOR AX,AX ;AX的內(nèi)容本身進(jìn)行異或,結(jié)果AX清零l例3-39lTEST AX,8000H ;如果AX的最高位為1,則ZF0,否則ZF=1lTEST AL,01H ;如果AL的最低位為1,則ZF=0, 否則ZF=1l例3-40lNOT AL ;AL中內(nèi)容求反碼,結(jié)果在AL中l(wèi)NOT BX ;BX中內(nèi)容求反碼,結(jié)果在BX中l(wèi)NOT WORD PTR 1000H ;1000H和1001Hl 2個(gè)單元中

27、的內(nèi)容求反碼,再送回這2個(gè)單元中l(wèi)例3-41lAND AL,0FH ;AL中的高4位請(qǐng)零lOR AL,0FH ;AL中的低4位置1lXOR AL,0FH ;AL中的低4位求反lTEST AL,0FH ;檢查AL中的低4位是否全為零返返 回回2移位指令l例例3-42將將AL寄存器中的數(shù)據(jù)左移寄存器中的數(shù)據(jù)左移1位,位,BL寄存器中的數(shù)據(jù)右移寄存器中的數(shù)據(jù)右移4位位l MOV AL,52H ;AL52Hl MOV BL,63H ;BL63Hl MOV CL,04H ;CL04Hl SHL AL,1 ;ALA4Hl SHR BL,CL ;BL0CH最高位最低位CF0最高位最低位CF0最高位最低位CF

28、0最高位最低位CFa)算術(shù)左移指令SALd)邏輯右移指令SHRb)邏輯左移指令SHLc)算術(shù)右移指令SAR返返 回回3循環(huán)移位指令l例例3-43 將將AX的最高位移入的最高位移入DX的最低位的最低位lRCL AX,1 ;將;將AX的最高位移位的最高位移位CFlRCL DX,1 ;將;將CF移入移入DX的最低位的最低位l例例3-44 將將AX00A2H,BX=00B4H,裝配在一起形成,裝配在一起形成AXA2B4H lMOV CL,8 ;(CL)移位數(shù)移位數(shù)8lROL AX,CL ;AX循環(huán)左移循環(huán)左移8位,(位,(AX)=A200HlADD AX,BX c)不帶CF的循環(huán)右移指令ROR最高位最

29、低位CF最高位最低位CF最高位最低位CF0最高位最低位CFa)不帶CF的循環(huán)左移指令ROLb)帶CF的循環(huán)左移指令RCLd)帶CF的循環(huán)右移指令RCR返返 回回3.2.4 串操作指令l1基本串操作指令l2重復(fù)前綴指令返返 回回1基本串操作指令l(1)串傳送指令lMOVSB ;字節(jié)傳送,ES:DIDS:SI,l SISI1,DIDI 1lMOVSW ;字傳送,ES:DIDS:SI,l SISI 2,DIDI 2l(2)取串指令lLODSB ;字節(jié)傳送,ALDS:SI,SISI 1lLODSW ;字傳送,AXDS:SI,SISI 2l(3)存串指令lSTOSB ;字節(jié)傳送,ES:DIAL,DIDI

30、 1lSTOSW ;字傳送,ES:DIAX,DIDI 2.l(4)串比較指令lCMPSB ;字節(jié)傳送ES:SI-DS:DI,SISI 1,DIDI 1lCMPSW ;字傳送,ES:SI-DS:DI,SISI 2,DIDI 2l5)串搜索指令lSCASB ;字節(jié)傳送,AL-ES:DI,DIDI 1.lSCASW ;字傳送,AX-ES:DI,DIDI 22重復(fù)前綴指令l格式: REP ;無條件重復(fù)前綴指令l REPE/REPZ ;條件重復(fù)前綴指令l REPNE/REPNZ ;條件重復(fù)前綴指令lREP指令用在MOVS、STOS指令之前,每執(zhí)行一次串指令,CX(CX)-1,直到CX=0,重復(fù)執(zhí)行結(jié)束l

31、REPE/REPZ指令用在CMPS、SCAS指令之前,每執(zhí)行一次串指令,CX(CX)-1,并判斷ZF標(biāo)志位是否為0;只要CX=0或ZF=0,則重復(fù)執(zhí)行結(jié)束lREPNE/REPNZ指令用在CMPS、SCAS指令之前,每執(zhí)行一次串指令,CX(CX)-1,并判斷ZF標(biāo)志位是否為1;只要CX=0或ZF=1,則重復(fù)執(zhí)行結(jié)束lLODS指令之前不能添加重復(fù)前綴例題l例3-45將首地址為SRC的源字符串傳送到DEST為首地址的內(nèi)存區(qū),字符串的長度為N個(gè)字節(jié)。lCLD ;DF=0,增量方向lLEA SI,SRC ;DS:SI字符串首地址lLEA DI,ES:DEST ;ES:DI目標(biāo)地址lMOV CX,N ;字

32、符串長度lREP MOVSB ;重復(fù)字符串傳送l例3-46比較兩個(gè)字符串是否有相同的元素,它們的首地址和目標(biāo)地址分別為SRC和DEST,字符串的長度為N個(gè)字節(jié)。lCLD ;DF=0,增量方向lLEA SI,SRC ;DS:SI字符串首地址lLEA DI,ES:DEST ;ES:DI目標(biāo)地址lMOV CX,N ;字符串長度lREPNE CMPSB ;重復(fù)比較字符串lJNZ NOT_FOUNT ;無相同的元素,轉(zhuǎn)NOT_FOUNT,l 否則繼續(xù)執(zhí)行下條指令例題l例3-47在首地址為ES:DEST的字符串中檢查是否有字符M,字符串的長度為N個(gè)字節(jié)。lCLD ;DF=0,增量方向lLEA DI,ES:

33、DEST ;ES:DI目標(biāo)地址lMOV CX,N ;字符串長度lMOV AL,M ;AL搜索字符lREPNE SCASB ;重復(fù)搜索字符串是否有字符Ml例3-48將首地址為DS:SRC的字節(jié)數(shù)據(jù)串中非0元素送到首地址為ES:DEST的內(nèi)存區(qū)中。字符串長度為N。l CLD ;DF=0,增量方向l LEA SI,SRC ;DS:SI字符串首地址l LEA DI,ES:DEST ;ES:DI目標(biāo)地址l MOV CX,N ;字符串長度lGOON: LODSB ;取字符串的一個(gè)元素l CMP AL,0 ;字符串元素為0嗎?l JZ NEXT ;是0,繼續(xù)下一個(gè)元素l STOSB ;非0,存入首地址為ES

34、:DEST的內(nèi)存區(qū)中l(wèi)NEXT: DEC CXl JNE GOON 返返 回回3.2.5 控制轉(zhuǎn)移指令l1無條件轉(zhuǎn)移指令l2過程調(diào)用及返回指令l3條件轉(zhuǎn)移指令l4循環(huán)控制指令l5中斷指令返返 回回1無條件轉(zhuǎn)移指令l(1)段內(nèi)直接轉(zhuǎn)移lJMP 1200H ;IP1200H,直接轉(zhuǎn)移到1200H去執(zhí)行指令lJMP SHORT LOOP ;IP(IP)+8位偏移量,段內(nèi)短轉(zhuǎn)移,l 轉(zhuǎn)向符號(hào)地址LOOP處lJMP NEAR PTR L2 ;IP(IP)+16位偏移量,段內(nèi)近轉(zhuǎn)移,l 轉(zhuǎn)向符號(hào)地址L2處l(2)段內(nèi)間接轉(zhuǎn)移lJMP CX ;IP(CX)lJMP AX+SI ;IPAX+SIlJMP WO

35、RD PTR SI ;IP(SI)所指定的存儲(chǔ)器字單元之中的16位數(shù)據(jù)l(3)段間直接轉(zhuǎn)移lJMP FAR PTR NEXT ;CS:IP新的段基址和新的偏移地址l(4)段間間接轉(zhuǎn)移lJMP DWORD PTR DI ;(IP) (DS:DI),(CS) (DS:DI+2)2過程調(diào)用及返回指令l(1)調(diào)用指令l 段內(nèi)直接調(diào)用lCALL;SP(SP)-2,SS:SP IP;IP(IP)+16位偏移量l 段內(nèi)間接調(diào)用lCALL BX ;SP(SP)-2,SS:SP IP;IPBX偏移量l 段間直接調(diào)用lCALL FAR PTR SUB2 ;SP(SP)-2,SS:SPCS;SP(SP)-2lSS:

36、SP IP,IPSUB2偏移地址,CSSUB2段地址l 段間間接調(diào)用lCALL FAR PTR SI ;SP(SP)-2,SS:SPCS;SP(SP)-2lSS:SP IP,IPSI,CSSI+22過程調(diào)用及返回指令l(2)返回指令l 無參數(shù)段內(nèi)返回lRET ;IPSS:SP,SP(SP)+2l 有參數(shù)段內(nèi)返回lRET n ;IPSS:SP,SP(SP)+2,SP(SP)+nl 無參數(shù)段間返回lRET ;IPSS:SP,SP(SP)+2, CSSS:SP,SP(SP)+2l 有參數(shù)段間返回lRET n ;IPSS:SP,SP(SP)+2, CSSS:SP,SP(SP)+2, SP(SP)n3條

37、件轉(zhuǎn)移指令指令轉(zhuǎn)移條件 說明JC DESTCF=1 有進(jìn)位有進(jìn)位/借位借位JNC DESTCF=0無進(jìn)位無進(jìn)位/借位借位JE/JZ DESTZF=1相等相等/等于零等于零JNE/JNZ DESTZF=0不相等不相等/不等于零不等于零JS DESTSF=1是負(fù)數(shù)是負(fù)數(shù)JNS DESTSF=0是正數(shù)是正數(shù)JO DESTOF=1有溢出有溢出JNO DESTOF=0無溢出無溢出JP/JPE DESTPF=1有偶數(shù)個(gè)有偶數(shù)個(gè)“1”JNP/JPO DESTPF=0有奇數(shù)個(gè)有奇數(shù)個(gè)“1”指令轉(zhuǎn)移條件含義JG/JNLE DESTSF=OF AND ZF=0有符號(hào)數(shù)ABJGE/JNL DESTSF=OF OR

38、ZF=1有符號(hào)數(shù)ABJL/JNGE DESTSFOF AND ZF=0有符號(hào)數(shù)ABJGE/JNL DESTSF=OF OR ZF=1有符號(hào)數(shù)ABJL/JNGE DESTSFOF AND ZF=0有符號(hào)數(shù)A05H,則轉(zhuǎn)向ABC4循環(huán)控制指令l格式:LOOP DEST ;(CX)0,則循環(huán)lLOOPE/LOOPZ DEST ;ZF=1且(CX0),則循環(huán)lLOOPNE/LOOPNZ DEST ;ZF=0且(CX)0,則循環(huán)lJCXZ DEST ;(CX)=0,則循環(huán)l例3-54在以DATA為首地址的內(nèi)存數(shù)據(jù)段中,存放有200個(gè)16位有符號(hào)數(shù),試找出其中最大和最小的有符號(hào)數(shù),并分別放在MAX和MIN

39、為首的內(nèi)存單元中l(wèi)START: LEA SI,DATA ;(SI) 數(shù)據(jù)塊首地址l MOV CX,200 ;(CX) 數(shù)據(jù)塊長度 l CLD ;清方向標(biāo)志DFl LODSB ;(AX)一個(gè)16位有符號(hào)數(shù)l MOV MAX,AX ;將該數(shù)送MAXl MOV MIN,AX ;將該數(shù)送MINl DEC CX ;(CX) (CX)-1lNEXT: LODSW ;取下一個(gè)16位有符號(hào)數(shù)l CMP AX,MAX ;與MAX單元內(nèi)容進(jìn)行比較l JG LARGER ;若大于則轉(zhuǎn)LARGERl CMP AX,MIN ;否則再與MIN單元內(nèi)容進(jìn)行比較 l JL SMALL ;若小于MIN的內(nèi)容則轉(zhuǎn)SMALLl J

40、MP GOON ;否則就轉(zhuǎn)至GOONlLARGER:MOV MAX, AX ;(MAX) (AX)l JMP GOON lSMALL: MOV MIN,AX ;(MIN) (AX)lGOON: LOOP NEXT ;(CX)-1,若CX0,則轉(zhuǎn)NEXTl HLT5中斷指令l(1)中斷指令l格式:INT nl功能:用于產(chǎn)生軟件中斷,以調(diào)用中斷類型號(hào)為n的中斷服務(wù)程序 n為一個(gè)8位立即數(shù),取值范圍為0255。l(2)溢出中斷指令l格式:INTOl功能:用來判斷有符號(hào)數(shù)加減運(yùn)算是否溢出。一般把INTO指令安排在有符號(hào)數(shù)加、減運(yùn)算指令的后面,一旦查出OF=1。則轉(zhuǎn)到溢出中斷處理程序。INTO指令是n4

41、的INT指令。其中斷向量為0010H。l(3)中斷返回指令l格式:IRETl功能:將堆棧中的斷點(diǎn)地址彈出賦給IP和CS,以實(shí)現(xiàn)中斷返回;將標(biāo)志寄存器的值彈出,恢復(fù)中斷前的狀態(tài)。返返 回回3.2.6 處理器控制指令l1標(biāo)志操作指令lCLC ;CF0,進(jìn)位標(biāo)志位置0(Clear carry)lSTC ;CF1,進(jìn)位標(biāo)志位置1(Set carry)lCMC ;CF= 進(jìn)位標(biāo)志取反(complement Carry)lCLD ;DF0方向標(biāo)志位置0(clear direction)lSTD ;DF1方向標(biāo)志位置1(set direction)lCLI ;IF0中斷允許標(biāo)志位置0(clear inter

42、rupt)lSTI ;IF1中斷允許標(biāo)志位置1(set interrupt)l外部同步指令l(1)暫停指令HLTl(2)等待指令WAITl(3)交權(quán)指令ESCl(4)封鎖指令l(5)空操作指令返返 回回3.3 80X86與Pentium擴(kuò)充和增加的指令l3.3.1 80286擴(kuò)充和增加的指令l3.3.2 80386擴(kuò)充和增加的指令l3.3.3 80486新增加的指令l3.3.4 Pentium新增加的指令 返返 回回3.3.1 80286擴(kuò)充和增加的指令l180286擴(kuò)充功能的指令l(1)堆棧操作指令PUSH SRCl l(2)有符號(hào)數(shù)乘法指令lIMUL DEST,SRC lIMUL DEST,SRC1,SRC2 ;l例3-55 有符號(hào)數(shù)乘法lIMUL CX,205 ; (CX) (CX)205lIMUL DX,BP,68H ; (DX)BP68Hl(3)移位指令l例3-56 下列指令都是正確的lSAL AX,9lROL BP,29lRCR BXSI,31lSAR DX,6;算術(shù)右移6次3.3.1 80286擴(kuò)充和增加的指令l280286增加的指令l(1)棧操作指令PUSHA、POPA

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論