指令系統(tǒng)(學(xué)習(xí)資料)ppt課件_第1頁
指令系統(tǒng)(學(xué)習(xí)資料)ppt課件_第2頁
指令系統(tǒng)(學(xué)習(xí)資料)ppt課件_第3頁
指令系統(tǒng)(學(xué)習(xí)資料)ppt課件_第4頁
指令系統(tǒng)(學(xué)習(xí)資料)ppt課件_第5頁
已閱讀5頁,還剩44頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第4章 80 x86指令系統(tǒng) 4.1.3 8086/8088指令系統(tǒng)指令系統(tǒng)8086/8088CPU8086/8088CPU指令系統(tǒng)包含有指令系統(tǒng)包含有133133條根本指條根本指令。按其功能可以分為令。按其功能可以分為6 6類,它們是:類,它們是: 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令 算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令 邏輯運(yùn)算與位移類指令邏輯運(yùn)算與位移類指令 字符串指令字符串指令 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令 處置器控制類指令。處置器控制類指令。第4章 80 x86指令系統(tǒng) 一、一、 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令時(shí)將數(shù)據(jù)、地址或立刻數(shù)傳送到存放器或存數(shù)據(jù)傳送類指令時(shí)將數(shù)據(jù)、地址或立刻數(shù)傳

2、送到存放器或存儲器單元中。可完成存放器與存放器之間、存放器與存儲器之間、儲器單元中。可完成存放器與存放器之間、存放器與存儲器之間、存放器與存放器與I/OI/O端口之間的字節(jié)或字傳送。它又可分為通用數(shù)據(jù)傳送端口之間的字節(jié)或字傳送。它又可分為通用數(shù)據(jù)傳送指令、輸入指令、輸入/ /輸出指令、目的地址傳送指令和標(biāo)志傳送指令四組。輸出指令、目的地址傳送指令和標(biāo)志傳送指令四組。特點(diǎn):除特點(diǎn):除SAHFSAHF和和POPFPOPF不影響標(biāo)志存放器內(nèi)容。不影響標(biāo)志存放器內(nèi)容。一通用數(shù)據(jù)傳送指令一通用數(shù)據(jù)傳送指令1. 1. 最根本的傳送指令最根本的傳送指令指令格式及操作:指令格式及操作: MOV dst MOV

3、 dst,srcsrc ;(dst)(src) (dst)(src) 將源操作數(shù)將源操作數(shù)s s指定的內(nèi)容送到指定的內(nèi)容送到d d目的操作數(shù)目的操作數(shù) dst dst 是目的操作數(shù),它可以是存儲器、通用存放器不能為是目的操作數(shù),它可以是存儲器、通用存放器不能為IPIP和段存放器不能為和段存放器不能為CSCS,不能為立刻數(shù)。,不能為立刻數(shù)。 Src Src 是源操作數(shù),它可以是存儲器、通用存放器、段存放器是源操作數(shù),它可以是存儲器、通用存放器、段存放器和立刻數(shù)。和立刻數(shù)。第4章 80 x86指令系統(tǒng) 需闡明一點(diǎn),對于代碼段存放器需闡明一點(diǎn),對于代碼段存放器CSCS和指令和指令指針存放器指針存放器

4、IPIP,通常無需用戶利用傳送指令改,通常無需用戶利用傳送指令改動其中的內(nèi)容。但是動其中的內(nèi)容。但是CSCS可以作為源操作數(shù)??梢宰鳛樵床僮鲾?shù)。16位通用存放器AX BX CX DXBP SP SI DIAL BL CL DLAH BH CH DH段存放器CS DS SS ES存儲器立刻數(shù)16位816位816位816位MOV 指令數(shù)據(jù)傳送方向指令數(shù)據(jù)傳送方向第4章 80 x86指令系統(tǒng) MOVE指令需求留意的問題:指令需求留意的問題:MOVE指令可傳送指令可傳送8位數(shù)據(jù),也可傳送位數(shù)據(jù),也可傳送16位數(shù)位數(shù)據(jù)。據(jù)。MOVE指令中的兩操作數(shù)指令中的兩操作數(shù)s和和d,必用,必用1個存放個存放器,不

