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

下載本文檔

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

文檔簡(jiǎn)介

1、第第4章章 尋址方式與指令系統(tǒng)尋址方式與指令系統(tǒng) 1本章主要內(nèi)容本章主要內(nèi)容(1) 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式(2) 轉(zhuǎn)移地址尋址方式轉(zhuǎn)移地址尋址方式(3) 指令編碼格式指令編碼格式(4) 8086 指令系統(tǒng)及編程應(yīng)用舉例指令系統(tǒng)及編程應(yīng)用舉例2本章主要復(fù)習(xí)內(nèi)容本章主要復(fù)習(xí)內(nèi)容1.PPT第第5頁(yè)頁(yè)P(yáng)PT第第28頁(yè)頁(yè)2.教材例題教材例題3本章主要復(fù)習(xí)要點(diǎn)內(nèi)容歸納本章主要復(fù)習(xí)要點(diǎn)內(nèi)容歸納1.畫(huà)源操作數(shù)尋址方式示意圖畫(huà)源操作數(shù)尋址方式示意圖2.基址變址尋址、相對(duì)基址變址尋址基址變址尋址、相對(duì)基址變址尋址3.指令的格式及功能指令的格式及功能4.專用傳送指令專用傳送指令4 4.1 尋址方式定義定義 :指令

2、中如何提供操作數(shù)或操作數(shù)地址的方式稱:指令中如何提供操作數(shù)或操作數(shù)地址的方式稱為尋址方式。為尋址方式。 規(guī)定如何對(duì)地址字段作出解釋以找到操作數(shù)規(guī)定如何對(duì)地址字段作出解釋以找到操作數(shù) 程序轉(zhuǎn)移時(shí)需提供轉(zhuǎn)移地址,這跟提供操作數(shù)地址在程序轉(zhuǎn)移時(shí)需提供轉(zhuǎn)移地址,這跟提供操作數(shù)地址在方法上沒(méi)有本質(zhì)區(qū)別,因此也歸入尋址方式的范疇。方法上沒(méi)有本質(zhì)區(qū)別,因此也歸入尋址方式的范疇。一個(gè)指令系統(tǒng)能夠提供哪些尋址方式,能否為編制程一個(gè)指令系統(tǒng)能夠提供哪些尋址方式,能否為編制程序提供方便,這是指令系統(tǒng)設(shè)計(jì)的關(guān)鍵。序提供方便,這是指令系統(tǒng)設(shè)計(jì)的關(guān)鍵。 5 兩類尋址方式兩類尋址方式 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 轉(zhuǎn)移地址尋址

3、方式轉(zhuǎn)移地址尋址方式 (重點(diǎn)討論數(shù)據(jù)的尋址方式)(重點(diǎn)討論數(shù)據(jù)的尋址方式) 64.1.1 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式1. 立即尋址立即尋址指令中直接給出操作數(shù),操作數(shù)緊跟在操作碼之指令中直接給出操作數(shù),操作數(shù)緊跟在操作碼之后,作為指令的一部分存放在代碼段里,在取后,作為指令的一部分存放在代碼段里,在取出指令的同時(shí)也就取出了操作數(shù),立即有操作出指令的同時(shí)也就取出了操作數(shù),立即有操作數(shù)可用,所以稱之為立即尋址。數(shù)可用,所以稱之為立即尋址。7 目的 源 example MOV AL, 80H ; 低地址 存儲(chǔ)器 AX MOV AX, 3064H ; 代 碼 ADD AL, 20H ; 段 ADD AX

4、, 1090H; 高地址 OP 6 4 3 08 立即數(shù)可以為立即數(shù)可以為8位,也可以為位,也可以為16位。如果是位。如果是16位數(shù),則位數(shù),則“高位字節(jié)存放在高地址中,低位字節(jié)存放在低地址高位字節(jié)存放在高地址中,低位字節(jié)存放在低地址中。中?!绷⒓磳ぶ贩绞匠S糜诮o寄存器賦值,并且只能用于源立即尋址方式常用于給寄存器賦值,并且只能用于源操作數(shù),而不能用于目的操作數(shù)。操作數(shù),而不能用于目的操作數(shù)。 9下述各條指令源操作數(shù)的尋址方式也都是立即尋址,下述各條指令源操作數(shù)的尋址方式也都是立即尋址,但這些指令都是錯(cuò)誤的:但這些指令都是錯(cuò)誤的: MOV AL, 256 ; 256=100H,超過(guò)了,超過(guò)了A

5、L能存放的數(shù)的范圍能存放的數(shù)的范圍 MOV AX, -32769 ; -32769超過(guò)了超過(guò)了AX能存放的帶符號(hào)數(shù)能存放的帶符號(hào)數(shù)(補(bǔ)碼補(bǔ)碼)范圍范圍 MOV 100H, AL ; 立即數(shù)不能作為目的操作數(shù)立即數(shù)不能作為目的操作數(shù) DEC 20 ; 單操作數(shù)指令不能使用立即數(shù)單操作數(shù)指令不能使用立即數(shù) MOV DS, 1234H ; 源操作數(shù)是立即數(shù),則目的操作數(shù)就不能是段寄存器源操作數(shù)是立即數(shù),則目的操作數(shù)就不能是段寄存器102. 寄存器尋址寄存器尋址操作數(shù)在寄存器中,指令中指明寄存器號(hào),這種尋址操作數(shù)在寄存器中,指令中指明寄存器號(hào),這種尋址方式叫寄存器尋址。方式叫寄存器尋址。對(duì)于對(duì)于8位操

6、作數(shù),寄存器可以是位操作數(shù),寄存器可以是 AH,AL,BH,BL, CH, CL, DH, DL .對(duì)于對(duì)于16位操作數(shù),寄存器可以是位操作數(shù),寄存器可以是AX, BX,CX, DX, SI, DI, SP ,BP,CS,DS,ES,SS (但但CS 不能作目的寄存器)不能作目的寄存器) 11 EXAMPLE INC AX ; MOV AX, BX ; DEC AX ; ROL AH , 1 ; 將AH中的內(nèi)容循環(huán)左移一位CFD7 D012 練習(xí):練習(xí): MOV AX , BX ; 正確。指令執(zhí)行后,正確。指令執(zhí)行后, AXBX,但,但BX不變不變 MOV AX, BL ; 錯(cuò)誤。源和目的的位

