微機(jī)原理第三章8086尋址方式和指令系統(tǒng)ppt課件_第1頁(yè)
微機(jī)原理第三章8086尋址方式和指令系統(tǒng)ppt課件_第2頁(yè)
微機(jī)原理第三章8086尋址方式和指令系統(tǒng)ppt課件_第3頁(yè)
微機(jī)原理第三章8086尋址方式和指令系統(tǒng)ppt課件_第4頁(yè)
微機(jī)原理第三章8086尋址方式和指令系統(tǒng)ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩157頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第三章第三章 8086的尋址方式和指令系統(tǒng)的尋址方式和指令系統(tǒng)3-1 8086的尋址方式的尋址方式指令操作碼操作數(shù)指令操作碼操作數(shù)指出操作的性質(zhì)作用指出操作的性質(zhì)作用指出操作的對(duì)象指出操作的對(duì)象尋址方式就是指令中闡明操作數(shù)所在地址的方法尋址方式就是指令中闡明操作數(shù)所在地址的方法操作數(shù)在哪。操作數(shù)在哪。指令有單操作數(shù)、雙操作數(shù)和無(wú)操作數(shù)之分。指令有單操作數(shù)、雙操作數(shù)和無(wú)操作數(shù)之分。假設(shè)是雙操作數(shù)指令,要用逗號(hào)將兩個(gè)操作數(shù)分開(kāi),假設(shè)是雙操作數(shù)指令,要用逗號(hào)將兩個(gè)操作數(shù)分開(kāi),逗號(hào)右邊的操作數(shù)稱(chēng)為源操作數(shù),逗號(hào)左邊的為目逗號(hào)右邊的操作數(shù)稱(chēng)為源操作數(shù),逗號(hào)左邊的為目的操作數(shù)。的操作數(shù)。MOV AX,BX

2、源操作數(shù)源操作數(shù)操作碼操作碼目的操作數(shù)目的操作數(shù)兩操作數(shù)用逗號(hào)隔開(kāi)兩操作數(shù)用逗號(hào)隔開(kāi)MOV功能:將功能:將BX中的源操作數(shù)中的源操作數(shù)AX目的目的 而象單操作數(shù)指令而象單操作數(shù)指令 INC AX 其中其中AX既是源操作數(shù),又是目的操作數(shù),其既是源操作數(shù),又是目的操作數(shù),其功能是:功能是:AX+1AX。而象指令而象指令NOP,沒(méi)有操作數(shù)。,沒(méi)有操作數(shù)。前面舉的例子都是操作數(shù)在存放器中,操作數(shù)前面舉的例子都是操作數(shù)在存放器中,操作數(shù)還可以在存儲(chǔ)器或還可以在存儲(chǔ)器或I/O端口中,也可以是立刻數(shù)。端口中,也可以是立刻數(shù)。MOV AX, 2000HMOV AX, 2000H源操作數(shù)(存儲(chǔ)器)源操作數(shù)(存

3、儲(chǔ)器)IN AL,20HIN AL,20H源操作數(shù)(I/O端口)源操作數(shù)(I/O端口)MOV AX, 1000HMOV AX, 1000H源操作數(shù)(立即數(shù))源操作數(shù)(立即數(shù))立立即即數(shù)數(shù)尋尋址址寄寄存存器器尋尋址址存存儲(chǔ)儲(chǔ)器器尋尋址址直直接接尋尋址址寄寄存存器器間間接接尋尋址址寄寄存存器器相相對(duì)對(duì)尋尋址址基基址址變變址址尋尋址址相相對(duì)對(duì)基基址址變變址址尋尋址址分分三三大大類(lèi)類(lèi)8086的尋址方式的尋址方式下面主要以下面主要以MOV指令來(lái)闡明指令來(lái)闡明8086的的這些尋址方式。這些尋址方式。一、立刻尋址方式一、立刻尋址方式 操作數(shù)直接包含在指令中,它是一個(gè)操作數(shù)直接包含在指令中,它是一個(gè)8位或位或

4、16位位的常整數(shù),也叫立刻數(shù)。的常整數(shù),也叫立刻數(shù)。 例如例如 MOV AL,30H MOV AX,0FFFCH MOV 1000H,1234H留意:留意:1.常數(shù)以常數(shù)以AF開(kāi)頭時(shí),應(yīng)在其前加開(kāi)頭時(shí),應(yīng)在其前加0,以區(qū)別其,以區(qū)別其 它符號(hào)如它符號(hào)如0FFFCH。 2.立刻數(shù)只能作源操作數(shù),不能作目的操作數(shù)。立刻數(shù)只能作源操作數(shù),不能作目的操作數(shù)。 如如MOV 23H,BL 假設(shè)存放器是假設(shè)存放器是“不帶鎖的柜子不帶鎖的柜子假設(shè)操作數(shù)在存放器中,那么假設(shè)操作數(shù)在存放器中,那么只需只需直接翻開(kāi)柜門(mén)即可取之。直接翻開(kāi)柜門(mén)即可取之。假設(shè)存儲(chǔ)單元是假設(shè)存儲(chǔ)單元是“帶鎖的柜子帶鎖的柜子假設(shè)操作數(shù)在存儲(chǔ)

5、單元中,那么先假設(shè)操作數(shù)在存儲(chǔ)單元中,那么先要找到鑰匙翻開(kāi)鎖,再開(kāi)柜門(mén)要找到鑰匙翻開(kāi)鎖,再開(kāi)柜門(mén)取操作數(shù),鑰匙就相當(dāng)于存儲(chǔ)取操作數(shù),鑰匙就相當(dāng)于存儲(chǔ)單元的地址。單元的地址。立刻尋址方式,操作數(shù)相當(dāng)于直接暴露在外,立刻尋址方式,操作數(shù)相當(dāng)于直接暴露在外,需求時(shí)可直接來(lái)取。需求時(shí)可直接來(lái)取。二、存放器尋址方式二、存放器尋址方式 操作數(shù)包含在存放器中。對(duì)于操作數(shù)包含在存放器中。對(duì)于16位操作數(shù),存位操作數(shù),存放器可以是放器可以是AX,BX,CX,DX,SI,DI,SP,BP等等;對(duì)于等等;對(duì)于8位操作數(shù),存放器可以是位操作數(shù),存放器可以是AH,AL,BH,BL,CH,CL,DH,DL。 例例 1:M

6、OV DX,AX 2: MOV BL,CL留意:源操作數(shù)的長(zhǎng)度必需與目的操作數(shù)一致。留意:源操作數(shù)的長(zhǎng)度必需與目的操作數(shù)一致。假設(shè)存放器是假設(shè)存放器是“不帶鎖的柜子不帶鎖的柜子假設(shè)操作數(shù)在存放器中,那么假設(shè)操作數(shù)在存放器中,那么只需只需直接翻開(kāi)柜門(mén)即可取之。直接翻開(kāi)柜門(mén)即可取之。三、直接尋址方式存儲(chǔ)器尋址三、直接尋址方式存儲(chǔ)器尋址1.直接尋址方式直接尋址方式 有效地址有效地址 (EA):操作數(shù)的偏移地址。:操作數(shù)的偏移地址。 運(yùn)用直接尋址方式的指令時(shí),存儲(chǔ)單元的有效地運(yùn)用直接尋址方式的指令時(shí),存儲(chǔ)單元的有效地址直接由指令給出,而段地址如沒(méi)有指令前綴,默許址直接由指令給出,而段地址如沒(méi)有指令前綴

