微型計算機(jī)原理 第3章 80868088的尋址方式與指令系統(tǒng)_第1頁
微型計算機(jī)原理 第3章 80868088的尋址方式與指令系統(tǒng)_第2頁
微型計算機(jī)原理 第3章 80868088的尋址方式與指令系統(tǒng)_第3頁
微型計算機(jī)原理 第3章 80868088的尋址方式與指令系統(tǒng)_第4頁
微型計算機(jī)原理 第3章 80868088的尋址方式與指令系統(tǒng)_第5頁
已閱讀5頁,還剩106頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第3章 8086的尋址方式和指令系統(tǒng) 第3章 8086的尋址方式和指令系統(tǒng) 3.1 8086/80883.1 8086/8088的尋址方式的尋址方式 計算機(jī)指令的一般格式:計算機(jī)指令的一般格式:操作碼字段操作碼字段:指示計算機(jī)要執(zhí)行的操作。指示計算機(jī)要執(zhí)行的操作。操作數(shù)字段操作數(shù)字段:指出在指令執(zhí)行過程中所需要的操作數(shù)。指出在指令執(zhí)行過程中所需要的操作數(shù)。 可以是操作數(shù)本身可以是操作數(shù)本身 可以是操作數(shù)地址可以是操作數(shù)地址具體形式:具體形式: 可以是地址的一部分可以是地址的一部分 可以是指向操作數(shù)地址的指針可以是指向操作數(shù)地址的指針 可以是其他有關(guān)操作數(shù)的信息可以是其他有關(guān)操作數(shù)的信息第3章

2、8086的尋址方式和指令系統(tǒng) 3.1.1 3.1.1 與數(shù)據(jù)有關(guān)的尋址方式與數(shù)據(jù)有關(guān)的尋址方式立即數(shù)尋址立即數(shù)尋址寄存器尋址寄存器尋址直接尋址直接尋址寄存器間接尋址寄存器間接尋址寄存器相對尋址寄存器相對尋址 基址變址尋址基址變址尋址相對基址變址尋址相對基址變址尋址第3章 8086的尋址方式和指令系統(tǒng) 1立即數(shù)尋址 定定 義:義:操作數(shù)直接放在指令中,作為指令的一部分存放在代碼段操作數(shù)直接放在指令中,作為指令的一部分存放在代碼段里,這種操作數(shù)稱為立即操作數(shù),該尋址方式就是立即數(shù)尋址方式。里,這種操作數(shù)稱為立即操作數(shù),該尋址方式就是立即數(shù)尋址方式。 操 作 數(shù)指 令說說 明:明: 立即數(shù)可以是位或

3、立即數(shù)可以是位或1616位的。如果是位的。如果是1616位立即數(shù),則高位立即數(shù),則高8 8位放在位放在高地址高地址, ,低低8 8位放在低地址。位放在低地址。 使用場合:由于立即數(shù)用來表示常數(shù),所以立即數(shù)尋址方式經(jīng)使用場合:由于立即數(shù)用來表示常數(shù),所以立即數(shù)尋址方式經(jīng)常用于給寄存器賦初值。常用于給寄存器賦初值。只能用于源操作數(shù)字段,不能用于目的操作數(shù)字段。只能用于源操作數(shù)字段,不能用于目的操作數(shù)字段。 由于立即數(shù)可以從指令中直接取得,因此由于立即數(shù)可以從指令中直接取得,因此CPUCPU不需要另外占用總不需要另外占用總線周期去取操作數(shù),故立即數(shù)尋址方式顯著的特點(diǎn)就是速度快。線周期去取操作數(shù),故立

4、即數(shù)尋址方式顯著的特點(diǎn)就是速度快。圖圖3.1 立即數(shù)尋址立即數(shù)尋址第3章 8086的尋址方式和指令系統(tǒng) 指令代碼指令代碼操作數(shù)操作數(shù)指指 令令例如:MOV AH,28H第3章 8086的尋址方式和指令系統(tǒng) 2寄存器尋址 定義:操作數(shù)在指定的寄存器中,指令中給出寄存器編號。定義:操作數(shù)在指定的寄存器中,指令中給出寄存器編號。說說 明:明: 對于對于16位操作數(shù),可以用字寄存器:、位操作數(shù),可以用字寄存器:、 、以及段寄存器;、以及段寄存器; 對于位操作數(shù),可以用字節(jié)寄存器:、對于位操作數(shù),可以用字節(jié)寄存器:、 、;、; 因?yàn)樵搶ぶ贩绞讲僮鲾?shù)在寄存器中,不需訪問存儲器,因?yàn)樵搶ぶ贩绞讲僮鲾?shù)在寄存器

5、中,不需訪問存儲器, 所以存取速度較高。所以存取速度較高。 圖圖3.3 寄存器尋址寄存器尋址第3章 8086的尋址方式和指令系統(tǒng) C P U指指 令令寄存器編號寄存器編號寄寄 存存 器器操操 作作 數(shù)數(shù)C P U例如:MOV AH,28H例如:MOV AL, AH第3章 8086的尋址方式和指令系統(tǒng) 定義:定義:在指令中直接給出位移量,它存放在代碼段中指令操作碼之后,在指令中直接給出位移量,它存放在代碼段中指令操作碼之后,它可能是一個數(shù)值地址,也可能是符號地址。它可能是一個數(shù)值地址,也可能是符號地址。圖圖3.5 直接尋址直接尋址 3直接尋址直接尋址 說說 明:明: 當(dāng)操作數(shù)在內(nèi)存中,必須先求出

6、操作數(shù)的物理地址,然后再根據(jù)物理地址訪問存儲當(dāng)操作數(shù)在內(nèi)存中,必須先求出操作數(shù)的物理地址,然后再根據(jù)物理地址訪問存儲器從而取得操作數(shù)。物理地址器從而取得操作數(shù)。物理地址PA16D(段寄存器段寄存器)+EA ( EA 是有效地址是有效地址) 操作數(shù)一般在內(nèi)存數(shù)據(jù)段中,物理地址操作數(shù)一般在內(nèi)存數(shù)據(jù)段中,物理地址PA16(DS)+EA=16(DS)+位移量位移量 匯編語言中可以用變量名(符號地址)代替數(shù)值地址,但要注意變量屬性,在計算匯編語言中可以用變量名(符號地址)代替數(shù)值地址,但要注意變量屬性,在計算其物理地址時也默認(rèn)以其物理地址時也默認(rèn)以DS來提供段基值。來提供段基值。 IBM PC機(jī)允許數(shù)據(jù)

7、存放在數(shù)據(jù)段以外的其它段中(可以是機(jī)允許數(shù)據(jù)存放在數(shù)據(jù)段以外的其它段中(可以是CS,SS,ES),但必),但必須在指令中用段跨越(超越)前綴來指定。須在指令中用段跨越(超越)前綴來指定。第3章 8086的尋址方式和指令系統(tǒng) +指指 令令段內(nèi)偏移地址段內(nèi)偏移地址數(shù)據(jù)段寄存器數(shù)據(jù)段寄存器DS段段 基基 址址C P U操操 作作 數(shù)數(shù)例如:MOV BH,1028H第3章 8086的尋址方式和指令系統(tǒng) 4寄存器間接尋址寄存器間接尋址 定義:操作數(shù)的有效地址定義:操作數(shù)的有效地址EA在基址寄存器在基址寄存器(BX/BP)或變址寄存器或變址寄存器(SI/DI)中,而操作數(shù)在內(nèi)存中。中,而操作數(shù)在內(nèi)存中。圖