7、數(shù)不相同錯(cuò)誤。源和目的的位數(shù)不相同 MOV CS, AX ; 錯(cuò)誤。錯(cuò)誤。CS不能作為目的操作數(shù)不能作為目的操作數(shù) MOV ES, DS ; 錯(cuò)誤。兩個(gè)操作數(shù)不能都是段寄存器錯(cuò)誤。兩個(gè)操作數(shù)不能都是段寄存器13 寄存器尋址的特點(diǎn) (1) 操作數(shù)就在寄存器中,不需要訪問(wèn)存儲(chǔ)器來(lái)取得操作數(shù)(指令執(zhí)行時(shí),操作就在CPU的內(nèi)部進(jìn)行),因而執(zhí)行速度快。 (2)寄存器號(hào)比內(nèi)存地址短 * 在編程中,如有可能,盡量使用這種尋址方式的指令。 * 寄存器尋址方式既可用于源操作數(shù),也可用于目的操作數(shù),還可以兩者都用于寄存器尋址方式(如 MOV BX , AX )14 除以上兩種尋址方式外,下面各種尋址方式的操作數(shù)除

8、以上兩種尋址方式外,下面各種尋址方式的操作數(shù)均在存儲(chǔ)器中,通過(guò)采用不同的尋址方式取得操作數(shù)均在存儲(chǔ)器中,通過(guò)采用不同的尋址方式取得操作數(shù)地址,從而取得操作數(shù)。地址,從而取得操作數(shù)。153. 直接尋址直接尋址說(shuō)明:在討論尋址方式時(shí),通常把操作數(shù)的偏移地址說(shuō)明:在討論尋址方式時(shí),通常把操作數(shù)的偏移地址稱為有效地址稱為有效地址EA EA (Effective Address) Effective Address) ,EAEA可通過(guò)可通過(guò)不同的尋址方式來(lái)得到。不同的尋址方式來(lái)得到。在直接尋址方式中,指令中直接給出操作數(shù)的有效地在直接尋址方式中,指令中直接給出操作數(shù)的有效地址,或者說(shuō),有效地址址,或者說(shuō)

9、,有效地址EAEA就在指令中。它就在指令中。它( (操作數(shù)的有操作數(shù)的有效地址,而不是操作數(shù)本身效地址,而不是操作數(shù)本身) )存放在代碼段中指令的操存放在代碼段中指令的操作碼之后,但操作數(shù)一般存放在數(shù)據(jù)段中。作碼之后,但操作數(shù)一般存放在數(shù)據(jù)段中。16 例例 1. MOV AX , DS:2000H; 如如(DS)= 3000H, 則指令的執(zhí)行情況如下圖所示:則指令的執(zhí)行情況如下圖所示:17代 存儲(chǔ)器 采用直接尋址方式,如果沒(méi) 碼 有用“段跨越前綴”標(biāo)明操作 段 數(shù)在哪一段,就默認(rèn)段寄存 為DS. 30000H 數(shù) AX 據(jù) 段 32000H 執(zhí)行結(jié)果:(AX)=3050H OP 00 20 5

10、0 30 也允許數(shù)據(jù)存放在數(shù)據(jù)段以外的其它段也允許數(shù)據(jù)存放在數(shù)據(jù)段以外的其它段(如附加段(如附加段)。此時(shí)應(yīng)在指令中給出。此時(shí)應(yīng)在指令中給出 “跨跨越段前綴越段前綴”。例例 2: 如數(shù)據(jù)在附加段中,則應(yīng)指明如數(shù)據(jù)在附加段中,則應(yīng)指明“段段跨越前綴跨越前綴” 。 MOV AX , ES : 3000H 或或 ES: MOV AX , 3000H * 為了使指令字不要過(guò)長(zhǎng),規(guī)定雙操作為了使指令字不要過(guò)長(zhǎng),規(guī)定雙操作數(shù)指令不能兩個(gè)操作數(shù)都用直接尋址方數(shù)指令不能兩個(gè)操作數(shù)都用直接尋址方式。式。 如如 MOV DS: 2000H , DS:3000H 184. 寄存器間接尋址寄存器間接尋址采用寄存器間接

11、尋址方式時(shí),指令中給采用寄存器間接尋址方式時(shí),指令中給 出寄存器出寄存器(寄存寄存器為器為BX,BP,SI和和DI之一之一), 被指定的寄存器中存放著操被指定的寄存器中存放著操作數(shù)的有效地址,操作數(shù)在存儲(chǔ)器中作數(shù)的有效地址,操作數(shù)在存儲(chǔ)器中(以寄存器的內(nèi)容以寄存器的內(nèi)容為操作數(shù)的有效地址)。為操作數(shù)的有效地址)。 BX .對(duì)應(yīng)段寄存器為對(duì)應(yīng)段寄存器為 DS EA= BP . SS SI . DS DI DSMOV AX , BX19ExampleMOV AX , BX ; 設(shè)設(shè) DS= 2000H , BX = 1000H 物理地址物理地址20000H 1000H =21000H *指令中也可