5、允許同時(shí)為存儲單元。器,不允許同時(shí)為存儲單元。不能用不能用CS和和IP做目的操作數(shù)。做目的操作數(shù)。不允許段存放器之間直接數(shù)據(jù)傳送。不允許段存放器之間直接數(shù)據(jù)傳送。不允許立刻數(shù)做目的操作數(shù)。不允許立刻數(shù)做目的操作數(shù)。不能向段存放器送立刻數(shù)。不能向段存放器送立刻數(shù)。第4章 80 x86指令系統(tǒng) 2.堆棧操作指令堆棧操作指令堆棧操作指令是用來完成壓入和彈出堆棧操作的。堆棧操作指令是用來完成壓入和彈出堆棧操作的。80868088指令系統(tǒng)中提供了完成這兩種操作的相應(yīng)指令系統(tǒng)中提供了完成這兩種操作的相應(yīng)指令。指令。 壓入堆棧指令壓入堆棧指令指令格式及操作:指令格式及操作: PUSH src ;(SP) (

6、SP)-2, (SP)+1:(SP) (src) src 源操作數(shù)可以是存放器操作數(shù)和存儲器操作源操作數(shù)可以是存放器操作數(shù)和存儲器操作數(shù),且必需是數(shù),且必需是16位的操作數(shù),但不能是立刻數(shù)。位的操作數(shù),但不能是立刻數(shù)。第4章 80 x86指令系統(tǒng) 彈出堆棧指令彈出堆棧指令指令格式及操作:指令格式及操作: POP dst ; (dst) (SP)+1:(SP), (SP) (SP)+2 dst 目的操作數(shù)可以是存放器操作數(shù)和存儲目的操作數(shù)可以是存放器操作數(shù)和存儲器操作數(shù),且必需是器操作數(shù),且必需是16位的操作數(shù),但不能是立位的操作數(shù),但不能是立刻數(shù)??虜?shù)。第4章 80 x86指令系統(tǒng) 特點(diǎn):s和

7、d可以是16位存放器或存儲器兩相鄰單元;堆棧按字操作;每執(zhí)行一條入棧指令,堆棧地址指針SP減2,入棧的數(shù)據(jù)位于棧頂;高位字節(jié)先入棧,放在高位地址單元,低位字節(jié)后入棧,放在較低地址單元;先進(jìn)先出原那么;執(zhí)行彈出指令時(shí),過程相反,棧頂指針的值加2;CS段存放器的值可以入棧,但不能反過來彈出一個字到CS第4章 80 x86指令系統(tǒng) 3.交換指令交換指令將源操作數(shù)和目的操作數(shù)將源操作數(shù)和目的操作數(shù)(字或字節(jié)字或字節(jié))相互對相互對應(yīng)交換位置。應(yīng)交換位置。指令格式及操作:指令格式及操作:XCHG opr1, opr2 ;(opr1) (opr2) 第4章 80 x86指令系統(tǒng) 4.字節(jié)轉(zhuǎn)換指令字節(jié)轉(zhuǎn)換指令

8、經(jīng)過查表來完成代碼轉(zhuǎn)換,用于實(shí)現(xiàn)字節(jié)翻譯的經(jīng)過查表來完成代碼轉(zhuǎn)換,用于實(shí)現(xiàn)字節(jié)翻譯的功能。功能。指令格式及操作:指令格式及操作: XLAT src_table ;(AL) (BX)+(AL)XLAT指令是用來將一種字節(jié)代碼轉(zhuǎn)換成另一種字指令是用來將一種字節(jié)代碼轉(zhuǎn)換成另一種字節(jié)代碼。執(zhí)行的結(jié)果放在節(jié)代碼。執(zhí)行的結(jié)果放在AL中。中。運(yùn)用指令前:運(yùn)用指令前: BX存放器的內(nèi)容指向表格首址;存放器的內(nèi)容指向表格首址;AL中存放待查的碼,即某一項(xiàng)與表首地址的間隔。中存放待查的碼,即某一項(xiàng)與表首地址的間隔。XLAT指令還可以有以下幾種表示方式:指令還可以有以下幾種表示方式: XLAT ;不寫操作數(shù)不寫操作

9、數(shù) XLATB ;有有B就不允許再寫操作數(shù)。就不允許再寫操作數(shù)。 XLAT ES:src_table ;重設(shè)段存放器為重設(shè)段存放器為ES第4章 80 x86指令系統(tǒng) 例在內(nèi)存的數(shù)據(jù)段有一張16進(jìn)制數(shù)的ASCII碼表,其首地址為Hex_table,如以下圖所示,為了查出第10個元素, 即十六進(jìn)制數(shù)A的ASCII碼,那么可用以下幾條指令實(shí)現(xiàn):MOV BX, OFFSET Hex_tale;(BX) 表首址MOV AL, 0AH ;(AL) 序號XLAT Hex_table;查表轉(zhuǎn)換61000H61001H61002H6100AH6100BH6100FH60000HDS:60000HBX: 1000