7、,默許由數(shù)據(jù)段存放器給出。例如由數(shù)據(jù)段存放器給出。例如MOV AX,2000H;存;存儲(chǔ)單元的有效地址儲(chǔ)單元的有效地址EA=2000H,段地址由數(shù)據(jù)段,段地址由數(shù)據(jù)段DS指指定設(shè)定設(shè)DS=3000H。此指令的執(zhí)行過(guò)程如以下圖所。此指令的執(zhí)行過(guò)程如以下圖所示。示。假設(shè)存儲(chǔ)單元是假設(shè)存儲(chǔ)單元是“帶鎖的柜子帶鎖的柜子假設(shè)操作數(shù)在存儲(chǔ)單元中,那么先假設(shè)操作數(shù)在存儲(chǔ)單元中,那么先要找到鑰匙翻開(kāi)鎖,再開(kāi)柜門(mén)要找到鑰匙翻開(kāi)鎖,再開(kāi)柜門(mén)取操作數(shù),鑰匙就相當(dāng)于存儲(chǔ)取操作數(shù),鑰匙就相當(dāng)于存儲(chǔ)單元的地址。對(duì)于直接尋址方單元的地址。對(duì)于直接尋址方式來(lái)說(shuō),就相當(dāng)于鑰匙直接給式來(lái)說(shuō),就相當(dāng)于鑰匙直接給出,即直接給出了單元

8、地址。出,即直接給出了單元地址。操操作作碼碼代代碼碼段段數(shù)數(shù)據(jù)據(jù)段段0 00 02 20 03 34 41 12 2D DS S2 20 00 00 0H H1 16 63 30 00 00 0H H+ +3 32 20 00 00 0H H3 32 20 00 00 0H HA AH HA AL LA AX X1 12 23 34 4指令指令MOV AX,2000H的執(zhí)行過(guò)程的執(zhí)行過(guò)程2.段超越前綴段超越前綴 假設(shè)要對(duì)代碼段、堆棧段或附加段存放器所指出假設(shè)要對(duì)代碼段、堆棧段或附加段存放器所指出的存儲(chǔ)區(qū)進(jìn)展直接尋址,應(yīng)在指令中指定段超越前綴。的存儲(chǔ)區(qū)進(jìn)展直接尋址,應(yīng)在指令中指定段超越前綴。 例

9、如指令例如指令MOV AX,ES:1000H源操作數(shù)所在源操作數(shù)所在的存儲(chǔ)單元的物理地址是的存儲(chǔ)單元的物理地址是ES16+1000H,而不是默許,而不是默許的的DS16+1000H。 MOV AX,ES:1000H ES:MOV AX,1000H 3.符號(hào)地址變量名符號(hào)地址變量名在匯編言語(yǔ)中還允許用符號(hào)地址替代數(shù)值地址,在匯編言語(yǔ)中還允許用符號(hào)地址替代數(shù)值地址,實(shí)踐上就是給存儲(chǔ)單元起一個(gè)名字,這樣,要與這些實(shí)踐上就是給存儲(chǔ)單元起一個(gè)名字,這樣,要與這些單元打交道,只需運(yùn)用其名字即可,不用記住詳細(xì)數(shù)單元打交道,只需運(yùn)用其名字即可,不用記住詳細(xì)數(shù)值是多少。例如值是多少。例如MOV AX,AREA1

10、這里的這里的AREA1就就是操作數(shù)的符號(hào)地址,該指令執(zhí)行后,將從有效地址是操作數(shù)的符號(hào)地址,該指令執(zhí)行后,將從有效地址為為AREA1的存儲(chǔ)單元中取出一個(gè)字送到的存儲(chǔ)單元中取出一個(gè)字送到AX中去。中去。留意:光從指令的方式上看,留意:光從指令的方式上看,AREA1不僅可代表符號(hào)不僅可代表符號(hào)地址,也可以表示它是一個(gè)地址,也可以表示它是一個(gè)16位的立刻數(shù),兩者之間位的立刻數(shù),兩者之間終究如何來(lái)區(qū)別呢?程序中還必需事先安排闡明語(yǔ)句終究如何來(lái)區(qū)別呢?程序中還必需事先安排闡明語(yǔ)句也叫做偽指令來(lái)加以闡明。也叫做偽指令來(lái)加以闡明。 例如例如 AREA1 EQU 1234H MOV AX,AREA1 這里,等

11、值偽指令語(yǔ)句這里,等值偽指令語(yǔ)句EQU用來(lái)給常數(shù)用來(lái)給常數(shù)1234H定義一個(gè)符號(hào)名為定義一個(gè)符號(hào)名為AREA1,在以后的程序中,符號(hào),在以后的程序中,符號(hào)AREA1就代表一個(gè)立刻數(shù)就代表一個(gè)立刻數(shù)1234H。指令。指令MOV AX,AREA1執(zhí)行后,執(zhí)行后,AX=1234H。 又如又如AREA1 DW 1234H MOV AX,AREA1 AREA1 這里的這里的DW偽指令語(yǔ)句用來(lái)定義一個(gè)存儲(chǔ)器中偽指令語(yǔ)句用來(lái)定義一個(gè)存儲(chǔ)器中的數(shù)據(jù)變量,的數(shù)據(jù)變量,AREA1表示內(nèi)存中一個(gè)數(shù)據(jù)區(qū)的名表示內(nèi)存中一個(gè)數(shù)據(jù)區(qū)的名字,也就是符號(hào)地址,該地址單元存放一個(gè)字?jǐn)?shù)據(jù)字,也就是符號(hào)地址,該地址單元存放一個(gè)字?jǐn)?shù)據(jù)

12、1234H。34341212AREA1AREA1四、存放器間接尋址方式四、存放器間接尋址方式 指令中給出的存放器中的值不是操作數(shù)本身,而指令中給出的存放器中的值不是操作數(shù)本身,而是操作數(shù)的有效地址是操作數(shù)的有效地址EA,這種尋址方式稱(chēng)為存放器,這種尋址方式稱(chēng)為存放器間接尋址。存放器稱(chēng)號(hào)外面必需加方括號(hào),以與存放間接尋址。存放器稱(chēng)號(hào)外面必需加方括號(hào),以與存放器尋址方式相區(qū)別。這類(lèi)指令中運(yùn)用的存放器有基址器尋址方式相區(qū)別。這類(lèi)指令中運(yùn)用的存放器有基址存放器存放器BX、BP及變址存放器及變址存放器SI、DI。假設(shè)存儲(chǔ)單元是假設(shè)存儲(chǔ)單元是“帶鎖的柜子帶鎖的柜子假設(shè)操作數(shù)在存儲(chǔ)單元中,那么先假設(shè)操作數(shù)在