12、以通過(guò)指令中也可以通過(guò) AX . “段跨越前綴段跨越前綴”取得取得 數(shù)數(shù) 其他段中的數(shù)據(jù),其他段中的數(shù)據(jù), 據(jù)據(jù) 例如:例如: 段段 MOV AX,ES: BX 21000H 指令的執(zhí)行結(jié)果為:指令的執(zhí)行結(jié)果為: AX = 50A0H A0 50 205. 寄存器相對(duì)尋址寄存器相對(duì)尋址操作數(shù)的有效地址是一個(gè)基址或變址寄存器的內(nèi)容與操作數(shù)的有效地址是一個(gè)基址或變址寄存器的內(nèi)容與指令中指定的指令中指定的8位或位或16位位移量(位位移量(Displacement)之和。之和。這種尋址方式可用于表格的處理,通過(guò)位移量來(lái)設(shè)置這種尋址方式可用于表格的處理,通過(guò)位移量來(lái)設(shè)置表格的首地址;表格的首地址;利用修

13、改基址寄存器或變址寄存器的內(nèi)容來(lái)獲得表項(xiàng)利用修改基址寄存器或變址寄存器的內(nèi)容來(lái)獲得表項(xiàng)的值。的值。如下圖所示:如下圖所示:21 BX 8位位移量EA = BP + SI 16位位移量 DI 若沒(méi)有段跨越前綴,則對(duì)于寄存器BX,SI, DI的情況,段寄存器為DS;對(duì)于寄存器為BP的情況,則段寄存器為SS。22ExampleMOV AX, SI H 操操設(shè)設(shè)DS4000H, SI =2000H 作作物理地址物理地址 碼碼 40000H H H 位位 45000H 移移 量量指令的執(zhí)行情況如指令的執(zhí)行情況如 右圖右圖 AH 40000H 43000H SI 數(shù)數(shù) 45000H 據(jù)據(jù) 段段 OP OP

14、 00 30 34 12AL23這種尋址方式可用于表格的處理,通過(guò)位移量來(lái)設(shè)這種尋址方式可用于表格的處理,通過(guò)位移量來(lái)設(shè)置表格的首地址;置表格的首地址;利用修改基址寄存器或變址寄存器的內(nèi)容來(lái)獲得表利用修改基址寄存器或變址寄存器的內(nèi)容來(lái)獲得表項(xiàng)的值。項(xiàng)的值。這種尋址方式同樣適用于表格這種尋址方式同樣適用于表格(或數(shù)組或數(shù)組)的處理的處理,表的表的首地址可存放在基址寄存器中,而用變址寄存器來(lái)首地址可存放在基址寄存器中,而用變址寄存器來(lái)訪問(wèn)表格中的各項(xiàng)。訪問(wèn)表格中的各項(xiàng)。由于兩個(gè)寄存器都可以修改,使由于兩個(gè)寄存器都可以修改,使 用起來(lái)更靈活。用起來(lái)更靈活。246. 基址變址尋址基址變址尋址操作數(shù)的有

15、效地址是一個(gè)基址寄存器和一個(gè)變操作數(shù)的有效地址是一個(gè)基址寄存器和一個(gè)變址寄存器內(nèi)容之和,兩個(gè)寄存器均由指令指定。址寄存器內(nèi)容之和,兩個(gè)寄存器均由指令指定。 (BX) (SI) 若基址寄存器為若基址寄存器為BX,則段則段寄存器為寄存器為DSEA + (BP) (DI) 若基址寄存器為若基址寄存器為BP,則則段寄存器為段寄存器為SS 25 Example 例:MOV AX,BX+DI 設(shè) DS=2100H, BX=0158H, DI=10A5H. 則 EA= 0158H+10A5H=11FDH 物理地址21000H+11FDH=221FDH BX 21000H 21158H AX 221FDH 3

16、4 1226這種尋址方式同樣適用于表格這種尋址方式同樣適用于表格(或數(shù)組或數(shù)組)的處理的處理,表表的首地址可存放在基址寄存器中,而用變址寄存的首地址可存放在基址寄存器中,而用變址寄存器來(lái)訪問(wèn)表格中的各項(xiàng)。器來(lái)訪問(wèn)表格中的各項(xiàng)。由于兩個(gè)寄存器都可以修改,使由于兩個(gè)寄存器都可以修改,使 用起來(lái)更靈活。用起來(lái)更靈活。277. 相對(duì)基址變址尋址相對(duì)基址變址尋址也稱也稱“帶位移量的基址加變址尋址方式帶位移量的基址加變址尋址方式”. 操作數(shù)的有效地址是一個(gè)基址寄存器和一個(gè)變址寄操作數(shù)的有效地址是一個(gè)基址寄存器和一個(gè)變址寄存器內(nèi)容與存器內(nèi)容與8位或位或16位位移量之和。位位移量之和。 (BX) (SI) 用

17、用BX,則段寄存器為則段寄存器為 DS EA= + + 位移量位移量 (BP) (DI) 用用BP,則段寄存器為則段寄存器為 SS28例:例:MOV AX,BX+SI H設(shè)設(shè)(DS)=3000H,(BX)=2000H,(SI)=1000H,則則 代代 EA 2000H H H=3250H 碼碼物理地址物理地址30000H H=33250H 段段 30000H 位移量位移量 AX 30250H 數(shù)數(shù) (BX) 32250H 據(jù)據(jù) (SI) 33250H 段段 OP OP 50 02 34 1229這種尋址方式可用于訪問(wèn)二維數(shù)組。這種尋址方式可用于訪問(wèn)二維數(shù)組。設(shè)數(shù)組元素在內(nèi)存中按行順序存放(首先

18、放第一行所設(shè)數(shù)組元素在內(nèi)存中按行順序存放(首先放第一行所有元素,再放第二行所有元素,有元素,再放第二行所有元素,)。通過(guò)改變基)。通過(guò)改變基址寄存器(如址寄存器(如BXBX)和變址寄存器(如)和變址寄存器(如SI)SI)的值可以訪問(wèn)的值可以訪問(wèn)數(shù)組中不同行和列上的元素。數(shù)組中不同行和列上的元素。 若保持若保持BXBX不變而不變而SISI改變,則可以訪問(wèn)同一行的所有元改變,則可以訪問(wèn)同一行的所有元素。素。若保持若保持SISI不變而不變而B(niǎo)XBX改變,則可以訪問(wèn)同一列的所有元改變,則可以訪問(wèn)同一列的所有元素。素。304.1.2 轉(zhuǎn)移地址尋址方式轉(zhuǎn)移地址尋址方式有關(guān)術(shù)語(yǔ)和概念有關(guān)術(shù)語(yǔ)和概念:段內(nèi)轉(zhuǎn)移

19、段內(nèi)轉(zhuǎn)移如果轉(zhuǎn)移地址與該轉(zhuǎn)移類指令在同一個(gè)代如果轉(zhuǎn)移地址與該轉(zhuǎn)移類指令在同一個(gè)代碼段,這樣的轉(zhuǎn)移稱為段內(nèi)轉(zhuǎn)移,也稱近轉(zhuǎn)移;碼段,這樣的轉(zhuǎn)移稱為段內(nèi)轉(zhuǎn)移,也稱近轉(zhuǎn)移;近轉(zhuǎn)移時(shí)的轉(zhuǎn)移地址只包含偏移地址部分,找到轉(zhuǎn)移近轉(zhuǎn)移時(shí)的轉(zhuǎn)移地址只包含偏移地址部分,找到轉(zhuǎn)移地址后,將轉(zhuǎn)移地址送入地址后,將轉(zhuǎn)移地址送入IP即可實(shí)現(xiàn)轉(zhuǎn)移即可實(shí)現(xiàn)轉(zhuǎn)移(CS的內(nèi)容不的內(nèi)容不必改變必改變)。 31段間轉(zhuǎn)移段間轉(zhuǎn)移如果轉(zhuǎn)移地址與該轉(zhuǎn)移類指令位于不同的如果轉(zhuǎn)移地址與該轉(zhuǎn)移類指令位于不同的代碼段,這樣的轉(zhuǎn)移稱為段間轉(zhuǎn)移,也稱遠(yuǎn)轉(zhuǎn)移;代碼段,這樣的轉(zhuǎn)移稱為段間轉(zhuǎn)移,也稱遠(yuǎn)轉(zhuǎn)移;遠(yuǎn)轉(zhuǎn)移時(shí)的轉(zhuǎn)移地址既包含偏移地址部分又包含段基遠(yuǎn)轉(zhuǎn)移

20、時(shí)的轉(zhuǎn)移地址既包含偏移地址部分又包含段基值部分,找到轉(zhuǎn)移地址后,將轉(zhuǎn)移地址的段基值部分值部分,找到轉(zhuǎn)移地址后,將轉(zhuǎn)移地址的段基值部分送入送入CS,將轉(zhuǎn)移地址的偏移地址部分送入,將轉(zhuǎn)移地址的偏移地址部分送入IP即可實(shí)現(xiàn)即可實(shí)現(xiàn)轉(zhuǎn)移。轉(zhuǎn)移。32直接轉(zhuǎn)移直接轉(zhuǎn)移如果轉(zhuǎn)移地址直接放在指令中,則這樣的如果轉(zhuǎn)移地址直接放在指令中,則這樣的轉(zhuǎn)移稱為直接轉(zhuǎn)移,視轉(zhuǎn)移地址是絕對(duì)地址還是相對(duì)轉(zhuǎn)移稱為直接轉(zhuǎn)移,視轉(zhuǎn)移地址是絕對(duì)地址還是相對(duì)地址地址(即地址位移量即地址位移量)又可分別稱為絕對(duì)轉(zhuǎn)移和相對(duì)轉(zhuǎn)移。又可分別稱為絕對(duì)轉(zhuǎn)移和相對(duì)轉(zhuǎn)移。間接轉(zhuǎn)移間接轉(zhuǎn)移如果轉(zhuǎn)移地址間接放在其他地方,則這樣如果轉(zhuǎn)移地址間接放在其他地方

21、,則這樣的轉(zhuǎn)移稱為間接轉(zhuǎn)移,視轉(zhuǎn)移地址是在寄存器中還是的轉(zhuǎn)移稱為間接轉(zhuǎn)移,視轉(zhuǎn)移地址是在寄存器中還是在存儲(chǔ)器中又可分別稱為寄存器操作數(shù)在存儲(chǔ)器中又可分別稱為寄存器操作數(shù)(寄存器尋址寄存器尋址)和和存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù)(存儲(chǔ)器尋址存儲(chǔ)器尋址)。331. 段內(nèi)直接轉(zhuǎn)移段內(nèi)直接轉(zhuǎn)移(直接近轉(zhuǎn)移直接近轉(zhuǎn)移)特點(diǎn):特點(diǎn): 轉(zhuǎn)移地址轉(zhuǎn)移地址(通常就是近標(biāo)號(hào)通常就是近標(biāo)號(hào))直接包含在匯編形式直接包含在匯編形式的轉(zhuǎn)移指令中,轉(zhuǎn)移指令的機(jī)器代碼中存放的的轉(zhuǎn)移指令中,轉(zhuǎn)移指令的機(jī)器代碼中存放的是該標(biāo)號(hào)與當(dāng)前是該標(biāo)號(hào)與當(dāng)前IP值的差值的差(標(biāo)號(hào)標(biāo)號(hào)-IP),此差稱為,此差稱為位移量。位移量。該位移量與轉(zhuǎn)移指令一