10、HAX: 000AH+6100AHHex_tableHex_table+1Hex_table+2Hex_table+AHex_table+BHex_table+FASCII表31H32H41H42H30H46H0AHALEA6100AH41H41HASCII表Hex_table=1000H第4章 80 x86指令系統(tǒng) (二二) 輸入輸入/輸出指令輸出指令只能用累加器作為執(zhí)行只能用累加器作為執(zhí)行I/0數(shù)據(jù)傳送的機(jī)構(gòu)。數(shù)據(jù)傳送的機(jī)構(gòu)。輸入輸出指令可以分為兩大類:一類是直接端口輸入輸出指令可以分為兩大類:一類是直接端口地址的輸入輸出指令:一類是經(jīng)過地址的輸入輸出指令:一類是經(jīng)過DX存放器存放器間接端

11、口地址的輸入輸出指令。間接端口地址的輸入輸出指令。 輸入指令輸入指令直接尋址的輸入指令直接尋址的輸入指令尋址范圍尋址范圍0-255少于少于8位地址位地址指令格式及操作:指令格式及操作: IN acc, port ;(acc) (port)第4章 80 x86指令系統(tǒng) 間接尋址的輸入指令間接尋址的輸入指令尋址范圍尋址范圍0-65535少于或超越少于或超越8位地址位地址指令格式及操作:指令格式及操作: IN acc, DX ;(acc) (DX) 輸出指令輸出指令直接尋址的輸出指令直接尋址的輸出指令指令格式及操作:指令格式及操作: OUT port, acc ; (port) (acc) 間接尋址

12、的輸出指令間接尋址的輸出指令指令格式及操作:指令格式及操作: OUT DX, acc ; (DX) (acc) 第4章 80 x86指令系統(tǒng) 三目的地址傳送指令三目的地址傳送指令1. 1. 取有效地址指令取有效地址指令指令格式:指令格式: LEA reg16, mem LEA reg16, mem此指令的功能是將存放源操作數(shù)的此指令的功能是將存放源操作數(shù)的1616位偏移地址位偏移地址( (即有效地址即有效地址EA)EA)送到一個送到一個1616位的通用存放器中。即源位的通用存放器中。即源操作數(shù)必需是一個存儲器操作數(shù),目的操作數(shù)必需是操作數(shù)必需是一個存儲器操作數(shù),目的操作數(shù)必需是一個通用存放器操

13、作數(shù)。例如:一個通用存放器操作數(shù)。例如:LEA BX, bufferLEA BX, bufferLEA AX, BPDILEA AX, BPDILEA DX, betaBXSILEA DX, betaBXSI留意留意LEALEA指令和指令和MOVMOV指令的異同。指令的異同。第4章 80 x86指令系統(tǒng) 不同:不同: LEA BX, buffer;將存儲器將存儲器buffer的偏的偏 移地址送到移地址送到BX MOV BX, buffer;將存儲器將存儲器buffer的內(nèi)的內(nèi) 容傳送到容傳送到BX一樣:一樣: LEA BX, buffer MOV BX, OFFSET buffer 以上兩條指

14、令都是將存儲器以上兩條指令都是將存儲器buffer的偏移地址送的偏移地址送到到BX。其中。其中OFFSET buffer 表示存儲器偏移地址。表示存儲器偏移地址。第4章 80 x86指令系統(tǒng) 2. 地址指針裝入地址指針裝入DS指令指令指令格式:指令格式: LDS reg16, mem32此指令的功能是將源操作數(shù)所對應(yīng)的雙字長的此指令的功能是將源操作數(shù)所對應(yīng)的雙字長的內(nèi)存單元中的高字內(nèi)容普通為內(nèi)存單元中的高字內(nèi)容普通為16位段基址送入位段基址送入DS,低字內(nèi)容普通為偏移地址送入指令所指定的存放低字內(nèi)容普通為偏移地址送入指令所指定的存放器中。例如:器中。例如:LDS DI, 2130H34H12H