13、存儲(chǔ)單元中,那么先要找到鑰匙翻開(kāi)鎖,再開(kāi)柜門(mén)要找到鑰匙翻開(kāi)鎖,再開(kāi)柜門(mén)取操作數(shù),鑰匙就相當(dāng)于存儲(chǔ)取操作數(shù),鑰匙就相當(dāng)于存儲(chǔ)單元的地址。對(duì)于存放器間接單元的地址。對(duì)于存放器間接尋址方式來(lái)說(shuō),就相當(dāng)于鑰匙尋址方式來(lái)說(shuō),就相當(dāng)于鑰匙放在存放器中,即存放器給出放在存放器中,即存放器給出了要訪問(wèn)的存儲(chǔ)單元地址。了要訪問(wèn)的存儲(chǔ)單元地址。存儲(chǔ)單元存儲(chǔ)單元存放器存放器兩點(diǎn)闡明:兩點(diǎn)闡明:1.假設(shè)指令中指定的存放器是假設(shè)指令中指定的存放器是BX,SI或或 DI,那么默許操作數(shù)存放在數(shù)據(jù)段中,這時(shí)要用數(shù)據(jù),那么默許操作數(shù)存放在數(shù)據(jù)段中,這時(shí)要用數(shù)據(jù)段存放器段存放器DS的內(nèi)容作為段地址。的內(nèi)容作為段地址。 物理地址

14、物理地址=DS16+BX 或或=DS16+SI 或或=DS16+DI2.假設(shè)指令中用存放器假設(shè)指令中用存放器BP進(jìn)展間接尋址,那么默許操進(jìn)展間接尋址,那么默許操作數(shù)在堆棧段中,操作數(shù)的段地址在段存放器作數(shù)在堆棧段中,操作數(shù)的段地址在段存放器SS中,中,操作數(shù)的物理地址操作數(shù)的物理地址=SS16+BP。EA=EA=(4種)(4種)BXBXSISIBPBPDIDI默認(rèn)DS段默認(rèn)DS段默認(rèn)SS段默認(rèn)SS段存放器間接尋址方式的存放器間接尋址方式的EA計(jì)算計(jì)算 例如例如 MOV BX,SI設(shè)設(shè)DS=1000H,SI=2000H,12000H=3456H那么物理地址那么物理地址=DS16+SI =1000

15、0H+2000H =12000H此指令的功能就是此指令的功能就是12000H字字BX,因此指令,因此指令執(zhí)行后執(zhí)行后BX=3456H。執(zhí)行過(guò)程如以下圖所示。執(zhí)行過(guò)程如以下圖所示。操操作作碼碼代代碼碼段段數(shù)數(shù)據(jù)據(jù)段段0 00 02 20 05 56 63 34 4D DS S1 16 61 10 00 00 0H H+ +1 12 20 00 00 0H H1 12 20 00 00 0H HB BH HB BL LB BX X3 34 45 56 62 20 00 00 0H HS SI I指令指令MOV BX,SI的執(zhí)行過(guò)程的執(zhí)行過(guò)程 例如指令例如指令MOV AX,BP,那么默許操作數(shù)在,那

16、么默許操作數(shù)在堆棧段中,操作數(shù)的物理地址堆棧段中,操作數(shù)的物理地址=SS16+BP。設(shè)設(shè)SS=4000H,BP=1000H,41000H=5678H那么物理地址那么物理地址=SS16+BP =40000H+1000H =41000H此指令的功能就是此指令的功能就是41000H字字AX,因此指令,因此指令執(zhí)行后執(zhí)行后AX=5678H。執(zhí)行過(guò)程如以下圖所示。執(zhí)行過(guò)程如以下圖所示。操操作作碼碼代代碼碼段段堆堆棧棧段段0 00 01 10 07 78 85 56 6S SS S1 16 64 40 00 00 0H H+ +4 41 10 00 00 0H H4 41 10 00 00 0H HA A

17、H HA AL LA AX X5 56 67 78 81 10 00 00 0H HB BP P指令指令MOV AX,BP的執(zhí)行過(guò)程的執(zhí)行過(guò)程 存放器間接尋址方式的指令中也可以指定段超存放器間接尋址方式的指令中也可以指定段超越前綴來(lái)從默許段以外的段中獲得數(shù)據(jù),如:越前綴來(lái)從默許段以外的段中獲得數(shù)據(jù),如:MOV BX,DS:BP 物理地址物理地址=DS16+BPMOV AX,ES:DI 物理地址物理地址=ES16+DI五、存放器相對(duì)尋址方式五、存放器相對(duì)尋址方式操作數(shù)的有效地址是一個(gè)基址或變址存放器操作數(shù)的有效地址是一個(gè)基址或變址存放器的內(nèi)容與指令中指定的的內(nèi)容與指令中指定的8位或位或16位位移

18、量之和。這位位移量之和。這種尋址方式與存放器間接尋址非常類(lèi)似,主要區(qū)別種尋址方式與存放器間接尋址非常類(lèi)似,主要區(qū)別是前者在有效地址的根底上還要加一個(gè)位移量。同是前者在有效地址的根底上還要加一個(gè)位移量。同樣,當(dāng)指令中指定的存放器是樣,當(dāng)指令中指定的存放器是BX,SI或或DI時(shí),默時(shí),默許的段存放器是許的段存放器是DS,當(dāng)指定存放器是,當(dāng)指定存放器是BP時(shí),默許時(shí),默許的段存放器是的段存放器是SS。E EA A= =(8 8種種) B BX X S SI I B BP P D DI I 默默認(rèn)認(rèn)D DS S段段默默認(rèn)認(rèn)S SS S段段+ +8 8位位位位移移量量或或1 16 6位位位位移移量量存放

19、器相對(duì)尋址方式的存放器相對(duì)尋址方式的EA計(jì)算計(jì)算例例 MOV BX,COUNTSIMOV BX,SI+COUNT設(shè)設(shè)DS=3000H,SI=2000H,位移量,位移量COUNT=4000H,36000H=5678H那么物理地址那么物理地址=DS16+SI+COUNT=36000H操操作作碼碼代代碼碼段段數(shù)數(shù)據(jù)據(jù)段段0 00 04 40 07 78 85 56 6D DS S1 16 63 30 00 00 0H H+ +3 36 60 00 00 0H H3 36 60 00 00 0H HB BH HB BL LB BX X5 56 67 78 82 20 00 00 0H HS SI IC

20、 CO OU UN NT T 4 40 00 00 0H H指令指令MOV BX,COUNTSI的執(zhí)行過(guò)程的執(zhí)行過(guò)程 存放器相對(duì)尋址方式也允許運(yùn)用段超越前綴,存放器相對(duì)尋址方式也允許運(yùn)用段超越前綴,如如MOV BX,ES:COUNTDI那么段地址為那么段地址為ES,物理地址物理地址=ES16+DI+COUNT。六、基址變址尋址方式六、基址變址尋址方式 操作數(shù)的有效地址是一個(gè)基址存放器操作數(shù)的有效地址是一個(gè)基址存放器BX或或BP和一個(gè)變址存放器和一個(gè)變址存放器SI或或DI的內(nèi)容之和,兩的內(nèi)容之和,兩個(gè)存放器均由指令指出。個(gè)存放器均由指令指出。 假設(shè)基址存放器假設(shè)基址存放器BX時(shí),段存放器用時(shí),段