22、起存于代碼段:該位移量與轉(zhuǎn)移指令一起存于代碼段: 位移量位移量被放在轉(zhuǎn)移指令的操作碼之后,也是被放在轉(zhuǎn)移指令的操作碼之后,也是“高字節(jié)高字節(jié)放在高地址單元,低字節(jié)放在低地址單元放在高地址單元,低字節(jié)放在低地址單元”。在取轉(zhuǎn)移指令時(shí),此位移量即作為轉(zhuǎn)移指令的一在取轉(zhuǎn)移指令時(shí),此位移量即作為轉(zhuǎn)移指令的一部分被取入部分被取入CPU中。中。34 執(zhí)行轉(zhuǎn)移指令時(shí),將這個(gè)位移量加到IP上即可得到轉(zhuǎn)移地址(標(biāo)號(hào)的值),即 IP+(標(biāo)號(hào)-IP)=標(biāo)號(hào)=轉(zhuǎn)移地址不必為找這個(gè)轉(zhuǎn)移地址再去訪問(wèn)寄存器或存儲(chǔ)器。 例如,如果L是本段中的標(biāo)號(hào),則下述指令采用的是段內(nèi)直接轉(zhuǎn)移方式: JMP L; 機(jī)器指令中的位移量為L(zhǎng)-I

23、P,轉(zhuǎn)移地址為L(zhǎng) 352. 段內(nèi)間接轉(zhuǎn)移段內(nèi)間接轉(zhuǎn)移 (間接近轉(zhuǎn)移間接近轉(zhuǎn)移) 寄存器操作數(shù)寄存器操作數(shù)(也稱寄存器尋址也稱寄存器尋址) 例:例: JMP BX ; BX的內(nèi)容為轉(zhuǎn)移地址的內(nèi)容為轉(zhuǎn)移地址 存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù)(也稱存儲(chǔ)器尋址也稱存儲(chǔ)器尋址)(i) 直接尋址直接尋址 其特征是:其特征是: 轉(zhuǎn)移地址轉(zhuǎn)移地址(偏移地址部分偏移地址部分)在數(shù)據(jù)存儲(chǔ)單元中,在數(shù)據(jù)存儲(chǔ)單元中,數(shù)據(jù)存儲(chǔ)單元的地址在指令中直接給出。數(shù)據(jù)存儲(chǔ)單元的地址在指令中直接給出。例如,例如,JMP WORD PTR DS:20;數(shù)據(jù)存儲(chǔ)單元數(shù)據(jù)存儲(chǔ)單元(DS:20)的一個(gè)字為轉(zhuǎn)移地址的一個(gè)字為轉(zhuǎn)移地址36(ii) 寄

24、存器間接尋址寄存器間接尋址其特征是:其特征是: 轉(zhuǎn)移地址轉(zhuǎn)移地址(偏移地址部分偏移地址部分)在數(shù)據(jù)存儲(chǔ)單元在數(shù)據(jù)存儲(chǔ)單元中,數(shù)據(jù)存儲(chǔ)單元的偏移地址在中,數(shù)據(jù)存儲(chǔ)單元的偏移地址在BX、BP、SI、DI之之一中。一中。例如,下述指令采用的就是段內(nèi)間接轉(zhuǎn)移、寄存器間例如,下述指令采用的就是段內(nèi)間接轉(zhuǎn)移、寄存器間接尋址方式:接尋址方式:JMPBX ; 數(shù)據(jù)存儲(chǔ)單元數(shù)據(jù)存儲(chǔ)單元(DS:BX)的一個(gè)字為的一個(gè)字為轉(zhuǎn)移地址轉(zhuǎn)移地址 JMPBP ; 數(shù)據(jù)存儲(chǔ)單元數(shù)據(jù)存儲(chǔ)單元(SS:BP)的一個(gè)字為的一個(gè)字為轉(zhuǎn)移地址轉(zhuǎn)移地址JMP DS:BP ; 數(shù)據(jù)存儲(chǔ)單元數(shù)據(jù)存儲(chǔ)單元(DS:BP)的一個(gè)字為轉(zhuǎn)的一個(gè)字為轉(zhuǎn)移