8、圖3.7 寄存器間接尋址寄存器間接尋址第3章 8086的尋址方式和指令系統(tǒng) 說明:說明: 若選擇若選擇BXBX或或SISI或或DIDI寄存器提供的間址,則操作數(shù)一般在數(shù)據(jù)段寄存器提供的間址,則操作數(shù)一般在數(shù)據(jù)段區(qū)域中,用區(qū)域中,用DSDS提供段基址,即操作數(shù)物理地址為:提供段基址,即操作數(shù)物理地址為:物理地址物理地址PA=16PA=16(DSDS)+ EA=16+ EA=16(DSDS)+ +(BXBX)或()或(SISI)或)或(DIDI)若選擇若選擇BPBP寄存器提供的間址,則操作數(shù)在堆棧段區(qū)域中,用寄存器提供的間址,則操作數(shù)在堆棧段區(qū)域中,用SSSS提提供段基址,即操作數(shù)物理地址為:供段

9、基址,即操作數(shù)物理地址為: 物理地址物理地址PA=16PA=16(SSSS)+ EA =16+ EA =16(SSSS)+ +(BPBP) 用用SISI、DIDI、BXBX、BPBP作為間接尋址時允許使用段跨越前綴,從而作為間接尋址時允許使用段跨越前綴,從而實(shí)現(xiàn)對其它段中數(shù)據(jù)的存取。實(shí)現(xiàn)對其它段中數(shù)據(jù)的存取。 用途:這種尋址方法適用于數(shù)組、字符串、表格的處理。用途:這種尋址方法適用于數(shù)組、字符串、表格的處理。第3章 8086的尋址方式和指令系統(tǒng) 例如:MOV CL,BX第3章 8086的尋址方式和指令系統(tǒng) 5 5寄存器相對尋址寄存器相對尋址 定義:定義:操作數(shù)的有效地址是一個基址或變址寄存器的

10、操作數(shù)的有效地址是一個基址或變址寄存器的內(nèi)容和指令中指定的內(nèi)容和指令中指定的8 8位或位或1616位位移量之和。尋址方式如位位移量之和。尋址方式如圖圖3.93.9所示:所示:圖圖3.9 寄存器相對尋址方式寄存器相對尋址方式第3章 8086的尋址方式和指令系統(tǒng) 若選擇若選擇BPBP寄存器提供的基地址,則操作數(shù)在堆棧段區(qū)域中,用寄存器提供的基地址,則操作數(shù)在堆棧段區(qū)域中,用SSSS提供段基址,即操作數(shù)物理地址為:提供段基址,即操作數(shù)物理地址為: 物理地址物理地址PA=16DPA=16D(SSSS)+EA=16D+EA=16D(SSSS)+ +位移量位移量+ +(BPBP) 說明:說明: 若選擇若選

11、擇BX或或SI或或DI寄存器提供的基地址或變地址,則操作數(shù)寄存器提供的基地址或變地址,則操作數(shù)一般在數(shù)據(jù)段區(qū)域中,用一般在數(shù)據(jù)段區(qū)域中,用DS提供段基址,即操作數(shù)物理地址為:提供段基址,即操作數(shù)物理地址為:物理地址物理地址PA=16(DS)+ EA=16(DS)+位移量位移量+(BX)或(或(SI)或()或(DI) 寄存器相對尋址方式允許使用段跨越前綴。寄存器相對尋址方式允許使用段跨越前綴。 用途:也適用于數(shù)組、字符串、表格的處理。用途:也適用于數(shù)組、字符串、表格的處理。第3章 8086的尋址方式和指令系統(tǒng) 例如:MOV CL,20HBX第3章 8086的尋址方式和指令系統(tǒng) 6 6基址變址尋址

12、基址變址尋址 定義:定義:操作數(shù)的有效地址是一個基址寄存器和一個變操作數(shù)的有效地址是一個基址寄存器和一個變址寄存器的內(nèi)容之和,基址寄存器名和變址寄存器名均址寄存器的內(nèi)容之和,基址寄存器名和變址寄存器名均由指令指定。尋址方式如圖由指令指定。尋址方式如圖3.113.11所示:所示:圖圖3.11 基址變址尋址基址變址尋址第3章 8086的尋址方式和指令系統(tǒng) 說明:說明:若選擇若選擇BX寄存器提供基地址,寄存器提供基地址,SI或或DI寄存器提供變地址,則操作數(shù)寄存器提供變地址,則操作數(shù)一般在數(shù)據(jù)段區(qū)域中,用一般在數(shù)據(jù)段區(qū)域中,用DS提供段基址,即操作數(shù)物理地址為:提供段基址,即操作數(shù)物理地址為:物理地

13、址物理地址PA=16(DS)+ EA=16(DS)+(BX)+(SI)或(DI)若選擇若選擇BPBP寄存器提供基地址,寄存器提供基地址,SISI或或DIDI寄存器提供變地址,則操作數(shù)寄存器提供變地址,則操作數(shù)在堆棧段區(qū)域中,用在堆棧段區(qū)域中,用SSSS提供段基址,即操作數(shù)物理地址為:提供段基址,即操作數(shù)物理地址為:物理地址物理地址PA=16PA=16(SSSS)+EA=16+EA=16(SSSS)+ +(BPBP)+ +(SISI)或()或(DIDI)必須是一個基址寄存器和一個變址寄存器的組合;必須是一個基址寄存器和一個變址寄存器的組合;寄存器相對尋址方式允許使用段跨越前綴,適用于數(shù)組、字符串

14、、寄存器相對尋址方式允許使用段跨越前綴,適用于數(shù)組、字符串、表格的處理。表格的處理。第3章 8086的尋址方式和指令系統(tǒng) 例如:MOV CL,BX+SI第3章 8086的尋址方式和指令系統(tǒng) 7 7相對基址變址尋址相對基址變址尋址 定定 義:義:操作數(shù)的有效地址是一個基址寄存器和一個變址寄操作數(shù)的有效地址是一個基址寄存器和一個變址寄存器的內(nèi)容和存器的內(nèi)容和8 8位或位或1616位位移量之和。尋址方式如位位移量之和。尋址方式如圖圖3.133.13所示:所示:圖圖3.13 相對基址變址尋址相對基址變址尋址第3章 8086的尋址方式和指令系統(tǒng) 若選擇若選擇BP寄存器提供基地址,寄存器提供基地址,SI或

15、或DI寄存器提供變地址,則操寄存器提供變地址,則操作數(shù)在堆棧段區(qū)域中,用作數(shù)在堆棧段區(qū)域中,用SS提供段基址,即操作數(shù)物理地址為:提供段基址,即操作數(shù)物理地址為:物理地址物理地址PA=16(SS)+ EA=16(SS)+位移量位移量+(BP)+(SI)或()或(DI) 說明: 若選擇若選擇BX寄存器提供基地址,寄存器提供基地址,SI或或DI寄存器提供變地址,則寄存器提供變地址,則操作數(shù)一般在數(shù)據(jù)段區(qū)域中,用操作數(shù)一般在數(shù)據(jù)段區(qū)域中,用DS提供段基址,即操作數(shù)物理地提供段基址,即操作數(shù)物理地址為:址為:物理地址物理地址PA=16(DS)+ EA=16(DS)+位移量位移量+(BX)+(SI)或(

16、)或(DI) 這種尋址方式為處理堆棧中的數(shù)組提供方便:用這種尋址方式為處理堆棧中的數(shù)組提供方便:用BPBP可指向棧頂,可指向棧頂,位移量表示數(shù)組第一個元素到棧頂?shù)木嚯x,變址寄存器指向數(shù)組位移量表示數(shù)組第一個元素到棧頂?shù)木嚯x,變址寄存器指向數(shù)組元素。元素。第3章 8086的尋址方式和指令系統(tǒng) 例如:MOV CL,BX+SI+15H例如:MOV CL,15H BX SI第3章 8086的尋址方式和指令系統(tǒng) 3.1.2 與轉(zhuǎn)移地址有關(guān)的尋址方式與轉(zhuǎn)移地址有關(guān)的尋址方式 1段內(nèi)直接尋址段內(nèi)直接尋址 定義:轉(zhuǎn)向的有效地址定義:轉(zhuǎn)向的有效地址EA是當(dāng)前是當(dāng)前IP寄存器的內(nèi)容寄存器的內(nèi)容和指令中指定的和指令