21、存放器用DS; 假設(shè)基址存放器假設(shè)基址存放器BP時(shí),段存放器用時(shí),段存放器用SS。EA=EA=(4種)(4種)BXBX+SI+SIBPBP+DI+DI默認(rèn)DS段默認(rèn)DS段默認(rèn)SS段默認(rèn)SS段BXBXBPBP+SI+SI+DI+DI基址變址尋址方式的基址變址尋址方式的EA計(jì)算計(jì)算留意:沒(méi)有留意:沒(méi)有EA=EA=BXBXSISI+BP+BP+DI+DI例例 MOV AX,BXSI MOV AX,BX+SI設(shè)設(shè)DS=3000H,BX=1200H,SI=0500H,31700H=ABCDH那么物理地址那么物理地址=DS16+BX+SI =30000H+1200H+0500H =31700H指令執(zhí)行后,

22、指令執(zhí)行后,AX=ABCDH,執(zhí)行過(guò)程如下,執(zhí)行過(guò)程如下:代碼段代碼段數(shù)據(jù)段數(shù)據(jù)段CDCDABABDSDS16163000H3000H31700H31700HAHAHALALAXAXABABCDCDBXBX1200H1200HSISI0500H0500H+ +指令指令MOV AX,BXSI的執(zhí)行過(guò)程的執(zhí)行過(guò)程七、相對(duì)基址變址尋址方式七、相對(duì)基址變址尋址方式操作數(shù)的有效地址是一個(gè)基址存放器操作數(shù)的有效地址是一個(gè)基址存放器BX或或BP和一個(gè)變址存放器和一個(gè)變址存放器SI或或DI的內(nèi)容,再加上的內(nèi)容,再加上指令中指定的指令中指定的8位或位或16位位移量之和。位位移量之和。假設(shè)基址存放器假設(shè)基址存放器

23、BX時(shí),段存放器用時(shí),段存放器用DS;假設(shè)基址存放器假設(shè)基址存放器BP時(shí),段存放器用時(shí),段存放器用SS。E EA A= =(8 8種種) B BX X + + S SI I + +8 8位位或或1 16 6位位位位移移量量 B BP P 默默認(rèn)認(rèn)D DS S段段默默認(rèn)認(rèn)S SS S段段 B BX X B BP P + + D DI I + +8 8位位或或1 16 6位位位位移移量量+ + S SI I + +8 8位位或或1 16 6位位位位移移量量+ + D DI I + +8 8位位或或1 16 6位位位位移移量量相對(duì)基址變址尋址方式的相對(duì)基址變址尋址方式的EA計(jì)算計(jì)算例例 MOV AX

24、,MASKBXSI MOV AX,MASKBX+SI MOV AX,MASK+BX+SI設(shè)設(shè) DS=2000H,BX=1500H,SI=0300H, MASK=0200H,21A00H=1234H那么物理地址那么物理地址=DS16+BX+SI+MASK =20000H+1500H+0300H+0200H =21A00H指令執(zhí)行后,指令執(zhí)行后,AX=1234H,執(zhí)行過(guò)程如下:,執(zhí)行過(guò)程如下:操操作作碼碼代代碼碼段段數(shù)數(shù)據(jù)據(jù)段段0 00 00 02 23 34 41 12 2D DS S0 02 20 00 0H H1 16 62 20 00 00 0H H+ + M MA AS SK K2 21

25、 1A A0 00 0H HA AH HA AL LA AX X1 12 23 34 4B BX X1 15 50 00 0H HS SI I0 03 30 00 0H H2 21 1A A0 00 0H H指令指令MOV AX,MASKBXSI的執(zhí)行過(guò)程的執(zhí)行過(guò)程 從以上這些尋址方式可以看到,在涉及到操作從以上這些尋址方式可以看到,在涉及到操作數(shù)的地址時(shí),經(jīng)常要在指令中運(yùn)用方括號(hào),有關(guān)帶數(shù)的地址時(shí),經(jīng)常要在指令中運(yùn)用方括號(hào),有關(guān)帶方括號(hào)的地址表達(dá)式必需遵照以下規(guī)那么:方括號(hào)的地址表達(dá)式必需遵照以下規(guī)那么:立刻數(shù)可以出如今方括號(hào)內(nèi),表示直接尋址,如立刻數(shù)可以出如今方括號(hào)內(nèi),表示直接尋址,如10

26、00H;只需只需BX,BP,SI和和DI這四個(gè)存放器可以出如今這四個(gè)存放器可以出如今方括號(hào)內(nèi),它們可以單獨(dú)出現(xiàn),也可以由兩個(gè)存放方括號(hào)內(nèi),它們可以單獨(dú)出現(xiàn),也可以由兩個(gè)存放器組合起來(lái)只能相加,同時(shí)還可以加上一個(gè)器組合起來(lái)只能相加,同時(shí)還可以加上一個(gè)8位位或或16位的位移量,但位的位移量,但BX和和BP不能同時(shí)出如今方括號(hào)不能同時(shí)出如今方括號(hào)中,中,SI和和DI也不能同時(shí)出如今方括號(hào)中;也不能同時(shí)出如今方括號(hào)中;EA的的24種計(jì)算方法:種計(jì)算方法:EA=EA=(4種)(4種)BXBX寄存器間接尋址寄存器間接尋址BPBPSISIDIDIEA=EA=(8種)(8種)BXBX+D8或D16+D8或D1

27、6寄存器相對(duì)尋址寄存器相對(duì)尋址BPBP+D8或D16+D8或D16SI+D8或D16SI+D8或D16DI+D8或D16DI+D8或D16E EA A= =(4 4種種) B BX X + + S SI I B BP P 基基址址變變址址尋尋址址 B BX X B BP P + + D DI I + + S SI I + + D DI I EA=EA=(8種)(8種)BXBX+SI+D8或D16+SI+D8或D16BPBP相對(duì)基址相對(duì)基址變址尋址變址尋址BXBXBPBP+DI+D8或D16+DI+D8或D16+SI+D8或D16+SI+D8或D16+DI+D8或D16+DI+D8或D16由于方

28、括號(hào)有相加的含義,下面幾種寫(xiě)法都是等由于方括號(hào)有相加的含義,下面幾種寫(xiě)法都是等價(jià)的:價(jià)的:6BXSIBX+6SIBXSI+6BX+SI+6假設(shè)方括號(hào)內(nèi)出現(xiàn)假設(shè)方括號(hào)內(nèi)出現(xiàn)BP,那么隱含運(yùn)用,那么隱含運(yùn)用SS段來(lái)提供段來(lái)提供段地址,物理地址段地址,物理地址=SS16+EA,其他情況均運(yùn)用,其他情況均運(yùn)用DS段來(lái)提供段地址,物理地址段來(lái)提供段地址,物理地址=DS16+EA,當(dāng)然我們,當(dāng)然我們可以經(jīng)過(guò)加段超越前綴來(lái)修正段地址??梢越?jīng)過(guò)加段超越前綴來(lái)修正段地址。八、其它尋址方式八、其它尋址方式1.隱含尋址隱含尋址指令中不指明操作數(shù),但有隱含規(guī)定的尋址指令中不指明操作數(shù),但有隱含規(guī)定的尋址方式。例如指令