25、地址移地址 37(iii) 寄存器相對(duì)尋址寄存器相對(duì)尋址 其特征是:轉(zhuǎn)移地址其特征是:轉(zhuǎn)移地址(偏移地址部分偏移地址部分)在數(shù)據(jù)存儲(chǔ)單元中,數(shù)在數(shù)據(jù)存儲(chǔ)單元中,數(shù)據(jù)存單元的偏移地址是寄存器據(jù)存單元的偏移地址是寄存器(BX、BP、SI、DI之一之一)的內(nèi)的內(nèi)容與位移量的和。容與位移量的和。例如,下述指令采用的就是段內(nèi)間接轉(zhuǎn)移、寄存器相對(duì)尋址例如,下述指令采用的就是段內(nèi)間接轉(zhuǎn)移、寄存器相對(duì)尋址方式:方式: JMPBX+20 ;數(shù)據(jù)存儲(chǔ)單元數(shù)據(jù)存儲(chǔ)單元(DS:BX+20)的一個(gè)字為轉(zhuǎn)的一個(gè)字為轉(zhuǎn)移地址移地址 JMPBP+20 ;數(shù)據(jù)存儲(chǔ)單元數(shù)據(jù)存儲(chǔ)單元(SS:BP+20)的一個(gè)字為的一個(gè)字為轉(zhuǎn)移地址

26、轉(zhuǎn)移地址JMP DS:BP+20 ;數(shù)據(jù)存儲(chǔ)單元數(shù)據(jù)存儲(chǔ)單元(DS:BP+20)的一個(gè)字為轉(zhuǎn)的一個(gè)字為轉(zhuǎn)移地址移地址38(iv) 基址變址尋址基址變址尋址 其特征是:轉(zhuǎn)移地址其特征是:轉(zhuǎn)移地址(偏移地址部分偏移地址部分)在數(shù)據(jù)存儲(chǔ)單元在數(shù)據(jù)存儲(chǔ)單元中,數(shù)據(jù)存儲(chǔ)單元的偏移地址是基址寄存器中,數(shù)據(jù)存儲(chǔ)單元的偏移地址是基址寄存器(BX、BP之一之一)的內(nèi)容和變址寄存器的內(nèi)容和變址寄存器(SI、DI之一之一)的內(nèi)容之和。的內(nèi)容之和。例如,下述指令采用的就是段內(nèi)間接轉(zhuǎn)移、基址變址例如,下述指令采用的就是段內(nèi)間接轉(zhuǎn)移、基址變址尋址方式:尋址方式: JMPBX+SI ;數(shù)據(jù)存儲(chǔ)單元數(shù)據(jù)存儲(chǔ)單元(DS:BX+

27、SI)的一個(gè)字的一個(gè)字為轉(zhuǎn)移地址為轉(zhuǎn)移地址 JMPBP+SI ;數(shù)據(jù)存儲(chǔ)單元數(shù)據(jù)存儲(chǔ)單元(SS:BP+SI)的一個(gè)字為的一個(gè)字為轉(zhuǎn)移地址轉(zhuǎn)移地址 JMP DS:BP+SI ;數(shù)據(jù)存儲(chǔ)單元數(shù)據(jù)存儲(chǔ)單元(DS:BP+SI)的一個(gè)的一個(gè)字為轉(zhuǎn)移地址字為轉(zhuǎn)移地址39(v) 基址變址相對(duì)尋址基址變址相對(duì)尋址 其特征是:其特征是: 轉(zhuǎn)移地址轉(zhuǎn)移地址(偏移地址部分偏移地址部分)在數(shù)據(jù)存儲(chǔ)單元在數(shù)據(jù)存儲(chǔ)單元中,數(shù)據(jù)存儲(chǔ)單元的偏移地址是基址寄存器中,數(shù)據(jù)存儲(chǔ)單元的偏移地址是基址寄存器(BX、BP之一之一)的內(nèi)容、變址寄存器的內(nèi)容、變址寄存器(SI、DI之一之一)的內(nèi)容及位移的內(nèi)容及位移量的和。量的和。例如,下述

28、指令采用的就是段內(nèi)間接轉(zhuǎn)移、寄存器間例如,下述指令采用的就是段內(nèi)間接轉(zhuǎn)移、寄存器間接尋址方式:接尋址方式: JMPBX+SI+20 ;數(shù)據(jù)存儲(chǔ)單元數(shù)據(jù)存儲(chǔ)單元(DS:BX+SI+20)的一個(gè)字為轉(zhuǎn)移地址的一個(gè)字為轉(zhuǎn)移地址JMPBP+SI+20 ;數(shù)據(jù)存儲(chǔ)單元數(shù)據(jù)存儲(chǔ)單元(SS:BP+SI+20)的一個(gè)字為轉(zhuǎn)移地址的一個(gè)字為轉(zhuǎn)移地址 JMP DS:BP+SI+20 ;數(shù)據(jù)存儲(chǔ)單元數(shù)據(jù)存儲(chǔ)單元(DS:BP+SI+20)的一個(gè)字為轉(zhuǎn)移地址的一個(gè)字為轉(zhuǎn)移地址403. 段間直接轉(zhuǎn)移段間直接轉(zhuǎn)移 (直接遠(yuǎn)轉(zhuǎn)移直接遠(yuǎn)轉(zhuǎn)移)轉(zhuǎn)移地址轉(zhuǎn)移地址(通常就是遠(yuǎn)標(biāo)號(hào)通常就是遠(yuǎn)標(biāo)號(hào))直接包含在匯編形式的轉(zhuǎn)移直接包含在匯編

29、形式的轉(zhuǎn)移類指令中,也直接存放在轉(zhuǎn)移類指令的機(jī)器代碼中,類指令中,也直接存放在轉(zhuǎn)移類指令的機(jī)器代碼中,它是轉(zhuǎn)移類指令不可分割的一部分,位于轉(zhuǎn)移類指令它是轉(zhuǎn)移類指令不可分割的一部分,位于轉(zhuǎn)移類指令的操作碼之后。的操作碼之后。 高字存放轉(zhuǎn)移地址的段基值部分,低字存放轉(zhuǎn)移地址高字存放轉(zhuǎn)移地址的段基值部分,低字存放轉(zhuǎn)移地址的偏移地址部分。在取轉(zhuǎn)移類指令時(shí),此段基值和偏的偏移地址部分。在取轉(zhuǎn)移類指令時(shí),此段基值和偏移地址作為轉(zhuǎn)移類指令的一部分被取入移地址作為轉(zhuǎn)移類指令的一部分被取入CPU中。中。執(zhí)行轉(zhuǎn)移類指令時(shí),不必為找轉(zhuǎn)移地址再去訪問(wèn)寄存執(zhí)行轉(zhuǎn)移類指令時(shí),不必為找轉(zhuǎn)移地址再去訪問(wèn)寄存器或存儲(chǔ)器。器或存