15、00H40H2130H2132HDMDIDS1234H4000H第4章 80 x86指令系統(tǒng) 3. 地址指針裝入地址指針裝入ES指令指令指令格式:指令格式: LES reg16, mem32此指令的功能是將源操作數(shù)所對應(yīng)的雙字長的內(nèi)此指令的功能是將源操作數(shù)所對應(yīng)的雙字長的內(nèi)存單元中的高字內(nèi)容普通為存單元中的高字內(nèi)容普通為16位段基址送入位段基址送入ES,低字內(nèi)容普通為偏移地址送入指令所指定的存放低字內(nèi)容普通為偏移地址送入指令所指定的存放器中。例如:器中。例如:LES DI, 2130H34H12H00H40H2130H2132HDMDIES1234H4000H第4章 80 x86指令系統(tǒng) 四四

16、 標(biāo)志傳送指令標(biāo)志傳送指令1.取標(biāo)志指令取標(biāo)志指令將標(biāo)志存放器將標(biāo)志存放器F的低字節(jié)傳送到的低字節(jié)傳送到AH中。中。指令格式:指令格式: LAHF2.置標(biāo)志指令置標(biāo)志指令將將AH存放器的內(nèi)容傳送到標(biāo)志存放器存放器的內(nèi)容傳送到標(biāo)志存放器F的低字節(jié)。的低字節(jié)。經(jīng)過經(jīng)過AH對標(biāo)志存放器的對標(biāo)志存放器的SF、ZF、AF、PF、CF標(biāo)志位標(biāo)志位置位。置位。指令格式:指令格式: SAHFOF DF IF TF SF ZFAFPFCFFLAGAHLAHF和SAHF指令操作表示圖第4章 80 x86指令系統(tǒng) 3.標(biāo)志壓入堆棧指令標(biāo)志壓入堆棧指令將將16位標(biāo)志存放器位標(biāo)志存放器F的內(nèi)容入棧維護(hù)。的內(nèi)容入棧維護(hù)。

17、指令格式及操作:指令格式及操作: PUSHF;(SP) (SP)-2,;(SP)+1;(SP) (FLAG)4.標(biāo)志彈出堆棧指令標(biāo)志彈出堆棧指令將當(dāng)前棧頂和次棧頂中的數(shù)據(jù)彈出,送回標(biāo)志存放器當(dāng)將當(dāng)前棧頂和次棧頂中的數(shù)據(jù)彈出,送回標(biāo)志存放器當(dāng)中。中。指令格式及操作:指令格式及操作: POPF; (FLAG) (SP)+1;(SP),; (SP) (SP)+2經(jīng)常成對出現(xiàn),用在子程序和中斷處置程序的首尾,用經(jīng)常成對出現(xiàn),用在子程序和中斷處置程序的首尾,用來維護(hù)和恢復(fù)主程序涉及的標(biāo)志存放器的內(nèi)容。來維護(hù)和恢復(fù)主程序涉及的標(biāo)志存放器的內(nèi)容。必要時(shí)可修正標(biāo)志存放器的內(nèi)容。必要時(shí)可修正標(biāo)志存放器的內(nèi)容。第

18、4章 80 x86指令系統(tǒng) 二、算術(shù)運(yùn)算指令8086808680888088有豐富的算術(shù)運(yùn)算指令,而且可以處有豐富的算術(shù)運(yùn)算指令,而且可以處置置4 4種類型的數(shù)據(jù),無符號種類型的數(shù)據(jù),無符號/ /有符號、有符號、8/168/16位二進(jìn)制數(shù)、位二進(jìn)制數(shù)、無符號緊縮型無符號緊縮型/ /非緊縮型十進(jìn)制。非緊縮型十進(jìn)制。根據(jù)運(yùn)算結(jié)果影響標(biāo)志位,有時(shí)要利用某些標(biāo)志根據(jù)運(yùn)算結(jié)果影響標(biāo)志位,有時(shí)要利用某些標(biāo)志位才干得到正確的結(jié)果。位才干得到正確的結(jié)果。分成分成5 5小類:小類:加法加法減法減法乘法乘法除法除法十進(jìn)制調(diào)整指令十進(jìn)制調(diào)整指令第4章 80 x86指令系統(tǒng) AX、DX存放器乘除AX存放器乘除AX、D