29、方式。例如指令DAA,它的含義是對(duì)存放器,它的含義是對(duì)存放器AL中中的數(shù)據(jù)進(jìn)展十進(jìn)制數(shù)調(diào)整,結(jié)果仍保管在的數(shù)據(jù)進(jìn)展十進(jìn)制數(shù)調(diào)整,結(jié)果仍保管在AL中。中。2. I/O端口尋址端口尋址分為直接端口尋址和間接端口尋址。分為直接端口尋址和間接端口尋址。直接:端口號(hào)由指令直接給出,是一個(gè)直接:端口號(hào)由指令直接給出,是一個(gè)8位的立刻數(shù)。位的立刻數(shù)。 端口號(hào)范圍為:端口號(hào)范圍為:00FFH;間接:端口號(hào)由存放器間接:端口號(hào)由存放器DX指定,端口范圍為:指定,端口范圍為: 0000FFFFH。例如例如 IN AL,30H直接端口尋址直接端口尋址又如又如 MOV DX,1000H IN AL,DX 間接端口尋址

30、間接端口尋址IN AL,1000H 3.一條指令有幾種尋址方式一條指令有幾種尋址方式 前面引見(jiàn)的各種尋址方式都是針對(duì)源操作數(shù)的,前面引見(jiàn)的各種尋址方式都是針對(duì)源操作數(shù)的,目的操作數(shù)均用存放器來(lái)表示。實(shí)踐上,目的操作目的操作數(shù)均用存放器來(lái)表示。實(shí)踐上,目的操作數(shù)也可以除立刻尋址方式以外的一切尋址方式指定。數(shù)也可以除立刻尋址方式以外的一切尋址方式指定。如如 MOV BX,AL存放器間接尋址存放器間接尋址存放器尋址存放器尋址目的目的源源4.轉(zhuǎn)移類(lèi)指令尋址轉(zhuǎn)移類(lèi)指令尋址 將在后面章節(jié)詳細(xì)引見(jiàn)。將在后面章節(jié)詳細(xì)引見(jiàn)。3-2 指令的機(jī)器碼表示方法指令的機(jī)器碼表示方法一、機(jī)器言語(yǔ)指令的編碼目的和特點(diǎn)一、機(jī)器

31、言語(yǔ)指令的編碼目的和特點(diǎn) 1.機(jī)器言語(yǔ)指令機(jī)器言語(yǔ)指令用匯編言語(yǔ)即主要由指令系統(tǒng)組成用匯編言語(yǔ)即主要由指令系統(tǒng)組成的言語(yǔ)編寫(xiě)的程序稱(chēng)為匯編言語(yǔ)源程序,的言語(yǔ)編寫(xiě)的程序稱(chēng)為匯編言語(yǔ)源程序,假設(shè)直接將它送到計(jì)算機(jī),機(jī)器并不認(rèn)識(shí)那假設(shè)直接將它送到計(jì)算機(jī),機(jī)器并不認(rèn)識(shí)那些構(gòu)成程序的指令和符號(hào)的含義,還必需些構(gòu)成程序的指令和符號(hào)的含義,還必需由匯編程序?qū)⒃闯绦蚍g成計(jì)算機(jī)能認(rèn)識(shí)由匯編程序?qū)⒃闯绦蚍g成計(jì)算機(jī)能認(rèn)識(shí)的二進(jìn)制機(jī)器言語(yǔ)機(jī)器碼后,才干被的二進(jìn)制機(jī)器言語(yǔ)機(jī)器碼后,才干被計(jì)算機(jī)識(shí)別和執(zhí)行,得到運(yùn)算結(jié)果。計(jì)算機(jī)識(shí)別和執(zhí)行,得到運(yùn)算結(jié)果。通常,計(jì)算機(jī)用戶(hù)采用匯編言語(yǔ)編寫(xiě)通常,計(jì)算機(jī)用戶(hù)采用匯編言語(yǔ)編寫(xiě)程

32、序時(shí),普通可不用了解每條指令的機(jī)器程序時(shí),普通可不用了解每條指令的機(jī)器碼。不過(guò),假設(shè)要透徹了解計(jì)算機(jī)的任務(wù)原碼。不過(guò),假設(shè)要透徹了解計(jì)算機(jī)的任務(wù)原理,以及能看懂包含機(jī)器碼的程序清單,理,以及能看懂包含機(jī)器碼的程序清單,對(duì)程序進(jìn)展正確的調(diào)試、排錯(cuò)等,就需求對(duì)程序進(jìn)展正確的調(diào)試、排錯(cuò)等,就需求熟習(xí)機(jī)器言語(yǔ)。所以我們要簡(jiǎn)單引見(jiàn)一下熟習(xí)機(jī)器言語(yǔ)。所以我們要簡(jiǎn)單引見(jiàn)一下機(jī)器言語(yǔ)指令的根本概念和編碼方式。機(jī)器言語(yǔ)指令的根本概念和編碼方式。2.機(jī)器言語(yǔ)指令的編碼特點(diǎn)機(jī)器言語(yǔ)指令的編碼特點(diǎn)對(duì)于對(duì)于Z80、8085等等8位微處置器,進(jìn)展位微處置器,進(jìn)展指令編碼是很容易的事,只需有一張指令指令編碼是很容易的事,只

33、需有一張指令編碼表,匯編言語(yǔ)源程序與機(jī)器碼之間的編碼表,匯編言語(yǔ)源程序與機(jī)器碼之間的對(duì)應(yīng)關(guān)系就一目了然,很容易經(jīng)過(guò)查表求對(duì)應(yīng)關(guān)系就一目了然,很容易經(jīng)過(guò)查表求出每條指令的機(jī)器碼。但對(duì)于出每條指令的機(jī)器碼。但對(duì)于8086系統(tǒng)來(lái)系統(tǒng)來(lái)說(shuō),由于其很多種尋址方式,很難列出一說(shuō),由于其很多種尋址方式,很難列出一張張8086指令與機(jī)器言語(yǔ)的對(duì)照表。但我們指令與機(jī)器言語(yǔ)的對(duì)照表。但我們可以為每種根本指令類(lèi)型給出一個(gè)編碼格可以為每種根本指令類(lèi)型給出一個(gè)編碼格式,對(duì)照格式填上不同的數(shù)字來(lái)表示不同式,對(duì)照格式填上不同的數(shù)字來(lái)表示不同的尋址方式、數(shù)據(jù)類(lèi)型等,就能求得每條的尋址方式、數(shù)據(jù)類(lèi)型等,就能求得每條指令的機(jī)器碼

34、。指令通常由操作碼和操作指令的機(jī)器碼。指令通常由操作碼和操作數(shù)兩部分組成,每條指令的操作碼列于附數(shù)兩部分組成,每條指令的操作碼列于附錄錄B中。中。二、二、 機(jī)器言語(yǔ)指令代碼的編制機(jī)器言語(yǔ)指令代碼的編制1.編碼格式闡明編碼格式闡明我們用存放器之間或存放器與存儲(chǔ)器我們用存放器之間或存放器與存儲(chǔ)器之間交換數(shù)據(jù)的之間交換數(shù)據(jù)的MOV指令,來(lái)闡明指令的指令,來(lái)闡明指令的編碼格式,詳細(xì)格式如圖編碼格式,詳細(xì)格式如圖3-7所示。所示。MODMODREGREGR/MR/M0 01 12 23 34 45 56 67 78 81515W WD D0 00 00 00 01 11 1操作碼操作碼圖圖3-7 典型的