30、儲(chǔ)器。 41例如,如果例如,如果L是其他代碼段中的標(biāo)號(hào),則下述指令采用是其他代碼段中的標(biāo)號(hào),則下述指令采用的就是段間直接轉(zhuǎn)移方式:的就是段間直接轉(zhuǎn)移方式: JMP FAR PTR L ;在在L左邊通常要加上類型說(shuō)明左邊通常要加上類型說(shuō)明FAR PTR424. 段間間接轉(zhuǎn)移段間間接轉(zhuǎn)移(間接遠(yuǎn)轉(zhuǎn)移間接遠(yuǎn)轉(zhuǎn)移) 段間間接轉(zhuǎn)移時(shí)的轉(zhuǎn)移地址既包含偏移地址部分,又段間間接轉(zhuǎn)移時(shí)的轉(zhuǎn)移地址既包含偏移地址部分,又包含段基值部分,在數(shù)據(jù)存儲(chǔ)器中占兩個(gè)字:低字單包含段基值部分,在數(shù)據(jù)存儲(chǔ)器中占兩個(gè)字:低字單元存放偏移地址,高字單元存放段基值。元存放偏移地址,高字單元存放段基值。 要在轉(zhuǎn)移類指令中的地址表達(dá)式左邊

31、加上類型說(shuō)要在轉(zhuǎn)移類指令中的地址表達(dá)式左邊加上類型說(shuō)明明DWORD PTRDWORD PTR。例如,。例如, JMP DWORD PTR JMP DWORD PTR BX+SIBX+SI ; ; 基址變址尋址基址變址尋址 JMP DWORD PTR JMP DWORD PTR BX+SI+20BX+SI+20 ; ; 基址變址相對(duì)尋址基址變址相對(duì)尋址 434.2 指令編碼指令編碼4.2.1 指令編碼格式指令編碼格式 1. 指令前綴和段超越前綴的編碼指令前綴和段超越前綴的編碼前綴并不是一條獨(dú)立的指令,而是對(duì)其后前綴并不是一條獨(dú)立的指令,而是對(duì)其后的指令或?qū)χ噶钪胁僮鲾?shù)的一種限制。的指令或?qū)χ噶钪?/p>

32、操作數(shù)的一種限制。 8086/8088提供的前綴有提供的前綴有3 種:種: 串操作的重復(fù)前綴串操作的重復(fù)前綴(REP 、REPE/REPZ、REPNE/REPNZ) 總線封鎖前綴總線封鎖前綴(LOCK)段超越前綴段超越前綴(ES:、CS:、SS:、DS:)這些前綴共有這些前綴共有7種不同的編碼,長(zhǎng)度都是一種不同的編碼,長(zhǎng)度都是一個(gè)字節(jié),如表個(gè)字節(jié),如表4-1 所示。所示。 44 表4-1 指令前綴及段超越前綴的編碼 指令前綴指令前綴 指令前綴的編碼指令前綴的編碼段超越前綴段超越前綴 段超越前綴的編碼段超越前綴的編碼LOCK 11110000(F0H)REPNE/REPNZ 11110010(F

33、2H)REPE/REPZ 11110011(F3H)REP 11110011(F3H)ES: 00100110(26H)CS: 00101110(2EH)SS: 00110110(36H)DS: 00111110(3EH)45圖圖4.6 8086/8088指令編碼的一般格式指令編碼的一般格式 操作碼字節(jié)尋址方式字節(jié)低字節(jié)高字節(jié)低字節(jié)高字節(jié)位移量(或地址)立即數(shù)462. 指令的機(jī)器碼格式指令的機(jī)器碼格式2. 指令的機(jī)器碼格式指令的機(jī)器碼格式8086/8088的機(jī)器指令長(zhǎng)度的機(jī)器指令長(zhǎng)度(不包括前綴不包括前綴)隨指令的不同隨指令的不同而不同,最短的為而不同,最短的為1個(gè)字節(jié),最長(zhǎng)的為個(gè)字節(jié),最長(zhǎng)的

34、為6個(gè)字節(jié)。個(gè)字節(jié)。指令代碼中各字節(jié)的排列順序依次為:指令代碼中各字節(jié)的排列順序依次為:1個(gè)字節(jié)的操作個(gè)字節(jié)的操作碼,可能存在的碼,可能存在的1個(gè)尋址方式字節(jié),可能存在的個(gè)尋址方式字節(jié),可能存在的12個(gè)個(gè)字節(jié)的地址位移量字節(jié)的地址位移量(或地址或地址)和可能存在的和可能存在的12個(gè)字節(jié)的個(gè)字節(jié)的立即數(shù)。立即數(shù)。指令中的地址位移量指令中的地址位移量(或地址或地址)和立即數(shù)如果是和立即數(shù)如果是16位的話,位的話,都是低字節(jié)放在存儲(chǔ)器的低地址單元,高字節(jié)放在存都是低字節(jié)放在存儲(chǔ)器的低地址單元,高字節(jié)放在存儲(chǔ)器的高地址單元。指令的一般格式如下圖所示儲(chǔ)器的高地址單元。指令的一般格式如下圖所示:47(1)

35、 操作碼字節(jié)操作碼字節(jié)操作碼字節(jié)用來(lái)表示該指令執(zhí)行的操作,每條指令都操作碼字節(jié)用來(lái)表示該指令執(zhí)行的操作,每條指令都有操作碼字節(jié)。有操作碼字節(jié)。大多數(shù)指令都使用大多數(shù)指令都使用8位的操作碼,但有些指令的操作碼位的操作碼,但有些指令的操作碼少于少于8位或多于位或多于8位。位。 各種情況下的操作碼字節(jié)共有各種情況下的操作碼字節(jié)共有10種格式種格式,如下圖所示。如下圖所示。48操作碼字節(jié)的各種編碼格式:操作碼字節(jié)的各種編碼格式:XXXXXXXXXXXXXX DW XXXXXX SW XXXXXX VW XXXXXXX WXXXXXXX ZXXXXX regXXXX W regXXX sr XXX XX

36、XXX UUU49D位用于需要指明兩個(gè)寄存器位用于需要指明兩個(gè)寄存器/存儲(chǔ)器操作數(shù)的雙操作存儲(chǔ)器操作數(shù)的雙操作數(shù)指令中。這種指令的兩個(gè)操作數(shù)必須有一個(gè)是寄存數(shù)指令中。這種指令的兩個(gè)操作數(shù)必須有一個(gè)是寄存器,器,D位則用來(lái)指出尋址方式字節(jié)中用位則用來(lái)指出尋址方式字節(jié)中用reg域標(biāo)識(shí)的那域標(biāo)識(shí)的那個(gè)寄存器是源操作數(shù)還是目的操作數(shù):個(gè)寄存器是源操作數(shù)還是目的操作數(shù): 若若D=0,則該寄存器是源操作數(shù);,則該寄存器是源操作數(shù); 若若D=1,則該寄存器是目的操作數(shù)。,則該寄存器是目的操作數(shù)。 W位用于指明是字節(jié)操作還是字操作:位用于指明是字節(jié)操作還是字操作: 若若W=0,則是字節(jié)操作;,則是字節(jié)操作;