19、X存放器乘除AX存放器乘除AX存放器加減09分別式AX存放器乘除AX存放器加減099組合式十進(jìn)制一切的通用存放器或存儲器加減-32768+3276716位帶符號一切的通用存放器或存儲器加減-1281278位帶符號一切的通用存放器或存儲器加減06553516位無符號一切的通用存放器或存儲器加減02558位無符號二進(jìn)制第4章 80 x86指令系統(tǒng) 1.1.加法指令加法指令在微處置器中,沒有公用的在微處置器中,沒有公用的BCD碼運(yùn)算指令,碼運(yùn)算指令,運(yùn)用二進(jìn)制運(yùn)算指令進(jìn)展運(yùn)用二進(jìn)制運(yùn)算指令進(jìn)展BCD碼數(shù)的運(yùn)算,然后用碼數(shù)的運(yùn)算,然后用BCD碼運(yùn)算調(diào)整指令進(jìn)展調(diào)整,重新得到碼運(yùn)算調(diào)整指令進(jìn)展調(diào)整,重新

20、得到BCD碼的碼的結(jié)果。結(jié)果。 BCD調(diào)整指令 ASCII碼調(diào)整指令 (dst) (dst) + 1 (dst) (dst)+(src)+(CF) (dst) (dst) +(src)操作功能1CPS Z A DAA AAA INC dst ADC dst, src ADD dst, srcO標(biāo)志位影響指令格式第4章 80 x86指令系統(tǒng) 功能:源操作數(shù)和目的操作數(shù)相功能:源操作數(shù)和目的操作數(shù)相加,結(jié)果送到目的操作數(shù)。加,結(jié)果送到目的操作數(shù)。源操作數(shù):通用存放器、存儲器、源操作數(shù):通用存放器、存儲器、立刻數(shù)立刻數(shù)目的操作數(shù):通用存放器、存儲目的操作數(shù):通用存放器、存儲器器提示:目的操作數(shù)不能為

21、立刻數(shù),提示:目的操作數(shù)不能為立刻數(shù),源操作數(shù)和目的操作數(shù)不能同時(shí)為存源操作數(shù)和目的操作數(shù)不能同時(shí)為存儲器。儲器。 ADD dst, src (dst) (dst) +(src)第4章 80 x86指令系統(tǒng) 功能:源操作數(shù)和目的操作數(shù)相加外,再功能:源操作數(shù)和目的操作數(shù)相加外,再加上進(jìn)位標(biāo)志加上進(jìn)位標(biāo)志CF,結(jié)果送到目的操作數(shù)。,結(jié)果送到目的操作數(shù)。CF將重新根據(jù)結(jié)果置成新的形狀,將重新根據(jù)結(jié)果置成新的形狀,ADC指指令普通用于令普通用于16位以上的多字節(jié)數(shù)相加。位以上的多字節(jié)數(shù)相加。 ADC dst, src (dst) (dst) +(src)+1第4章 80 x86指令系統(tǒng) 功能:將目的

22、操作數(shù)當(dāng)作無符號數(shù),加功能:將目的操作數(shù)當(dāng)作無符號數(shù),加1后后結(jié)果送到目的操作數(shù)。結(jié)果送到目的操作數(shù)。目的操作數(shù):通用存放器、存儲器,但不目的操作數(shù):通用存放器、存儲器,但不允許為立刻數(shù)。允許為立刻數(shù)。間接尋址的存儲單元加間接尋址的存儲單元加1時(shí),數(shù)據(jù)長度需用時(shí),數(shù)據(jù)長度需用偽指令闡明。循環(huán)程序中,常用該指令對地址偽指令闡明。循環(huán)程序中,常用該指令對地址指針和循環(huán)計(jì)數(shù)值進(jìn)展修正。指針和循環(huán)計(jì)數(shù)值進(jìn)展修正。 INC d d d +1第4章 80 x86指令系統(tǒng) 例 4 . 3 計(jì) 算 兩 個 多 字 節(jié) 十 六 進(jìn) 制 數(shù) 之 和 :3B74AC60F8H+20D59E36C1H=? 式中被加數(shù)

23、和加數(shù)均有5個字節(jié),可以編一個循環(huán)程序?qū)崿F(xiàn)以上運(yùn)算。假設(shè)已將被加數(shù)和加數(shù)分別存入從DATA1和DATA2開場的兩個內(nèi)存區(qū),且均為低位字節(jié)在前,高位字節(jié)在后,如圖4.15所示。要求相加所得結(jié)果仍存回以DATA1為首址的內(nèi)存區(qū)。 第4章 80 x86指令系統(tǒng) 程序流程圖如圖4.16所示。程序如下:MOV CX,5;設(shè)置循環(huán)次數(shù)MOV SI,0 ;置位移量初值CLC ;清進(jìn)位CFLOOPER:MOV AL,DATA2SI;取一個加數(shù)ADC DATA1SI,AL;和一個被加數(shù)相加INC SI ;位移量加1DEC CX ;循環(huán)次數(shù)減1 JNZ LOOPER ;加完否,假設(shè)沒完,轉(zhuǎn)LOOPER,繼續(xù)相加H