35、典型的MOV指令的編碼格式指令的編碼格式W位:闡明傳送數(shù)據(jù)的類(lèi)型;位:闡明傳送數(shù)據(jù)的類(lèi)型; W=0,為字節(jié),為字節(jié)W=1,為字,為字D位:標(biāo)明數(shù)據(jù)傳送的方向;位:標(biāo)明數(shù)據(jù)傳送的方向;D=0,數(shù)據(jù)從存放器傳出,數(shù)據(jù)從存放器傳出D=1,數(shù)據(jù)傳送到存放器,數(shù)據(jù)傳送到存放器REG3位:闡明存放器段存放器除位:闡明存放器段存放器除外的稱(chēng)號(hào),與外的稱(chēng)號(hào),與W位共同決議運(yùn)用的是哪位共同決議運(yùn)用的是哪個(gè)存放器。假設(shè)運(yùn)用的是段存放器,那么只需個(gè)存放器。假設(shè)運(yùn)用的是段存放器,那么只需REG的低兩位來(lái)決議,最高位為的低兩位來(lái)決議,最高位為0。詳細(xì)。詳細(xì)編碼見(jiàn)表編碼見(jiàn)表3-1。W=1(字)W=1(字) W=0(字節(jié))

36、W=0(字節(jié))REGREG000000001001010010011011100100101101110110111111AXAXALALBXBXCXCXDXDXSPSPDIDIBPBPSISIBLBLCLCLDLDLAHAHBHBHCHCHDHDH表表3-1 8086存放器編碼表存放器編碼表段段寄寄存存器器R RE EG G0 00 00 00 00 01 10 01 10 00 01 11 1E ES SC CS SD DS SS SS S在這類(lèi)在這類(lèi)MOV指令中有兩個(gè)操作數(shù),指令中有兩個(gè)操作數(shù),其中有一個(gè)必為存放器,其編號(hào)由其中有一個(gè)必為存放器,其編號(hào)由REG決決定,另一個(gè)操作數(shù)能夠是存

37、放器,也能夠定,另一個(gè)操作數(shù)能夠是存放器,也能夠是存儲(chǔ)單元,由指令代碼的是存儲(chǔ)單元,由指令代碼的MOD和和R/M來(lái)來(lái)指定。表指定。表3-2給出給出MOD和和R/M的編碼格式,的編碼格式,其中其中D8表示表示8位位移量,位位移量,D16為為16位位移量。位位移量。M MO OD DR R/ /M M0 00 00 00 00 01 10 01 10 00 01 11 11 10 00 01 10 01 11 11 10 01 11 11 1 B BX X + + S SI I D D1 16 6直直 接接 地地 址址 B BX X + + S SI I + +D D8 8 B BX X + +

38、S SI I + +D D1 16 6 B BX X + + D DI I B BP P + + S SI I B BP P + + D DI I D DI I S SI I B BX X B BX X + + D DI I + +D D8 8 B BP P + + S SI I + +D D8 8 B BP P + + D DI I + +D D8 8 S SI I + +D D8 8 D DI I + +D D8 8 B BX X + +D D8 8 B BP P + +D D8 8 B BX X + + D DI I + +D D1 16 6 B BP P + + S SI I + +D

39、 D1 16 6 B BP P + + D DI I + +D D1 16 6 S SI I + +D D1 16 6 B BP P + +D D1 16 6 D DI I + +D D1 16 6 B BX X + +D D1 16 6W W= =0 0 W W= =1 10 00 00 01 11 10 01 11 1A AL LC CL LD DL LB BL LA AH HC CH HD DH HB BH HA AX XB BX XC CX XD DX XS SP PB BP PS SI ID DI I表表3-2 MOD和和R/M的編碼表的編碼表2.存放器間傳送指令的編碼存放器間傳送指

40、令的編碼例例3-18 求指令求指令MOV SP,BX的機(jī)器碼的機(jī)器碼REG決議存放器決議存放器SPMODMODREGREGR/MR/M0 01 12 23 34 45 56 67 78 81515W WD D0 00 00 00 01 11 1操作碼操作碼11111001000110110 01 12 23 34 45 56 67 78 815151 11 10 00 00 00 01 11 1操作碼操作碼D:至SP寄存器D:至SP寄存器W:傳送字W:傳送字MOD:寄存器寄存器MOD:寄存器寄存器REG:SPREG:SPR/M:BXR/M:BX圖圖3-8 指令指令MOV SP,BX的編碼的編碼

41、=8B E3H代代 碼碼 段段數(shù)數(shù) 據(jù)據(jù) 段段8 8B BE E3 3M MO OV V S SP P, B BX X圖圖3-8.1指令指令MOV SP,BX在代碼段中的存放在代碼段中的存放REG決議存放器決議存放器BXMODMODREGREGR/MR/M0 01 12 23 34 45 56 67 78 81515W WD D0 00 00 00 01 11 1操作碼操作碼1 11 10 01 11 11 10 00 00 01 12 23 34 45 56 67 78 81 15 51 10 00 00 00 00 01 11 1操操作作碼碼D D:從從B BX X寄寄存存器器出出W W:

42、傳傳送送字字M MO OD D:寄寄存存器器寄寄存存器器R RE EG G:B BX XR R/ /M M:S SP P=89 DCH圖圖3-9 指令指令MOV SP,BX的另一種編碼的另一種編碼代代碼碼段段數(shù)數(shù)據(jù)據(jù)段段8 89 9D DC CM MO OV V S SP P,B BX X圖圖3-9.1指令指令MOV SP,BX在代碼段中的存放在代碼段中的存放3.存放器與存儲(chǔ)器間傳送指令的編碼存放器與存儲(chǔ)器間傳送指令的編碼例例3-19 求指令求指令MOV CL,BX+1234H的機(jī)器碼的機(jī)器碼1 10 00 00 01 11 11 11 10 01 10 00 00 00 01 11 1操操作

43、作碼碼D D:至至C CL LW W:傳傳送送字字節(jié)節(jié)M MO OD D:存存儲(chǔ)儲(chǔ)器器,1 16 6位位位位移移量量R RE EG G:C CL LR R/ /M M:B BX X+ +D D1 16 6字字節(jié)節(jié)1 1字字節(jié)節(jié)2 20 00 01 11 10 01 10 00 00 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0字字節(jié)節(jié)3 3字字節(jié)節(jié)4 4低低位位移移量量高高位位移移量量D Di is sp p_ _H HD Di is sp p_ _L L圖圖3-10指令指令MOV CL,BX+1234H的編碼的編碼=8A 8F 34 12H代碼段代碼段數(shù)據(jù)段數(shù)據(jù)段8F8F343

44、4MOV CL,BX+1234HMOV CL,BX+1234H8A8A1212圖圖3-10.1指令指令MOV CL,BX+1234H在代碼在代碼段中的存放段中的存放4.立刻數(shù)尋址指令的編碼立刻數(shù)尋址指令的編碼例例3-20 求指令求指令MOV DX,5678H的機(jī)器碼的機(jī)器碼REGREGW W1 10 01 11 1操作碼操作碼立即數(shù)低字節(jié)立即數(shù)低字節(jié)立即數(shù)高字節(jié)立即數(shù)高字節(jié)字節(jié)1字節(jié)1字節(jié)2字節(jié)2字節(jié)3字節(jié)30 01 10 01 11 10 01 11 1操操作作碼碼0 01 11 11 11 10 00 00 00 01 10 01 10 01 11 10 0字字節(jié)節(jié)1 1字字節(jié)節(jié)2 2字字