37、若若W=1,則是字操作。,則是字操作。50(2) 尋址方式字節(jié)尋址方式字節(jié)大多數(shù)指令的尋址方式字節(jié)分為三個(gè)域,即mod域、reg域和r/m域。mod域占兩位,代表“方式”;reg域占3位,是通用寄存器的3位代碼;r/m域占3位,代表存儲(chǔ)器的某個(gè)地址或某個(gè)通用寄存器。各種情況下的尋址方式字節(jié)共有5種格式,如圖4.7 所示。51mod reg r/mmod 0 sr r/mmod XXX r/mXXXXXXXXmod UUU r/m圖圖4.7 尋址方式字節(jié)的各種編碼格式尋址方式字節(jié)的各種編碼格式52表表4-4 reg域和域和sr域所代表的寄存器域所代表的寄存器 reg域 sr域000001 010

38、01110010111011100011011W=1AXCXDXBXSPBPSIDIESCSSSDSW=0ALCLDLBLAHCHDHBH53表表4-5 mod域和域和r/m域的編碼及解釋域的編碼及解釋000110 11存儲(chǔ)器尋址不帶位移量存儲(chǔ)器尋址帶8位位移量存儲(chǔ)器尋址帶16位位移量寄存器尋址W=1W=0000BX+SIBX+SI+disp8BX+SI+disp16AXAL001BX+DIBX+DI+disp8BX+DI+disp16CXCL010BP+SIBP+SI+disp8BP+SI+disp16DXDL011BP+DIBP+DI+disp8BP+DI+disp16BXBL100 SI

39、SI+disp8SI+disp16SPAH101 DIDI+disp8DI+disp16BPCH11016位直接地址位直接地址BP+disp8BP+disp16SIDH111 BXBX+disp8BX+disp16DIBHmodr/m544.2.2 指令編碼舉例指令編碼舉例例例4.11 將指令將指令“MOV BX+DI-6,CL”寫(xiě)成機(jī)器碼格式。寫(xiě)成機(jī)器碼格式。55解解 :這是一條寄存器送存儲(chǔ)器的指令。由附錄這是一條寄存器送存儲(chǔ)器的指令。由附錄B可知該指可知該指令的格式如下,是一條令的格式如下,是一條3字節(jié)指令:字節(jié)指令: 10 00 10 DW mod reg r/m disp8因?yàn)橐驗(yàn)?r

40、eg域指出的域指出的)寄存器是源操作數(shù),所以寄存器是源操作數(shù),所以D0;由;由CL寄存器的編碼知寄存器的編碼知reg001。因?yàn)槭亲止?jié)操作,所以因?yàn)槭亲止?jié)操作,所以W0。因?yàn)槟康牟僮鲾?shù)是存儲(chǔ)器且?guī)в幸驗(yàn)槟康牟僮鲾?shù)是存儲(chǔ)器且?guī)в?位位移量,所以位位移量,所以mod01。尋址方式尋址方式BX+DI+disp8的的r/m=001。位移量為位移量為(-6),其補(bǔ)碼是,其補(bǔ)碼是11111010。因此,該指令的機(jī)器碼是因此,該指令的機(jī)器碼是“10001000 01 001 001 11111010”。56 解: 這是一條將兩個(gè)寄存器的內(nèi)容相加,將結(jié)果送入其中一個(gè)寄存器的指令。由附錄二可知該指令的格式如下,

41、是一條兩字節(jié)指令: 00 00 00 DW mod reg r/m設(shè) reg域指出的寄存器是目的操作數(shù),所以D=1;由AX寄存器的編碼知reg=000。因?yàn)槭亲植僮?,所以W=1。因?yàn)榱硪粋€(gè)操作數(shù)(源操作數(shù))也是寄存器,所以mod=11,另一個(gè)寄存器BX的編碼為011。 因此,該指令的機(jī)器碼是“00000011 11 000 011”。574.3 8086 指令系統(tǒng)指令系統(tǒng)8086 指令系統(tǒng)可以分為以下六大類:指令系統(tǒng)可以分為以下六大類: 傳送指令傳送指令 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 邏輯運(yùn)算和移位指令邏輯運(yùn)算和移位指令 串操作指令串操作指令 轉(zhuǎn)移指令轉(zhuǎn)移指令 處理器控制指令處理器控制指令584.

42、3.1 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令包括包括:通用傳送指令和專用傳送指令兩類通用傳送指令和專用傳送指令兩類通用傳送指令:通用傳送指令: 名稱格式類型操作傳送交換入棧出棧MOV 目的,源XCHG 操作數(shù)1,操作數(shù)2PUSH 源字 POP 目的字B/WB/WWW(目的)(源)(操作數(shù)1) (操作數(shù)2)SP SP-2, (SS:SP) (源)字(目的)字 (SS:SP), SP SP+259(1) MOV 指令指令 立即數(shù)存儲(chǔ)器存儲(chǔ)器直接尋址直接尋址寄存器間接尋址寄存器間接尋址寄存器相對(duì)尋址寄存器相對(duì)尋址基址變址尋址基址變址尋址基址變址相對(duì)尋址基址變址相對(duì)尋址通用寄存器通用寄存器AX BX CX DXS

43、I DI SP BPAL BL CL DLAH BH CH DH段寄存器DSESSSCS60例例: MOV AL, BL MOV DI, AX MOV CX, DS:1000H MOV BL, 40 MOV WORD PTRSI , 01H BYTE PTR 字節(jié)長(zhǎng)度標(biāo)記字節(jié)長(zhǎng)度標(biāo)記WORD PTR 字長(zhǎng)度標(biāo)記字長(zhǎng)度標(biāo)記DWORD PTR 雙字長(zhǎng)度標(biāo)記雙字長(zhǎng)度標(biāo)記 標(biāo)志:所有通用傳送指令都不影響標(biāo)志位。標(biāo)志:所有通用傳送指令都不影響標(biāo)志位。61 練習(xí)1用用MOV指令實(shí)現(xiàn)兩內(nèi)存字節(jié)單元內(nèi)容的交換指令實(shí)現(xiàn)兩內(nèi)存字節(jié)單元內(nèi)容的交換 2035H 2045H 01H . 02H6263用直接尋址方式實(shí)現(xiàn)