24、LT ;程序暫停 第4章 80 x86指令系統(tǒng) F8H60HACH存儲器DATA174H3BHC1H36H9EHD5H20HDATA2被加數(shù)加數(shù)圖4.15 例4.3中被加數(shù)和加數(shù)在內(nèi)存中的存放情況 第4章 80 x86指令系統(tǒng) 開始初始化: 置循環(huán)次數(shù)清SI, 清進(jìn)位標(biāo)志CF取一個字節(jié)加數(shù)與一個被加數(shù)相加并送回內(nèi)存區(qū)SI加1循環(huán)次數(shù)減1循環(huán)次數(shù)到結(jié)束YN 圖4.16 例4.3的程序流程圖 第4章 80 x86指令系統(tǒng) 假設(shè)兩個對應(yīng)的假設(shè)兩個對應(yīng)的BCD數(shù)相加假設(shè)得到的結(jié)果大于數(shù)相加假設(shè)得到的結(jié)果大于9或向高位或向高位有進(jìn)位就需求運(yùn)用有進(jìn)位就需求運(yùn)用BCD碼的調(diào)整指令。碼的調(diào)整指令。AAA指令指

25、令(非緊縮型非緊縮型BCD碼加法調(diào)整指令碼加法調(diào)整指令)的操作為:的操作為:假設(shè)假設(shè)(AL) 0FH9 或或 (AF)1(低低4位位9或有進(jìn)位或有進(jìn)位)那么那么(AL) (AL)06H(AH) (AH)1(AF) 1(CF) (AF)(AL) (AL) 0FH)否那么否那么(AL) (AL) 0FH)DAA指令指令(緊縮型緊縮型BCD碼加法調(diào)整指令碼加法調(diào)整指令)的操作為:的操作為:假設(shè)假設(shè)(AL) 0FH9, (AF)1那么那么(AL) (AL)06H(AF) 1假設(shè)假設(shè)(AL) 9FH 或或 (CF)1(高四位高四位9或有進(jìn)位或有進(jìn)位)那么那么(AL) (AL)60H(CF) 1第4章 8

26、0 x86指令系統(tǒng) 例要求計(jì)算兩個至今指數(shù)之和,例要求計(jì)算兩個至今指數(shù)之和,7 78 8???捎靡????捎靡韵轮噶顚?shí)現(xiàn):下指令實(shí)現(xiàn):MOV AX, 0007HMOV AX, 0007H;(AL)=07H,(AH)=00H;(AL)=07H,(AH)=00HMOV BL, 08HMOV BL, 08H;(BL)=08H;(BL)=08HADD AL, BLADD AL, BL;(AL)=0FH;(AL)=0FHAAAAAA;(AL)=05H,(AH)=01H;(AL)=05H,(AH)=01H;(CF)=(AF)=1;(CF)=(AF)=1MOV AX, 0007HMOV AX, 0007H;(

27、AL)=07H,(AH)=00H;(AL)=07H,(AH)=00HMOV BL, 08HMOV BL, 08H;(BL)=08H;(BL)=08HADD AL, BLADD AL, BL;(AL)=0FH;(AL)=0FHDAADAA;(AL)=15H,(AH)=00H;(AL)=15H,(AH)=00H;(CF)=0,(AF)=1;(CF)=0,(AF)=1第4章 80 x86指令系統(tǒng) 2.減法指令BCD調(diào)整指令A(yù)SCII碼調(diào)整指令(dst) (src)(dst) 0 (dst)(dst) (dst) 1(dst) (dst) (src) (CF)(dst) (dst) (src)操作功能