45、節(jié)節(jié)3 3W W:傳傳送送字字R RE EG G:D DX X=BA 78 56H求指令求指令MOV BH,34H的機(jī)器碼的機(jī)器碼REGREGW W1 10 01 11 1操作碼操作碼立即數(shù)低字節(jié)立即數(shù)低字節(jié)字節(jié)1字節(jié)1字節(jié)2字節(jié)21 11 11 10 01 10 01 11 1操操作作碼碼0 00 01 11 10 01 10 00 0字字節(jié)節(jié)1 1字字節(jié)節(jié)2 2W W:傳傳送送字字節(jié)節(jié)R RE EG G:B BH H=B7 34H例例3-21 求指令求指令MOV BX+2100H,0FA50H的機(jī)器碼的機(jī)器碼1 1 1 1 W W0 00 01 10 01 1操操作作碼碼0 00 00 0

46、字字節(jié)節(jié)1 1字字節(jié)節(jié)2 2M MO OD DR R/ /M M位移量低字節(jié)位移量低字節(jié)位移量高字節(jié)位移量高字節(jié)字節(jié)3字節(jié)3字節(jié)4字節(jié)4立即數(shù)低字節(jié)立即數(shù)低字節(jié)立即數(shù)高字節(jié)立即數(shù)高字節(jié)字節(jié)5字節(jié)5字節(jié)6字節(jié)61 1 11 1 10 00 01 10 01 1操作碼操作碼000000字節(jié)1字節(jié)1字節(jié)2字節(jié)21010W:傳送字W:傳送字111111MODMODR/MR/MBX+D16BX+D160 00 00 00 00 00 00 00 00 00 01 10 00 00 00 01 1字字節(jié)節(jié)3 3字字節(jié)節(jié)4 4d di is sp p_ _L Ld di is sp p_ _H H01010

47、0000101000011111O1O11111O1O字節(jié)5字節(jié)5字節(jié)6字節(jié)6data_Ldata_Ldata_Hdata_H=C7 87 00 21 50 FAH代代碼碼段段數(shù)數(shù)據(jù)據(jù)段段0 00 02 21 1M MO OV V B BX X+ +2 21 10 00 0H H , ,0 0F FA A5 50 0H H8 87 75 50 0C C7 7F FA A圖圖3-11.1指令指令MOV BX+2100H,0FA50H 在代碼段中的存放在代碼段中的存放5.包含段存放器的指令的編碼包含段存放器的指令的編碼例例3-22 求指令求指令MOV DS,AX的機(jī)器碼的機(jī)器碼1 1 01 1 0

48、1 10 00 00 01 1操作碼操作碼0 0 REGREG字節(jié)1字節(jié)1字節(jié)2字節(jié)2MODMODR/MR/M1 1 01 1 01 10 00 00 01 1操作碼操作碼0 0 1111字節(jié)1字節(jié)1字節(jié)2字節(jié)21111000000REG:DSREG:DSMODMODR/MR/MAXAX=8E D8H6.段超越前綴指令的編碼段超越前綴指令的編碼對(duì)于帶有段超越前綴的指令編碼時(shí),對(duì)于帶有段超越前綴的指令編碼時(shí),要在指令代碼前加一個(gè)要在指令代碼前加一個(gè)8位的段超越前綴位的段超越前綴代碼,代碼的格式為代碼,代碼的格式為001110,其中,其中位闡明段超越前綴存放器,編碼與上面位闡明段超越前綴存放器,編

49、碼與上面列出的一樣。指令的其他代碼仍按前面的列出的一樣。指令的其他代碼仍按前面的方法求得。方法求得。例例3-23 假設(shè)指令假設(shè)指令MOV BX,DL的機(jī)器碼的機(jī)器碼為為88 17H,試求指令,試求指令MOV CS:BX,DL的代碼。的代碼。解:解: 需添加的字節(jié)為需添加的字節(jié)為001110 CS =01所以,需添加的字節(jié)為所以,需添加的字節(jié)為00101110=2EH所以,所求的指令機(jī)器碼為所以,所求的指令機(jī)器碼為2E 88 17H。作業(yè):作業(yè):P1201,2,3,4其中其中11,3,5 22,4,6 37,8,93-3 8086的指令系統(tǒng)的指令系統(tǒng)8086指令系統(tǒng)中包含指令系統(tǒng)中包含133條根

50、本指令,分六大類(lèi):條根本指令,分六大類(lèi): 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令邏輯運(yùn)算和移位指令邏輯運(yùn)算和移位指令字符串操作指令字符串操作指令控制轉(zhuǎn)換指令控制轉(zhuǎn)換指令處置器控制指令處置器控制指令一、數(shù)據(jù)傳送指令一、數(shù)據(jù)傳送指令分分4類(lèi):類(lèi):通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令輸入輸出指令輸入輸出指令地址目的傳送指令地址目的傳送指令標(biāo)志傳送指令標(biāo)志傳送指令1.通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令1MOV傳送指令傳送指令指令格式:指令格式:MOV 目的,源目的,源指令功能:將源操作數(shù)一個(gè)字節(jié)或一個(gè)字傳送指令功能:將源操作數(shù)一個(gè)字節(jié)或一個(gè)字傳送到目的操作數(shù)。到目的操作數(shù)。段寄存器段寄存器CS,

51、DS,ES,SSCS,DS,ES,SS立即數(shù)立即數(shù)存存儲(chǔ)儲(chǔ)器器通用寄存器通用寄存器AXAXBXBXCXCXDXDXSISIDIDISPSPBPBPAHAHALALBHBHBLBLCHCHCLCLDHDHDLDL圖圖3-12 MOV指令允許傳送數(shù)據(jù)的途徑指令允許傳送數(shù)據(jù)的途徑CPU內(nèi)部存放器內(nèi)部存放器之間的數(shù)據(jù)傳送之間的數(shù)據(jù)傳送MOV指令指令可實(shí)現(xiàn):可實(shí)現(xiàn):MOV AX,BXMOV BH,ALMOV AL,AH段寄存器段寄存器CS,DS,ES,SSCS,DS,ES,SS立即數(shù)立即數(shù)存存儲(chǔ)儲(chǔ)器器通用寄存器通用寄存器AXAXBXBXCXCXDXDXSISIDIDISPSPBPBPAHAHALALBH

52、BHBLBLCHCHCLCLDHDHDLDL圖圖3-12 MOV指令允許傳送數(shù)據(jù)的途徑指令允許傳送數(shù)據(jù)的途徑存放器與內(nèi)存存放器與內(nèi)存之間的數(shù)據(jù)傳送之間的數(shù)據(jù)傳送MOV AX,1234HMOV BX,BXMOV BP,CX段寄存器段寄存器CS,DS,ES,SSCS,DS,ES,SS立即數(shù)立即數(shù)存存儲(chǔ)儲(chǔ)器器通用寄存器通用寄存器AXAXBXBXCXCXDXDXSISIDIDISPSPBPBPAHAHALALBHBHBLBLCHCHCLCLDHDHDLDL圖圖3-12 MOV指令允許傳送數(shù)據(jù)的途徑指令允許傳送數(shù)據(jù)的途徑將立刻數(shù)將立刻數(shù)存放器存放器 或內(nèi)存單元或內(nèi)存單元MOV AX,1234HMOV W