44、用直接尋址方式實(shí)現(xiàn) MOV BL, DS:2035H MOV CL, DS:2045H MOV DS:2045H, BL MOV DS:2035H, CL HLT64用寄存器間接尋址方式實(shí)現(xiàn)用寄存器間接尋址方式實(shí)現(xiàn) MOV SI , 2035H MOV DI, 2045H MOV AH, SI MOV AL, DI MOV DS:2035H ,AL MOV DS:2045H ,AH65 練習(xí)2把數(shù)據(jù)塊把數(shù)據(jù)塊BLOCK1移到移到BLOCK2 2040H 2060H 把把2040H地址開(kāi)始的地址開(kāi)始的10個(gè)字節(jié)數(shù)據(jù)移到個(gè)字節(jié)數(shù)據(jù)移到2060地址開(kāi)地址開(kāi)始的始的10個(gè)字節(jié)單元處。個(gè)字節(jié)單元處。 B

45、LOCK1BLOCK266 ANSWER MOV SI, 2040H MOV DI, 2060H MOV CX, 0AH LOOP1: MOV BL, SI+09H; MOV DI+09H,BL ; DEC SI DEC DI DEC CX JNZ LOOP1 HLT 67 練習(xí)3把把2040H地址開(kāi)始的地址開(kāi)始的10個(gè)字節(jié)單元的內(nèi)容與個(gè)字節(jié)單元的內(nèi)容與2060H地地址開(kāi)始的址開(kāi)始的10個(gè)字節(jié)單元內(nèi)容互換。個(gè)字節(jié)單元內(nèi)容互換。68MOV BL,SI+09HMOV AL,DI+09HMOV SI+09H,ALMOV DI+09H,BL69(2) PUSH指令和指令和POP指令指令 堆棧的圖示:堆

46、棧的圖示: 壓入:格式壓入:格式 PUSH SRC (SS) 先修改指針先修改指針: SP SP-2 后壓入后壓入: (SP+1,SP) SRC(SP) 彈出:格式彈出:格式 POP DST 棧頂棧頂 先彈出:先彈出:DST (SP+1,SP) 壓壓 彈彈 后修改指針:后修改指針:SP SP+2 入入 出出高地址高地址 棧底棧底 最后一項(xiàng)70(3)XCHG指令(交換指令)指令(交換指令)格式:格式:XCHG OPR1, OPR2操作:操作:OPTR1 OPTR2標(biāo)志:標(biāo)志:O D I T S Z A P C - - - - - - - - -例:例:XCHG AL , BL XCHG BX,C

47、X XCHG DS:2530H, CX 71XCHG指令允許的操作數(shù)及數(shù)據(jù)傳送方向指令允許的操作數(shù)及數(shù)據(jù)傳送方向 存儲(chǔ)器存儲(chǔ)器直接尋址直接尋址寄存器間接尋址寄存器間接尋址寄存器相對(duì)尋址寄存器相對(duì)尋址基址變址尋址基址變址尋址基址變址相對(duì)尋址基址變址相對(duì)尋址通用寄存器通用寄存器AX BX CX DXSI DI SP BPAL BL CL DLAH BH CH DH72 練習(xí)用用XCHG指令改進(jìn)前面的數(shù)據(jù)塊交換程序:指令改進(jìn)前面的數(shù)據(jù)塊交換程序: 73 MOV BL , SI +09H XCHG BL , DI+09H MOV SI+09H , BL MOV BL,SI+09HMOV AL,DI+0

48、9HMOV SI+09H,ALMOV DI+09H,BL742. 專用傳送指令專用傳送指令專用傳送指令有專用傳送指令有15條,可分為標(biāo)志傳送、查表、地條,可分為標(biāo)志傳送、查表、地址傳送、符號(hào)擴(kuò)展、輸入址傳送、符號(hào)擴(kuò)展、輸入/輸出和串傳送類共六種,輸出和串傳送類共六種,它們的名稱、書(shū)寫(xiě)格式、完成的操作及操作類型如它們的名稱、書(shū)寫(xiě)格式、完成的操作及操作類型如下表所示。下表所示。75 專用傳送指令 (1)名稱格式操作數(shù)類型操作標(biāo)標(biāo)志志傳傳送送標(biāo)志入棧標(biāo)志入棧PUSHF W字字SP SP-2, (SS:SP) Flag出棧到標(biāo)志出棧到標(biāo)志POPF WFlag(SS:SP), SP SP+2標(biāo)志送標(biāo)志送

49、AHLAHFB字節(jié)字節(jié)AHFlag低低8位位AH送標(biāo)志送標(biāo)志SAHFBFlag低低8位位 AH查查表表查表查表XLAT或或XLATBXLAT 段寄存器:變量名段寄存器:變量名BBAL (DS:BX+AL)AL (段寄存器:段寄存器:BX+AL)地地址址傳傳送送傳送有效地址傳送有效地址LEA 16位位Reg, Mem W16位位 RegMem的有效地的有效地址址地址指針?biāo)图牡刂分羔標(biāo)图拇嫫骷按嫫骷癉SLDS 16位位Reg, 雙字雙字 Mem W16位位 Reg(Mem)低字低字DS (Mem)高字高字地址指針?biāo)图牡刂分羔標(biāo)图拇嫫骷按嫫骷癊SLES 16位位Reg, 雙字雙字 Mem W16位位

50、Reg (Mem)低字低字ES (Mem)高字高字76專用傳送指令專用傳送指令 (2) 續(xù)表續(xù)表名稱名稱格式格式類型類型操作操作符號(hào)符號(hào)擴(kuò)展擴(kuò)展字節(jié)擴(kuò)展為字字節(jié)擴(kuò)展為字CBWBAH的各位的各位AL的最高位的最高位字?jǐn)U展為雙字字?jǐn)U展為雙字CWD WDX的各位的各位AX的最高位的最高位輸入輸出 輸入輸入IN Ac, 端口號(hào)端口號(hào)B/WAc (端口端口), 端口號(hào):端口號(hào):00FFHIN Ac, DX (AX/AL)B/WAc (DX), DX:00FFFFH 輸出輸出 OUT 端口號(hào)端口號(hào), Ac(AX/AL)B/W(端口端口) Ac , 端口號(hào):端口號(hào):00FFHOUT DX, Ac(AX/AL)B/W(DX)Ac, DX:00FFFFH77 專用傳送指令 (3) 續(xù)表名稱名稱格式格式類型類型操作操作串傳送類串傳送串傳送MOVSBB(ES:DI)字節(jié)字節(jié) (DS:SI)字節(jié)字節(jié)DF=0時(shí)時(shí) SISI+1, DIDI+1DF=1時(shí)時(shí) SISI- 1, DIDI -1MOVSWW(ES:DI)字字 (DS:SI)字字DF=0時(shí)時(shí) SISI+2, DIDI+2DF=1時(shí)時(shí) SISI- 2, DIDI -2*MOVS 目的,源目的,源B/W略略串存儲(chǔ)串存儲(chǔ)(存入串存入串)STOSBB(

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論