17、中指定的8位或位或16位位移量之和。尋址方式如位位移量之和。尋址方式如圖圖3.15所示:所示:圖圖3.15 段內(nèi)直接尋址段內(nèi)直接尋址 第3章 8086的尋址方式和指令系統(tǒng) 說明:說明:(1)在機(jī)器指令中,轉(zhuǎn)向的有效地址在機(jī)器指令中,轉(zhuǎn)向的有效地址EA用相對于當(dāng)前用相對于當(dāng)前IP值的位值的位移量來表示,位移量移量來表示,位移量=轉(zhuǎn)向有效地址(當(dāng)前轉(zhuǎn)向有效地址(當(dāng)前IP)(2)對于對于16位的位移量,它可正可負(fù),取值范圍是位的位移量,它可正可負(fù),取值范圍是3276832767;對于;對于8位的位移量,它也可正可負(fù),取值范圍是位的位移量,它也可正可負(fù),取值范圍是128127;(3)這種尋址方式適用于

18、條件轉(zhuǎn)移、無條轉(zhuǎn)移指令及調(diào)用指令這種尋址方式適用于條件轉(zhuǎn)移、無條轉(zhuǎn)移指令及調(diào)用指令CALL。(4)指令匯編語言格式:指令匯編語言格式:JMP NEAR PTR LL1 ;(;(IP)(當(dāng)前(當(dāng)前IP)+16位位移量位位移量JMP SHORT LL2 ;(;(IP)(當(dāng)前(當(dāng)前IP)+8位位移量位位移量第3章 8086的尋址方式和指令系統(tǒng) 2 2段內(nèi)間接尋址段內(nèi)間接尋址 定義:定義:轉(zhuǎn)向的有效地址是一個寄存器或一個存儲單元的轉(zhuǎn)向的有效地址是一個寄存器或一個存儲單元的內(nèi)容,該內(nèi)容可以用數(shù)據(jù)尋址方式中除立即數(shù)以外的任何一內(nèi)容,該內(nèi)容可以用數(shù)據(jù)尋址方式中除立即數(shù)以外的任何一種尋址方式取得,然后用得到的

19、轉(zhuǎn)向有效地址來取代種尋址方式取得,然后用得到的轉(zhuǎn)向有效地址來取代IPIP寄存寄存器的內(nèi)容。尋址方式如圖器的內(nèi)容。尋址方式如圖3.173.17所示:所示:圖圖3.17 段內(nèi)間接尋址段內(nèi)間接尋址第3章 8086的尋址方式和指令系統(tǒng) 說明:說明:(1 1)這種尋址方式和以下二種段間尋址方式都不能用于條件轉(zhuǎn)移這種尋址方式和以下二種段間尋址方式都不能用于條件轉(zhuǎn)移指令,而無條件轉(zhuǎn)移指令指令,而無條件轉(zhuǎn)移指令JMPJMP和調(diào)用指令和調(diào)用指令CALLCALL則可用則可用4 4種尋址方式種尋址方式中的任意一種。中的任意一種。(2 2)匯編格式:匯編格式:JMP BXJMP BX JMP WORD PTR BX

20、JMP WORD PTR BX其中:其中:WORD PTRWORD PTR用以指出用以指出BXBX尋址所取得轉(zhuǎn)向地址是一個字的有尋址所取得轉(zhuǎn)向地址是一個字的有效地址。效地址。(3 3)以上兩種尋址方式都是段內(nèi)轉(zhuǎn)移,所以直接把求得的有效地以上兩種尋址方式都是段內(nèi)轉(zhuǎn)移,所以直接把求得的有效地址送到址送到IPIP寄存器就可以了。計算物理地址公式為:寄存器就可以了。計算物理地址公式為: 物理地址:物理地址:PA=16PA=16(CSCS)+ EA+ EA第3章 8086的尋址方式和指令系統(tǒng) 3 3段間直接尋址段間直接尋址 定義:指令中直接提供轉(zhuǎn)向段基址和偏移地址,從而實(shí)定義:指令中直接提供轉(zhuǎn)向段基址和

21、偏移地址,從而實(shí)現(xiàn)從一段轉(zhuǎn)移到另一段的操作。尋址方式如圖現(xiàn)從一段轉(zhuǎn)移到另一段的操作。尋址方式如圖3.183.18所示:所示:圖圖3.18 3.18 段間直接尋址段間直接尋址 說明:說明:(1 1)用指令中指定的偏移地址用指令中指定的偏移地址IPIP,用指令中指定的段地址,用指令中指定的段地址CSCS(2 2)指令的匯編語言格式:指令的匯編語言格式: JMP FAR PTR LLLJMP FAR PTR LLL第3章 8086的尋址方式和指令系統(tǒng) 說明:說明:(1 1)用內(nèi)存中兩個相繼字(即雙字)的低字取代用內(nèi)存中兩個相繼字(即雙字)的低字取代IPIP,高字取代,高字取代CSCS;(2 2)指令

22、匯編語言格式:指令匯編語言格式: JMP DWORD PTR BXJMP DWORD PTR BX 其中,其中,DWORD PTRDWORD PTR是雙字操作符,轉(zhuǎn)向地址雙字(段間轉(zhuǎn)移),是雙字操作符,轉(zhuǎn)向地址雙字(段間轉(zhuǎn)移),BXBX是數(shù)據(jù)尋址方式的寄存器間接尋址。是數(shù)據(jù)尋址方式的寄存器間接尋址。4 4段間間接尋址段間間接尋址定義:定義:用內(nèi)存中兩個相繼字的內(nèi)容取代用內(nèi)存中兩個相繼字的內(nèi)容取代IPIP、CSCS。內(nèi)存單元的地址由。內(nèi)存單元的地址由緊跟在操作碼之后除立即數(shù)方式和寄存器方式以外的任何一種尋址緊跟在操作碼之后除立即數(shù)方式和寄存器方式以外的任何一種尋址方式取得。尋址方式為:方式取得。

23、尋址方式為:圖圖3.20 段間間接尋址段間間接尋址第3章 8086的尋址方式和指令系統(tǒng) 3.2 80863.2 8086的指令系統(tǒng)的指令系統(tǒng) 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令(Data transfer Instruction)(Data transfer Instruction) 算術(shù)運(yùn)算指令(算術(shù)運(yùn)算指令(Arithmetic InstuctionArithmetic Instuction) 邏輯運(yùn)算和移位指令邏輯運(yùn)算和移位指令(Logic & Shift Instruction)(Logic & Shift Instruction) 串操作指令串操作指令(String manipulation

24、Instruction)(String manipulation Instruction) 控制轉(zhuǎn)移指令(控制轉(zhuǎn)移指令(Control Transfer InstructionControl Transfer Instruction) 處理器控制指令(處理器控制指令(Processor Control InstructionProcessor Control Instruction)第3章 8086的尋址方式和指令系統(tǒng) 3.2.1 數(shù)據(jù)傳送指令 CPUCPU的寄存器之間的寄存器之間80868086數(shù)據(jù)傳送指令用于實(shí)現(xiàn)數(shù)據(jù)傳送指令用于實(shí)現(xiàn) CPUCPU與存儲器之間與存儲器之間 的數(shù)據(jù)傳送的數(shù)據(jù)傳

25、送 CPUCPU與與I/OI/O端口之間端口之間 立即數(shù)向寄存器或存儲器立即數(shù)向寄存器或存儲器 通用傳送指令通用傳送指令數(shù)據(jù)傳送指令有四種:數(shù)據(jù)傳送指令有四種: 累加器專用傳送指令累加器專用傳送指令 地址傳送指令地址傳送指令 標(biāo)志傳送指令標(biāo)志傳送指令 第3章 8086的尋址方式和指令系統(tǒng) (1 1)MOV (Movement)MOV (Movement)傳送指令傳送指令格式:格式:MOV destMOV dest,srcsrc執(zhí)行的操作:(執(zhí)行的操作:(destdest)(src)(src) 把源操作數(shù)的內(nèi)容傳送給目的操作數(shù)。對標(biāo)志位沒有影響;可把源操作數(shù)的內(nèi)容傳送給目的操作數(shù)。對標(biāo)志位沒有影

26、響;可以完成字節(jié)(或字)型傳送,但源操作數(shù)和目的操作數(shù)之間的長度以完成字節(jié)(或字)型傳送,但源操作數(shù)和目的操作數(shù)之間的長度必須匹配。必須匹配。1通用傳送指令通用傳送指令(除了通用傳送指令(除了XCHGXCHG以外)是唯一允許以段寄存器為操作數(shù)的指令。以外)是唯一允許以段寄存器為操作數(shù)的指令。圖圖3.21 MOV指令數(shù)據(jù)傳送方向指令數(shù)據(jù)傳送方向第3章 8086的尋址方式和指令系統(tǒng) MOVMOV指令能實(shí)現(xiàn)以下操作:指令能實(shí)現(xiàn)以下操作: CPU CPU內(nèi)部寄存器之間數(shù)據(jù)的任意傳送(除了代碼段寄存器內(nèi)部寄存器之間數(shù)據(jù)的任意傳送(除了代碼段寄存器CSCS和指令指針和指令指針I(yè)PIP以外),以外),但段寄

27、存器之間不能直接傳送。但段寄存器之間不能直接傳送。 立即數(shù)傳送至立即數(shù)傳送至CPUCPU內(nèi)部通用寄存器(內(nèi)部通用寄存器(AXAX、BXBX、CXCX、DXDX、BPBP、SPSP、SISI、DIDI),用于給寄存器賦初值,或者傳送給存儲器。),用于給寄存器賦初值,或者傳送給存儲器。但但不能直接給段寄存器賦值。不能直接給段寄存器賦值。 CPU CPU內(nèi)部寄存器(除內(nèi)部寄存器(除CSCS和和IPIP外)與存儲器之間的數(shù)據(jù)傳送,可外)與存儲器之間的數(shù)據(jù)傳送,可實(shí)現(xiàn)一個字節(jié)或一個字的傳送,實(shí)現(xiàn)一個字節(jié)或一個字的傳送,但存儲單元之間不能直接傳送。但存儲單元之間不能直接傳送。第3章 8086的尋址方式和指

28、令系統(tǒng) 使用使用MOVMOV指令,應(yīng)注意以下幾點(diǎn):指令,應(yīng)注意以下幾點(diǎn):兩個存儲單元之間不能直接傳送數(shù)據(jù);兩個存儲單元之間不能直接傳送數(shù)據(jù);立即數(shù)不能直接傳送給段寄存器;立即數(shù)不能直接傳送給段寄存器;段寄存器之間不能直接傳送數(shù)據(jù);段寄存器之間不能直接傳送數(shù)據(jù);立即數(shù)不能作為目的操作數(shù);立即數(shù)不能作為目的操作數(shù);CSCS和和IPIP不能作為目的操作數(shù)。不能作為目的操作數(shù)。 如:如:MOV MOV CSCS,AX AX ;(非法);(非法)CXCX和和AXAX不能作為間接尋址的寄存器。不能作為間接尋址的寄存器。 如:如:MOV MOV ALAL,CX CX ;(非法);(非法)第3章 8086的尋

29、址方式和指令系統(tǒng) (2 2)PUSH PUSH 進(jìn)棧指令進(jìn)棧指令 格式:格式:PUSH srcPUSH src 執(zhí)行的操作:(執(zhí)行的操作:(SPSP)(SPSP)2 2 (SPSP)+1+1,(,(SPSP)(srcsrc)(3 3)POP POP 出棧指令出棧指令 格式:格式:POP destPOP dest 執(zhí)行的操作:(執(zhí)行的操作:(destdest)(SPSP)+1+1,(,(SPSP) (SPSP)(SPSP)2 2第3章 8086的尋址方式和指令系統(tǒng) 例如:PUSH AX例如:POP BX第3章 8086的尋址方式和指令系統(tǒng) 使用堆棧操作指令需注意以下幾點(diǎn): 堆棧操作都堆棧操作都按

30、字操作按字操作,(PUSH AL非法、非法、POP AL非法非法); PUSH和和POP指令的操作數(shù)有三種:通用寄存器、段寄存器(指令的操作數(shù)有三種:通用寄存器、段寄存器(CS除除 外,外,PUSH CS合法,合法,POP CS非法)、存儲器;非法)、存儲器; 當(dāng)字?jǐn)?shù)據(jù)進(jìn)棧時,將它的低字節(jié)放到低地址,高字節(jié)放到高地址;當(dāng)字?jǐn)?shù)據(jù)進(jìn)棧時,將它的低字節(jié)放到低地址,高字節(jié)放到高地址; 當(dāng)字?jǐn)?shù)據(jù)出棧時,注意它的低字節(jié)在低地址,高字節(jié)在高地址;當(dāng)字?jǐn)?shù)據(jù)出棧時,注意它的低字節(jié)在低地址,高字節(jié)在高地址; 堆棧的最大容量就是堆棧的最大容量就是SP的初始化值;的初始化值; 堆棧原則是堆棧原則是“后進(jìn)先出后進(jìn)先出”

31、。因此,保存和恢復(fù)字?jǐn)?shù)據(jù)時,。因此,保存和恢復(fù)字?jǐn)?shù)據(jù)時,PUSH、POP 指令應(yīng)該成對使用,以保證數(shù)據(jù)的正確性和保持堆棧原有狀態(tài)。指令應(yīng)該成對使用,以保證數(shù)據(jù)的正確性和保持堆棧原有狀態(tài)。第3章 8086的尋址方式和指令系統(tǒng) (4 4)XCHGXCHG交換指令交換指令 格式:格式:XCHG destXCHG dest,srcsrc 執(zhí)行的操作:執(zhí)行的操作:(dest)(src)(dest)(src) 即源操作數(shù)與目的操作數(shù)相交換。它可以實(shí)現(xiàn)字節(jié)交換,也可即源操作數(shù)與目的操作數(shù)相交換。它可以實(shí)現(xiàn)字節(jié)交換,也可以實(shí)現(xiàn)字交換。交換的過程可以在以實(shí)現(xiàn)字交換。交換的過程可以在通用寄存器之間通用寄存器之間,

32、也可以在,也可以在通用通用寄存器與存儲器寄存器與存儲器之間進(jìn)行。之間進(jìn)行。使用交換指令,注意以下兩點(diǎn):使用交換指令,注意以下兩點(diǎn): 兩個存儲單元之間不能直接交換,兩個操作數(shù)中必須有一個在寄兩個存儲單元之間不能直接交換,兩個操作數(shù)中必須有一個在寄存器中。存器中。 段寄存器(段寄存器(CSCS、DSDS、SSSS、ESES)和指令指針)和指令指針I(yè)PIP不能用于交換指令。不能用于交換指令。 例如:XCHG AL,BL第3章 8086的尋址方式和指令系統(tǒng) 2. 2. 累加器專用傳送指令累加器專用傳送指令累加器累加器accacc(即(即AXAX或或ALAL)是數(shù)據(jù)傳送的核心。)是數(shù)據(jù)傳送的核心。(1

33、1)IN IN 輸入指令輸入指令長格式:長格式:IN ALIN AL,portport(字節(jié)端口地址)(字節(jié)端口地址) IN AXIN AX,portport(字端口地址)(字端口地址)執(zhí)行的操作:(執(zhí)行的操作:(ALAL)(portport) (AXAX)(port+1port+1,portport)短格式:短格式:IN ALIN AL,DXDX(代表字節(jié)端口地址)(代表字節(jié)端口地址) IN AXIN AX,DXDX(代表字端口地址)(代表字端口地址)執(zhí)行的操作:(執(zhí)行的操作:(ALAL)(DXDX) (AXAX)(DXDX)+1+1,(,(DXDX)直接尋址方式直接尋址方式間接尋址方式間接

34、尋址方式第3章 8086的尋址方式和指令系統(tǒng) (2 2)OUT OUT 輸出指令輸出指令長格式:長格式: OUT portOUT port,ALAL OUT port OUT port,AXAX執(zhí)行的操作:(執(zhí)行的操作:(portport)(ALAL) (port+1port+1,portport)(AXAX)短格式:短格式: OUT DXOUT DX,ALAL OUT DX OUT DX,AXAX執(zhí)行的操作:(執(zhí)行的操作:(DXDX)(ALAL) (DXDX)+1+1,(,(DXDX)(AXAX)即直接尋址方式即直接尋址方式即間接尋址方式即間接尋址方式第3章 8086的尋址方式和指令系統(tǒng) (

35、3 3)XLAT XLAT 換碼指令換碼指令格式:格式:XLAT str_tableXLAT str_table 或或 XLATXLATstr_tablestr_table表格符號地址(首地址),只是為了提高可讀性而設(shè)置,表格符號地址(首地址),只是為了提高可讀性而設(shè)置,是可有可無的,而指令執(zhí)行時只會使用預(yù)先已經(jīng)存入是可有可無的,而指令執(zhí)行時只會使用預(yù)先已經(jīng)存入BXBX中的表格首地中的表格首地址。該指令不影響標(biāo)志位。址。該指令不影響標(biāo)志位。執(zhí)的行操作:(執(zhí)的行操作:(ALAL)(BXBX)+ +(ALAL)XLATXLAT指令使用方法:指令使用方法: 先建立一個字節(jié)表格,表格的內(nèi)容就是所要換取

36、的代碼;先建立一個字節(jié)表格,表格的內(nèi)容就是所要換取的代碼; 然后將表格首地址存入然后將表格首地址存入BXBX; 將要換取的代碼的序號(相對于表格首地址的位移量)存入將要換取的代碼的序號(相對于表格首地址的位移量)存入ALAL; 最后再使用最后再使用XLATXLAT,該指令執(zhí)行后,轉(zhuǎn)換后的代碼就被裝入了,該指令執(zhí)行后,轉(zhuǎn)換后的代碼就被裝入了ALAL。第3章 8086的尋址方式和指令系統(tǒng) TAB第3章 8086的尋址方式和指令系統(tǒng) 3. 3. 地址傳送指令地址傳送指令共有三條將地址指針寫入指定寄存器和段寄存器的指令。共有三條將地址指針寫入指定寄存器和段寄存器的指令。 (1 1)LEA LEA 有效

37、地址送寄存器指令有效地址送寄存器指令 格式:格式:LEA reg16LEA reg16,mem16mem16執(zhí)行的操作:(執(zhí)行的操作:(reg16reg16) EA EA 該指令把源操作數(shù)的有效地址裝入指定的寄存器。通常用該指令把源操作數(shù)的有效地址裝入指定的寄存器。通常用于加載有效地址,或預(yù)置地址指針。于加載有效地址,或預(yù)置地址指針。使用使用LEALEA指令,注意以下兩點(diǎn):指令,注意以下兩點(diǎn): LEA LEA指令中的目標(biāo)寄存器必須是指令中的目標(biāo)寄存器必須是1616位的通用寄存器,源操作位的通用寄存器,源操作數(shù)必須是一個數(shù)必須是一個1616位的存儲器操作數(shù)。位的存儲器操作數(shù)。 LEA LEA指令

38、與指令與MOVMOV指令注意比較使用。指令注意比較使用。 例如:LEA BX,TAB第3章 8086的尋址方式和指令系統(tǒng) (2 2)LDS LDS 地址指針?biāo)图拇嫫骱偷刂分羔標(biāo)图拇嫫骱虳SDS指令指令 格式:格式:LDS reg16, mem32LDS reg16, mem32執(zhí)行的操作:執(zhí)行的操作:(reg16)(EA)(reg16)(EA) (DS)(EA)+2) (DS)(EA)+2) 該指令是將源操作數(shù)四個相繼的字節(jié)分別送給指令指定的寄存該指令是將源操作數(shù)四個相繼的字節(jié)分別送給指令指定的寄存器和器和DSDS。即將指令指定。即將指令指定mem32mem32單元的前兩個字節(jié)單元內(nèi)容單元的前

39、兩個字節(jié)單元內(nèi)容(16(16位偏移位偏移量量) )裝入指定通用寄存器,把后兩個字節(jié)單元內(nèi)容裝入指定通用寄存器,把后兩個字節(jié)單元內(nèi)容( (段地址段地址) ) 裝入到裝入到DSDS段寄存器。段寄存器。第3章 8086的尋址方式和指令系統(tǒng) 第3章 8086的尋址方式和指令系統(tǒng) (3 3)LES LES 地址指針?biāo)图拇嫫骱偷刂分羔標(biāo)图拇嫫骱虴SES指令指令 格式:格式:LES reg16, mem32LES reg16, mem32執(zhí)行的操作:(執(zhí)行的操作:(reg16reg16)(EAEA) (ESES)(EAEA)+2+2) 該指令是將源操作數(shù)四個相繼的字節(jié)分別送給指令指定的該指令是將源操作數(shù)四個

40、相繼的字節(jié)分別送給指令指定的寄存器和寄存器和ESES。即將指令指定。即將指令指定mem32mem32單元的前兩個字節(jié)單元內(nèi)容單元的前兩個字節(jié)單元內(nèi)容(16(16位偏移量位偏移量) )裝入指定通用寄存器,后兩個字節(jié)單元內(nèi)容裝入指定通用寄存器,后兩個字節(jié)單元內(nèi)容( (段地址段地址) ) 裝入到裝入到ESES段寄存器。用于寫遠(yuǎn)地址指針。段寄存器。用于寫遠(yuǎn)地址指針。例如:LEA DI,BX第3章 8086的尋址方式和指令系統(tǒng) 4. 4. 標(biāo)志寄存器傳送指令標(biāo)志寄存器傳送指令 80868086指令系統(tǒng)中提供了對標(biāo)志寄存器的傳送指令,通過這指令系統(tǒng)中提供了對標(biāo)志寄存器的傳送指令,通過這些指令可以讀出當(dāng)前標(biāo)

41、志寄存器的內(nèi)容,也可以對標(biāo)志寄存器些指令可以讀出當(dāng)前標(biāo)志寄存器的內(nèi)容,也可以對標(biāo)志寄存器重新設(shè)置新值。重新設(shè)置新值。80868086指令系統(tǒng)中有以下四條標(biāo)志傳送指令:指令系統(tǒng)中有以下四條標(biāo)志傳送指令:(1 1)LAHF LAHF 標(biāo)志位送標(biāo)志位送AHAH 格式:格式:LAHFLAHF執(zhí)行的操作:(執(zhí)行的操作:(AHAH)(標(biāo)志寄存器(標(biāo)志寄存器PSWPSW的低字節(jié))的低字節(jié)) (2 2)SAHF AHSAHF AH送標(biāo)志寄存器送標(biāo)志寄存器 格式:格式:SAHFSAHF執(zhí)行的操作:(標(biāo)志寄存器執(zhí)行的操作:(標(biāo)志寄存器PSWPSW的低字節(jié))的低字節(jié))(AHAH) 第3章 8086的尋址方式和指令系

42、統(tǒng) (3 3)PUSHF PUSHF 標(biāo)志寄存器進(jìn)棧指令標(biāo)志寄存器進(jìn)棧指令 格式:格式:PUSHFPUSHF執(zhí)行的操作:(執(zhí)行的操作:(SPSP)(SPSP)2 2 (SPSP)+1+1,(,(SPSP)(PSWPSW) (4 4)POPFPOPF(Pop flags off stackPop flags off stack)標(biāo)志寄存器出棧指令)標(biāo)志寄存器出棧指令 格式:格式:POPFPOPF執(zhí)行的操作:(執(zhí)行的操作:(PSWPSW)(SPSP)1 1,(,(SPSP), , (SPSP)(SPSP)2 2 使用標(biāo)志位傳送指令,使用標(biāo)志位傳送指令,注意以下兩點(diǎn):注意以下兩點(diǎn): LAHFLAHF

43、、PUSHFPUSHF不影響標(biāo)志位不影響標(biāo)志位,SAHF,SAHF、POPFPOPF由裝入的值確定標(biāo)志由裝入的值確定標(biāo)志位的值,即影響標(biāo)志位。位的值,即影響標(biāo)志位。 PUSHFPUSHF和和POPFPOPF一般分別用于子程序或中斷服務(wù)程序的首尾,起一般分別用于子程序或中斷服務(wù)程序的首尾,起保護(hù)主程序標(biāo)志和恢復(fù)主程序標(biāo)志的作用。保護(hù)主程序標(biāo)志和恢復(fù)主程序標(biāo)志的作用。第3章 8086的尋址方式和指令系統(tǒng) 數(shù)據(jù)傳送指令小節(jié)數(shù)據(jù)傳送指令小節(jié)MOVPUSH POPXCHGIN OUTXLATLEA LDS LESLAHF SAHF PUSHF POPF第3章 8086的尋址方式和指令系統(tǒng) 3.2.2 3

44、.2.2 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 加法指令加法指令 減法指令減法指令算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 乘法指令乘法指令 除法指令除法指令 輔助指令(輔助指令(十進(jìn)制調(diào)整指令等十進(jìn)制調(diào)整指令等)第3章 8086的尋址方式和指令系統(tǒng) 1. 1. 加法指令加法指令80868086具有具有3 3種加法操作指令:種加法操作指令:(1 1)ADD ADD 不帶進(jìn)位加法指令不帶進(jìn)位加法指令 格式:格式:ADD destADD dest,srcsrc執(zhí)行的操作:執(zhí)行的操作:(dest) (dest)+(src)(dest) (dest)+(src)使用使用ADDADD指令,指令,注意以下三點(diǎn):注意以下三點(diǎn): 可以進(jìn)

45、行可以進(jìn)行8 8位、位、1616位的無符號數(shù)和帶符號數(shù)的加法運(yùn)算;位的無符號數(shù)和帶符號數(shù)的加法運(yùn)算; 源操作數(shù)和目標(biāo)操作數(shù)不能同時為存儲器操作數(shù);源操作數(shù)和目標(biāo)操作數(shù)不能同時為存儲器操作數(shù); 該指令影響標(biāo)志位該指令影響標(biāo)志位SF,ZF,AF,PF,OF,CFSF,ZF,AF,PF,OF,CF。 例如: ADD AL,30第3章 8086的尋址方式和指令系統(tǒng) (2 2)ADC ADC 帶進(jìn)位加法指令帶進(jìn)位加法指令格式:格式:ADC destADC dest,srcsrc執(zhí)行的操作:(執(zhí)行的操作:(destdest)(destdest)+ +(srcsrc)+CF+CF其中其中CFCF為進(jìn)位標(biāo)志的

46、現(xiàn)行值。為進(jìn)位標(biāo)志的現(xiàn)行值。使用使用ADCADC指令,指令,注意以下兩點(diǎn):注意以下兩點(diǎn): 它與它與ADDADD指令相似,只是在兩個操作數(shù)相加時,要指令相似,只是在兩個操作數(shù)相加時,要把其前面指令產(chǎn)生的進(jìn)位標(biāo)志把其前面指令產(chǎn)生的進(jìn)位標(biāo)志CFCF的現(xiàn)行值加上去。的現(xiàn)行值加上去。 主要用于多字節(jié)運(yùn)算。主要用于多字節(jié)運(yùn)算。第3章 8086的尋址方式和指令系統(tǒng) (3 3)INC INC 加加1 1指令指令 格式:格式:INC destINC dest執(zhí)行的操作:執(zhí)行的操作:(dest)(dest)(destdest)+1+1 使操作數(shù)的內(nèi)容加使操作數(shù)的內(nèi)容加1 1,然后再送回該操作數(shù)。該操,然后再送回該

47、操作數(shù)。該操作數(shù)可以是寄存器操作數(shù)或存儲器操作數(shù)。作數(shù)可以是寄存器操作數(shù)或存儲器操作數(shù)。使用使用INCINC指令,指令,注意以下兩點(diǎn):注意以下兩點(diǎn): 標(biāo)志位影響:它影響標(biāo)志位影響:它影響SF,ZF,AF,PF,OFSF,ZF,AF,PF,OF,不影響,不影響CFCF; 主要用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)。主要用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)。 例如: INC CL第3章 8086的尋址方式和指令系統(tǒng) 2. 2. 減法指令減法指令(1 1)SUB SUB 不帶借位減法指令不帶借位減法指令 格式:格式:SUB destSUB dest,srcsrc;執(zhí)行的操作:(執(zhí)行的操作:(des

48、tdest)(destdest)()(srcsrc) 使用使用SUBSUB指令,指令,注意注意以下三點(diǎn):以下三點(diǎn): 它可以進(jìn)行它可以進(jìn)行8 8位、位、1616位的無符號數(shù)和帶符號位的無符號數(shù)和帶符號數(shù)的減法運(yùn)算;數(shù)的減法運(yùn)算; 它的源操作數(shù)和目標(biāo)操作數(shù)不能同時為存儲它的源操作數(shù)和目標(biāo)操作數(shù)不能同時為存儲器操作數(shù);器操作數(shù); 該指令影響標(biāo)志位該指令影響標(biāo)志位SF,ZF,AF,PF,OF,CFSF,ZF,AF,PF,OF,CF。第3章 8086的尋址方式和指令系統(tǒng) (2 2)SBB SBB 帶借位減法指令帶借位減法指令 格式:格式:SBB destSBB dest,srcsrc執(zhí)行的操作:執(zhí)行的操

49、作:(destdest)(destdest)()(srcsrc)CFCF其中其中CFCF表示進(jìn)位表示進(jìn)位( (借位借位) )標(biāo)志位標(biāo)志位CFCF的現(xiàn)行值。的現(xiàn)行值。使用使用SBBSBB指令,指令,注意以下兩點(diǎn):注意以下兩點(diǎn): 它與它與SUBSUB指令相似,只是在兩個操作數(shù)相減時,指令相似,只是在兩個操作數(shù)相減時,要把其前面指令產(chǎn)生的進(jìn)位要把其前面指令產(chǎn)生的進(jìn)位( (借位借位) )標(biāo)志標(biāo)志CFCF的現(xiàn)行的現(xiàn)行值減出去。值減出去。 主要用于多字節(jié)運(yùn)算中。主要用于多字節(jié)運(yùn)算中。第3章 8086的尋址方式和指令系統(tǒng) (3 3)DEC DEC 減減1 1指令指令 格式:格式:DEC destDEC de

50、st執(zhí)行的操作:執(zhí)行的操作:(dest)(dest)(destdest)1 1 使操作數(shù)的內(nèi)容減使操作數(shù)的內(nèi)容減1 1,然后再送回該操作數(shù)。該操作,然后再送回該操作數(shù)。該操作數(shù)可以是寄存器操作數(shù)或存儲器操作數(shù)。數(shù)可以是寄存器操作數(shù)或存儲器操作數(shù)。使用使用DECDEC指令,指令,注意以下兩點(diǎn):注意以下兩點(diǎn): 標(biāo)志位影響情況:影響標(biāo)志位影響情況:影響SF,ZF,AF,PF,OFSF,ZF,AF,PF,OF,不影響,不影響CFCF; 主要用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)。主要用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)。例如: DEC BL第3章 8086的尋址方式和指令系統(tǒng) 即把操作數(shù)按位求反后末

51、位即把操作數(shù)按位求反后末位+1+1,該操作可以表示為:,該操作可以表示為:(destdest)0FFFFH0FFFFH(destdest)+1+1 該指令要影響標(biāo)志位:該指令要影響標(biāo)志位:SF,ZF,AF,PF,OF,CFSF,ZF,AF,PF,OF,CF,特,特別要注意別要注意CFCF和和OFOF: CFCF:只有操作數(shù)為:只有操作數(shù)為0 0時求補(bǔ)時求補(bǔ),CF=0,CF=0;否則;否則CF=1CF=1; OFOF:只有對操作數(shù):只有對操作數(shù)128 128 或或3276832768求補(bǔ),求補(bǔ),OF=1OF=1;否則否則OF=0OF=0; (4 4)NEG NEG 求補(bǔ)指令求補(bǔ)指令格式:格式:N

52、EG destNEG dest執(zhí)行的操作:執(zhí)行的操作:(dest)0(dest)0(dest)(dest)該指令是求該指令是求補(bǔ)數(shù)補(bǔ)數(shù),而不是求而不是求補(bǔ)碼補(bǔ)碼。第3章 8086的尋址方式和指令系統(tǒng) (5 5)CMP CMP 比較指令比較指令格式:格式:CMP destCMP dest,srcsrc執(zhí)行的操作:(執(zhí)行的操作:(destdest)()(srcsrc)不送回相減的結(jié)果,影響標(biāo)志位:不送回相減的結(jié)果,影響標(biāo)志位:SFSF,ZFZF,AFAF,PFPF,OFOF,CFCF。CMPCMP指令主要是比較來設(shè)置狀態(tài)標(biāo)志位的,討論如下:指令主要是比較來設(shè)置狀態(tài)標(biāo)志位的,討論如下: 由由ZFZF

53、,判斷兩數(shù)是否相等,兩個數(shù)相減后:,判斷兩數(shù)是否相等,兩個數(shù)相減后:ZF=1ZF=1,兩數(shù)相等,兩數(shù)相等 ZF=0ZF=0,兩數(shù)不等,兩數(shù)不等 由由CFCF,判斷兩個無符號數(shù)的大小,相減后:,判斷兩個無符號數(shù)的大小,相減后:CF=1CF=1,被減數(shù)小,被減數(shù)小 CF=0CF=0,減數(shù)小,減數(shù)小 由由SFSF、OFOF,判斷兩個帶符號數(shù)的大小,判斷兩個帶符號數(shù)的大小, 相減后:相減后: SFSF、OFOF相同,被減數(shù)比減數(shù)大相同,被減數(shù)比減數(shù)大 SFSF、OFOF相異,被減數(shù)比減數(shù)小相異,被減數(shù)比減數(shù)小例如:CMP AL,0FFH第3章 8086的尋址方式和指令系統(tǒng) 3. 3. 乘法指令乘法指令

54、(1 1)MUL MUL 無符號數(shù)乘法無符號數(shù)乘法格式:格式:MUL srcMUL src執(zhí)行的操作:執(zhí)行的操作:(srcsrc)為字節(jié)操作數(shù):)為字節(jié)操作數(shù): (AXAX)(ALAL)(srcsrc)(srcsrc)為字操作數(shù):()為字操作數(shù):(DXDX,AXAX)(AXAX)(srcsrc)(2 2)IMUL IMUL 帶符號數(shù)乘法帶符號數(shù)乘法格式:格式:IMUL srcIMUL src執(zhí)行的操作:(執(zhí)行的操作:(srcsrc)為字節(jié)操作數(shù):)為字節(jié)操作數(shù): (AXAX)(ALAL)(srcsrc) (srcsrc)為字操作數(shù):()為字操作數(shù):(DXDX,AXAX)(AXAX)(srcsr

55、c)第3章 8086的尋址方式和指令系統(tǒng) MULMUL和和IMULIMUL指令執(zhí)行的操作是一樣的,只不過指令執(zhí)行的操作是一樣的,只不過MULMUL的運(yùn)算的運(yùn)算對象是無符數(shù),而對象是無符數(shù),而IMULIMUL的運(yùn)算對象是帶符號數(shù)。的運(yùn)算對象是帶符號數(shù)。 在乘法指令里面,目的操作數(shù)必須是累加器,字運(yùn)算時在乘法指令里面,目的操作數(shù)必須是累加器,字運(yùn)算時為為AXAX,字節(jié)運(yùn)算時為,字節(jié)運(yùn)算時為ALAL。 兩個兩個8 8位數(shù)相乘得到的位數(shù)相乘得到的1616位乘積保存在位乘積保存在AXAX中;當(dāng)進(jìn)行字中;當(dāng)進(jìn)行字乘法時,兩個乘法時,兩個1616位數(shù)相乘得到的位數(shù)相乘得到的3232位乘積存放在位乘積存放在D

56、XDX、AXAX寄存器寄存器對中,其中對中,其中DXDX存放高位字,存放高位字,AXAX存放低位字。存放低位字。說說 明:明: 乘法指令只影響乘法指令只影響CFCF和和OFOF,而對,而對AFAF、SFSF、ZFZF、PFPF未定義。未定義。 第3章 8086的尋址方式和指令系統(tǒng) (1 1)DIV DIV 無符號數(shù)除法指令無符號數(shù)除法指令格式:格式:DIV srcDIV src執(zhí)行的操作:執(zhí)行的操作:(srcsrc)為字節(jié)操作數(shù):)為字節(jié)操作數(shù): (ALAL)(AXAX)/ /(srcsrc)的商)的商 (AHAH)(AXAX)/ /(srcsrc)的余數(shù))的余數(shù)(srcsrc)為字操作數(shù):(

57、)為字操作數(shù):(AXAX)(DXDX,AXAX)/ /(srcsrc)的商)的商 (DXDX)(DXDX,AXAX)/ /(srcsrc)的余數(shù))的余數(shù)4. 除法指令除法指令(2 2)IDIV IDIV 帶符號數(shù)除法指令帶符號數(shù)除法指令格式:格式:IDIV srcIDIV src執(zhí)行的操作:執(zhí)行的操作:(SRCSRC)為字節(jié)操作數(shù):()為字節(jié)操作數(shù):(ALAL)(AXAX)/ /(srcsrc)的商)的商 (AHAH)(AXAX)/ /(srcsrc)的余數(shù))的余數(shù)(SRCSRC)為字操作數(shù):)為字操作數(shù): (AXAX)(DXDX,AXAX)/ /(srcsrc)的商)的商 (DXDX)(DX

58、DX,AXAX)/ /(srcsrc)的余數(shù))的余數(shù)第3章 8086的尋址方式和指令系統(tǒng) 說明:說明: 除法指令可以是除立即數(shù)尋址以外的任除法指令可以是除立即數(shù)尋址以外的任何一種尋址方式。何一種尋址方式。 除法指令對狀態(tài)標(biāo)志位沒有定義。除法指令對狀態(tài)標(biāo)志位沒有定義。 除法指令在字節(jié)操作時要求被除數(shù)為除法指令在字節(jié)操作時要求被除數(shù)為1616位放在位放在AXAX中,在字操作時要求被除數(shù)為中,在字操作時要求被除數(shù)為3232位放在位放在DXDX、AXAX寄存器對中。寄存器對中。第3章 8086的尋址方式和指令系統(tǒng) (3 3)CBW CBW 字節(jié)轉(zhuǎn)換為字指令字節(jié)轉(zhuǎn)換為字指令 格式:格式:CBWCBW 執(zhí)