28、AASCMP dst, src1CPS Z ADASNEG dstDEC dstSBB dst, srcSUB dst, srcO標(biāo)志位影響指令格式第4章 80 x86指令系統(tǒng) 功能:目的操作數(shù)減去源操作數(shù),功能:目的操作數(shù)減去源操作數(shù),結(jié)果送到目的操作數(shù)。結(jié)果送到目的操作數(shù)。源操作數(shù):通用存放器、存儲器、源操作數(shù):通用存放器、存儲器、立刻數(shù)立刻數(shù)目的操作數(shù):通用存放器、存儲目的操作數(shù):通用存放器、存儲器器提示:目的操作數(shù)不能為立刻數(shù),提示:目的操作數(shù)不能為立刻數(shù),源操作數(shù)和目的操作數(shù)不能同時(shí)為存源操作數(shù)和目的操作數(shù)不能同時(shí)為存儲器。不允許進(jìn)展段存放器減法。儲器。不允許進(jìn)展段存放器減法。 SU

29、B dst, src (dst) (dst) -(src)第4章 80 x86指令系統(tǒng) 功能:目的操作數(shù)減去源操作數(shù)外,再減功能:目的操作數(shù)減去源操作數(shù)外,再減去進(jìn)位標(biāo)志去進(jìn)位標(biāo)志CF,結(jié)果送到目的操作數(shù)。,結(jié)果送到目的操作數(shù)。CF將重新根據(jù)結(jié)果置成新的形狀,將重新根據(jù)結(jié)果置成新的形狀,SBB指指令普通用于令普通用于16位以上的多字節(jié)數(shù)相加。位以上的多字節(jié)數(shù)相加。 SBB dst, src (dst) (dst) -(src)-1第4章 80 x86指令系統(tǒng) 功能:將目的操作數(shù)減功能:將目的操作數(shù)減1后結(jié)果送到目的操后結(jié)果送到目的操作數(shù)。作數(shù)。目的操作數(shù):通用存放器、存儲器,但不目的操作數(shù):通

30、用存放器、存儲器,但不允許為立刻數(shù)。允許為立刻數(shù)。間接尋址的存儲單元加間接尋址的存儲單元加1時(shí),數(shù)據(jù)長度需用時(shí),數(shù)據(jù)長度需用偽指令闡明。循環(huán)程序中,常用該指令對地址偽指令闡明。循環(huán)程序中,常用該指令對地址指針和循環(huán)計(jì)數(shù)值進(jìn)展修正。指針和循環(huán)計(jì)數(shù)值進(jìn)展修正。 DEC d d d -1第4章 80 x86指令系統(tǒng) 功能:將目的操作數(shù)取負(fù)后結(jié)果送到目的功能:將目的操作數(shù)取負(fù)后結(jié)果送到目的操作數(shù)。操作數(shù)。目的操作數(shù):通用存放器、存儲器,但不目的操作數(shù):通用存放器、存儲器,但不允許為立刻數(shù)。允許為立刻數(shù)。 NEG d d 0-d 第4章 80 x86指令系統(tǒng) 功能:目的操作數(shù)減去源操作數(shù),不送回功能:目

31、的操作數(shù)減去源操作數(shù),不送回結(jié)果,只根據(jù)運(yùn)算結(jié)果置標(biāo)志位。結(jié)果,只根據(jù)運(yùn)算結(jié)果置標(biāo)志位。源操作數(shù):通用存放器、存儲器、立刻數(shù)源操作數(shù):通用存放器、存儲器、立刻數(shù)目的操作數(shù):通用存放器、存儲器目的操作數(shù):通用存放器、存儲器提示:目的操作數(shù)不能為立刻數(shù),源操作提示:目的操作數(shù)不能為立刻數(shù),源操作數(shù)和目的操作數(shù)不能同時(shí)為存儲器。不允許進(jìn)數(shù)和目的操作數(shù)不能同時(shí)為存儲器。不允許進(jìn)展段存放器比較。展段存放器比較。 CMP d, s d-s 只置標(biāo)志位第4章 80 x86指令系統(tǒng) 例4.4 內(nèi)存數(shù)據(jù)段存放了200個帶符號數(shù),首地址為TAB1,要求將各數(shù)取絕對值后存入以TAB2為首址的內(nèi)存區(qū)。 由于200個帶