53、ORD PTRDI,1000HMOV AL,B段寄存器段寄存器CS,DS,ES,SSCS,DS,ES,SS立即數(shù)立即數(shù)存存儲(chǔ)儲(chǔ)器器通用寄存器通用寄存器AXAXBXBXCXCXDXDXSISIDIDISPSPBPBPAHAHALALBHBHBLBLCHCHCLCLDHDHDLDL圖圖3-12 MOV指令允許傳送數(shù)據(jù)的途徑指令允許傳送數(shù)據(jù)的途徑段存放器與內(nèi)存或存放器段存放器與內(nèi)存或存放器MOV DS,AXMOV DS,AXMOV ES,BX幾點(diǎn)闡明:幾點(diǎn)闡明:MOV 12H,AL MOV CS,1000H MOV IP,2000H MOV AX,IP 指令中,立刻數(shù)不能作為目的操作數(shù),指令中,立刻

54、數(shù)不能作為目的操作數(shù),CS和和IP也不能作為目的操作數(shù),即它們的值不能隨意修也不能作為目的操作數(shù),即它們的值不能隨意修正。同時(shí)正。同時(shí)IP還不能作為源操作數(shù)。還不能作為源操作數(shù)。兩個(gè)內(nèi)存單元之間,以及兩個(gè)段存放器之間不兩個(gè)內(nèi)存單元之間,以及兩個(gè)段存放器之間不能直接傳送數(shù)據(jù)。能直接傳送數(shù)據(jù)。MOV BX,1000HMOV DS,ES 立刻數(shù)不能直接傳送給段存放器,必需經(jīng)過(guò)存放立刻數(shù)不能直接傳送給段存放器,必需經(jīng)過(guò)存放器傳送給段存放器。器傳送給段存放器。MOV DS,2000H 要換成:要換成:MOV AX,2000HMOV DS,AX其它存放器也可其它存放器也可當(dāng)指令是給當(dāng)指令是給SS段存放器賦

55、值時(shí),系統(tǒng)會(huì)自動(dòng)制止段存放器賦值時(shí),系統(tǒng)會(huì)自動(dòng)制止外部中斷,等到本條指令和下條指令執(zhí)行之后,又外部中斷,等到本條指令和下條指令執(zhí)行之后,又自動(dòng)開(kāi)中斷。目的?自動(dòng)開(kāi)中斷。目的? 針對(duì)第點(diǎn)闡明,我們簡(jiǎn)單了解一下一個(gè)數(shù)據(jù)針對(duì)第點(diǎn)闡明,我們簡(jiǎn)單了解一下一個(gè)數(shù)據(jù)段的定義,以及段地址段的定義,以及段地址DS?例如,下面是某個(gè)程序的數(shù)據(jù)段:例如,下面是某個(gè)程序的數(shù)據(jù)段:DATASEGMENT;數(shù)據(jù)段開(kāi)場(chǎng);數(shù)據(jù)段開(kāi)場(chǎng)AREA1DB 14H,3BHAREA2 DB 3 DUP0ARRAY DW 3100H,01A6HSTRINGDB GOODDATAENDS ;數(shù)據(jù)段終了;數(shù)據(jù)段終了14143B3B000000

56、00000000003131A6A60101G(47)G(47)O(4F)O(4F)O(4F)O(4F)D(44)D(44)AREA1AREA1AREA2AREA2ARRAYARRAYSTRINGSTRINGDATA段DATA段0000H0000H0002H0002H0005H0005H0009H0009H偏移地址偏移地址DATA SEGMENTAREA1 DB 14H,3BHAREA2 DB 3 DUP0ARRAY DW 3100H,01A6HSTRING DB GOODDATA ENDS圖圖3-13 數(shù)據(jù)段占用存儲(chǔ)空間的情況數(shù)據(jù)段占用存儲(chǔ)空間的情況14143B3B0000000000000

57、0003131A6A60101G(47)G(47)O(4F)O(4F)O(4F)O(4F)D(44)D(44)AREA1AREA1AREA2AREA2ARRAYARRAYSTRINGSTRINGDATA段DATA段0000H0000H0002H0002H0005H0005H0009H0009H偏移地址偏移地址此指令的功能是將符號(hào)此指令的功能是將符號(hào)地址地址ARRAY的偏移地址的偏移地址DX。指令執(zhí)行后,。指令執(zhí)行后,DX=0005H例例3-26 MOV DX,OFFSET ARRAY14143B3B00000000000000003131A6A60101G(47)G(47)O(4F)O(4F)

58、O(4F)O(4F)D(44)D(44)AREA1AREA1AREA2AREA2ARRAYARRAYSTRINGSTRINGDATA段DATA段0000H0000H0002H0002H0005H0005H0009H0009H偏移地址偏移地址例例3-27 MOV AL,AREA1 ;14HALMOV AREA2+1,AL ;14H0003H單元單元MOV AREA2+1,AREA1 可以嗎?可以嗎?14H14143B3B00000000000000003131A6A60101G(47)G(47)O(4F)O(4F)O(4F)O(4F)D(44)D(44)AREA1AREA1AREA2AREA2A

59、RRAYARRAYSTRINGSTRINGDATA段DATA段0000H0000H0002H0002H0005H0005H0009H0009H偏移地址偏移地址例例3-28 MOV AX,ARRAY+1問(wèn)指令執(zhí)行后,問(wèn)指令執(zhí)行后, AX= ?+12PUSH進(jìn)棧指令進(jìn)棧指令指令格式:指令格式:PUSH 源源指令功能:將源操作數(shù)壓入堆棧。指令功能:將源操作數(shù)壓入堆棧。源操作數(shù)可以是源操作數(shù)可以是16位通用存放器、段存放器或存位通用存放器、段存放器或存儲(chǔ)器中的數(shù)據(jù)字,但不能是立刻數(shù)。儲(chǔ)器中的數(shù)據(jù)字,但不能是立刻數(shù)。操作過(guò)程:先修正操作過(guò)程:先修正SP指針指針SP-2SP,然后把源操,然后把源操作數(shù)壓入

60、到作數(shù)壓入到SP指向的位置,低位字節(jié)指向的位置,低位字節(jié)SP 高位字節(jié)高位字節(jié)SP+11000H1002H舊舊SP新新SP例如例如 PUSH AX假設(shè),執(zhí)行前假設(shè),執(zhí)行前AX=1234H, SP=1002H那么執(zhí)行后,堆棧內(nèi)容如何變化?那么執(zhí)行后,堆棧內(nèi)容如何變化?12343POP出棧指令出棧指令指令格式:指令格式:POP 目的目的指令功能:將當(dāng)前指令功能:將當(dāng)前SP和和SP+1所指向的單元內(nèi)容所指向的單元內(nèi)容目目的操作數(shù)。的操作數(shù)。源操作數(shù)可以是源操作數(shù)可以是16位通用存放器、段存放器或存位通用存放器、段存放器或存儲(chǔ)器中的數(shù)據(jù)字,但儲(chǔ)器中的數(shù)據(jù)字,但CS不能作為目的操作數(shù)。不能作為目的操作數(shù)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論