59、行的操作:將執(zhí)行的操作:將ALAL內(nèi)容的符號擴(kuò)展到內(nèi)容的符號擴(kuò)展到AHAH。 (ALAL)的最高有效位)的最高有效位0 0,則(,則(AHAH)=00H=00H (ALAL)的最高有效位)的最高有效位1 1,則(,則(AHAH)=0FFH=0FFH(4 4)CWD CWD 字轉(zhuǎn)換為雙字指令字轉(zhuǎn)換為雙字指令格式:格式:CWDCWD執(zhí)行的操作:將執(zhí)行的操作:將AXAX的內(nèi)容符號擴(kuò)展到的內(nèi)容符號擴(kuò)展到DXDX。 (AXAX)的最高有效位)的最高有效位0 0,則(,則(DXDX)=0000H=0000H (AXAX)的最高有效位)的最高有效位1 1,則(,則(DXDX)=0FFFFH=0FFFFH。第

60、3章 8086的尋址方式和指令系統(tǒng) (1 1)DAA DAA 加法十進(jìn)制調(diào)整指令加法十進(jìn)制調(diào)整指令格式:格式:DAADAA執(zhí)行的操作:把執(zhí)行的操作:把ALAL中的和調(diào)整為壓縮的中的和調(diào)整為壓縮的BCDBCD碼格式并保存到碼格式并保存到ALAL中,這條指令之前必須執(zhí)行中,這條指令之前必須執(zhí)行ADDADD或或ADCADC指令。該指令的調(diào)指令。該指令的調(diào) 整方法如下:整方法如下: 如果如果AFAF標(biāo)志為標(biāo)志為1 1或者或者ALAL的低的低4 4位是十六進(jìn)制的位是十六進(jìn)制的A AF F,則,則ALAL的內(nèi)容加的內(nèi)容加06H06H,且將,且將AFAF位置位置1 1; 如果如果CFCF標(biāo)志為標(biāo)志為1 1或

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論