32、符號數(shù)中能夠既有正數(shù),又有負(fù)數(shù),因此先要判別正負(fù)。如為正數(shù),可以原封不動地傳送到另一內(nèi)存區(qū);如為負(fù)數(shù),那么需先求補(bǔ)即可得到負(fù)數(shù)的絕對值,然后再傳送。程序如下: LEA SI,TAB1;(SI)源地址指針LEA DI,TAB2 ;(DI)目的地址指針 MOV CX,200 ;(CX)循環(huán)次數(shù) 第4章 80 x86指令系統(tǒng) CHECK: MOVAL,SI ;取一個帶符號數(shù)到ALORAL,AL ;AL內(nèi)容不變,只影響標(biāo)志位JNSNEXT ;假設(shè)(SF)=0,那么轉(zhuǎn)NEXTNEG AL ;否那么求補(bǔ)NEXT:MOV DI,AL ;傳送到目的地址INC SI ;源地址加1INC DI ;目的地址加1DE

33、C CX ;循環(huán)次數(shù)減1JNZ CHECK ;如不等于零,那么轉(zhuǎn)CHECKHLT ;停頓 第4章 80 x86指令系統(tǒng) AAS指令的操作為:指令的操作為:假設(shè)假設(shè)(AL) 0FH9 或或 (AF)1那么那么(AL) (AL)06H(AH) (AH)1(AF) 1(CF) (AF)(AL) (AL) 0FH)否那么否那么(AL) (AL) 0FH)DAS指令的操作為:指令的操作為:假設(shè)假設(shè)(AL) 0FH9, (AF)1那么那么(AL) (AL)06H(AF) 1假設(shè)假設(shè)(AL) 9FH 或或 (CF)1那么那么(AL) (AL)60H(CF) 1第4章 80 x86指令系統(tǒng) 3.乘法指令BCD

34、調(diào)整指令(AX) (src) (AL)(DX:AX) (src) (AX)(AX) (src) (AL)(DX:AX) (src) (AX)操作功能CPS Z AAAMIMUL srcMUL srcO標(biāo)志位影響指令格式AL源操作數(shù)ALAHAX源操作數(shù)AXDX第4章 80 x86指令系統(tǒng) 功能:完成兩個無符號的二進(jìn)制數(shù)相乘。功能:完成兩個無符號的二進(jìn)制數(shù)相乘。被乘數(shù):隱含在累加器被乘數(shù):隱含在累加器AX或或AL中中乘數(shù):指令中由乘數(shù):指令中由s指定的源操作數(shù),通用存指定的源操作數(shù),通用存放器或存儲器操作數(shù)。放器或存儲器操作數(shù)。積:相乘后得到雙倍長的積積:相乘后得到雙倍長的積8位二進(jìn)制數(shù)乘法:其位

35、二進(jìn)制數(shù)乘法:其16位的積高位的積高8位存于位存于AH,低,低8位存于位存于AL中。中。16位二進(jìn)制數(shù)乘法:其位二進(jìn)制數(shù)乘法:其32位的積高位的積高16位存位存于于DX,低,低16位存于位存于AX中。中。 MUL s 無符號乘法指令第4章 80 x86指令系統(tǒng) 功能:完成兩個有符號的二進(jìn)制數(shù)相乘。功能:完成兩個有符號的二進(jìn)制數(shù)相乘。被乘數(shù):隱含在累加器被乘數(shù):隱含在累加器AX或或AL中中乘數(shù):指令中由乘數(shù):指令中由s指定的源操作數(shù),通用存指定的源操作數(shù),通用存放器或存儲器操作數(shù)。放器或存儲器操作數(shù)。積:相乘后得到雙倍長的積積:相乘后得到雙倍長的積8位二進(jìn)制數(shù)乘法:其位二進(jìn)制數(shù)乘法:其16位的積

36、高位的積高8位存于位存于AH,低,低8位存于位存于AL中。中。16位二進(jìn)制數(shù)乘法:其位二進(jìn)制數(shù)乘法:其32位的積高位的積高16位存位存于于DX,低,低16位存于位存于AX中。中。 IMUL s 有符號乘法指令第4章 80 x86指令系統(tǒng) 4.除法指令假設(shè)(AX)8000H,那么(DX) 0000H,否那么(DX) FFFFHCWD假設(shè)(AL)80H,那么(AH) 00H,否那么(AH) FFHCBWBCD調(diào)整指令(AL) (AX)/(src)的商(AH) (AX)/(src)的余數(shù)(AX) (DX:AX) /(src)的商(DX) (DX:AX) /(src)的余數(shù)(AL) (AX)/(src)的商(AH) (AX)/(src)的余數(shù)(AX) (DX:AX) /(src)的商(DX) (DX:AX) /(src)的余數(shù)操作功能CPS Z AAADIDIV srcDIV srcO標(biāo)志位影響指令格式第4章 80 x8

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論