微機(jī)原理與接口技術(shù)_第3章8086的尋址方式和指令系統(tǒng)_第1頁(yè)
微機(jī)原理與接口技術(shù)_第3章8086的尋址方式和指令系統(tǒng)_第2頁(yè)
微機(jī)原理與接口技術(shù)_第3章8086的尋址方式和指令系統(tǒng)_第3頁(yè)
微機(jī)原理與接口技術(shù)_第3章8086的尋址方式和指令系統(tǒng)_第4頁(yè)
微機(jī)原理與接口技術(shù)_第3章8086的尋址方式和指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩226頁(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、主講主講 尹作友尹作友v 8086CPU內(nèi)部結(jié)構(gòu)SIDIBPSPAHBHCHDHALBLCLDLIPPSWDSESSSCS段基址 偏移地址地址加法器物理地址p80868086的尋址方式的尋址方式p微機(jī)系統(tǒng)指令的機(jī)器碼表示方法微機(jī)系統(tǒng)指令的機(jī)器碼表示方法p80868086的指令系統(tǒng)的指令系統(tǒng) 概述概述 計(jì)算機(jī)的指令指令包括:操作碼操作碼 操作數(shù)操作數(shù) 操作的性質(zhì)性質(zhì)操作的對(duì)象對(duì)象 存放在 寄存器寄存器、存儲(chǔ)器存儲(chǔ)器、I/OI/O端口地址端口地址、立即數(shù)立即數(shù)(由尋址方式?jīng)Q定)尋址方式:尋址方式:指令中說(shuō)明操作數(shù)所在地址的方法。指令分類:指令分類:?jiǎn)尾僮鲾?shù)、雙操作數(shù)、無(wú)操作數(shù)。(雙操作數(shù)指令形式:

2、操作碼 目的操作數(shù),源操作數(shù))概述概述 各種尋址方式指令執(zhí)行各種尋址方式指令執(zhí)行速度不同速度不同: 操作數(shù)在寄存器操作數(shù)在寄存器中指令執(zhí)行速度中指令執(zhí)行速度快快:在:在CPUCPU內(nèi)部立內(nèi)部立即執(zhí)行;即執(zhí)行; 立即數(shù)尋址立即數(shù)尋址指令執(zhí)行速度指令執(zhí)行速度較快較快:直接從指令隊(duì)列:直接從指令隊(duì)列中取數(shù);中取數(shù); 操作數(shù)在存儲(chǔ)器操作數(shù)在存儲(chǔ)器中指令執(zhí)行速度中指令執(zhí)行速度較慢較慢:通過(guò)總線:通過(guò)總線與與CPUCPU交換數(shù)據(jù)。交換數(shù)據(jù)。CPUCPU進(jìn)行讀進(jìn)行讀/ /寫存儲(chǔ)器的操作:寫存儲(chǔ)器的操作:把一個(gè)偏移量送把一個(gè)偏移量送到到BIUBIU,計(jì)算出,計(jì)算出2020位物理地址;位物理地址;執(zhí)行總線周期執(zhí)

3、行總線周期存取操作數(shù)。存取操作數(shù)。概述概述 概述概述 一、立即尋址方式一、立即尋址方式二、寄存器尋址方式二、寄存器尋址方式三、直接尋址方式三、直接尋址方式四、寄存器間接尋址方式四、寄存器間接尋址方式五、寄存器相對(duì)尋址方式五、寄存器相對(duì)尋址方式六、基址變址尋址方式六、基址變址尋址方式七、相對(duì)基址變址尋址方式七、相對(duì)基址變址尋址方式八、其它八、其它立即尋址方式立即尋址方式 1 1含義:含義:操作數(shù)是立即數(shù)立即數(shù)(即8位或16位的常數(shù)),直接包含在含在指令中指令中。2 2特點(diǎn):特點(diǎn): 翻譯成機(jī)器碼時(shí),立即數(shù)是指令的一部分指令的一部分,緊跟在操作碼之后存放在代碼段內(nèi)。在取出指令的同時(shí)也就取出了操作數(shù),

4、立即有操作數(shù)可用,所以稱之為立即尋址。 l6l6位數(shù)位數(shù):高字節(jié)高字節(jié)代碼段的高地址高地址單元,低字節(jié)低字節(jié)低低地址地址單元; 3 3作用:作用: 常用于給寄存器賦初值賦初值。立即尋址方式立即尋址方式 例 MOV CX,2A50H 解:將立即數(shù)2A50H送到CX寄存器中。(又例: MOV CL,20H)4注意:立即數(shù)可以送到寄存器、一個(gè)存儲(chǔ)單元(8位)、兩個(gè)連續(xù)的存儲(chǔ)單元(16位)中去;立即數(shù)只能作源操作數(shù),不能作目的操作數(shù);以AF打頭的數(shù)字出現(xiàn)在指令中時(shí),前面必須加數(shù)字0。以免與其它符號(hào)相混淆(如:0AF22H)。MOV CX, 2A50H寄存器尋址方式寄存器尋址方式 1 1含義:含義: 操

5、作數(shù)包含在寄存器中,寄存器的名稱由指令指定。2 2特點(diǎn):特點(diǎn):寄存器可以是AX、BX、CX、DX、SI、DI、SP和BP等。 8位操作數(shù):寄存器AH、AL、BH、BL、CH、CL、DH和DL。3 3作用:作用:寄存器之間傳遞數(shù)據(jù)。 例例 MOV DX,AX 解:解: (AX)送到CX寄存器中。(AX內(nèi)容不變) (又例: MOV BL,AL)4 4注意:注意:源操作數(shù)的長(zhǎng)度長(zhǎng)度必須與目的操作數(shù)致致。(注:(注:以下尋址方式下,指令的操作數(shù)在存儲(chǔ)器中,要先求物理地址才能獲得操作數(shù)。) 直接尋址方式直接尋址方式 1含義: 存儲(chǔ)單元的有效地址EA(即:操作數(shù)的偏移地址)直接由指令給出。 2特點(diǎn): 機(jī)器

6、碼中,有效地址存放在代碼段中指令的操作碼之后,而該地址單元中的數(shù)據(jù)總是存放在存儲(chǔ)器中。須先求出操作數(shù)的物理地址,再?gòu)拇鎯?chǔ)器中取得操作數(shù)。 操作數(shù)的物理地址16DS EA 3作用: 實(shí)現(xiàn)對(duì)存儲(chǔ)單元的讀/寫操作。 直接尋址方式直接尋址方式 例 MOV AX,2000H解:設(shè)DS = 3000H; 設(shè):(32000H)= 1234H 由指令得:EA = 2000H (16位邏輯地址) 物理地址 = 163000H 2000H = 32000H (20位,20根地址線) 則: AX = 1234H 指令執(zhí)行過(guò)程如圖所示。(注:如用AL替代AX,則AL=34H)直接尋址方式直接尋址方式 2.2.段超越前

7、綴段超越前綴MOV MOV AX, AX, ES:500HES:500H3.3.符號(hào)地址符號(hào)地址AREA1AREA1EQUEQU0867H0867HMOVAX,AREA1等價(jià)為MOVAX,AREA1寄存器間接尋址方式寄存器間接尋址方式1含義:操作數(shù)的有效地址放在寄存器中。2特點(diǎn):使用寄存器:基址寄存器BX、 BP,變址寄存器SI、DI 。操作數(shù)的物理地址 16DS BX/SI/DI 或 16SS BP3作用:有效地址可以存放在寄存器中。 寄存器間接尋址方式寄存器間接尋址方式例例 MOV BXMOV BX,SISI 解:設(shè):解:設(shè):DSDS1000H1000H,SISI2000H2000H,(1

8、2000H)(12000H)318BH318BH 則:物理地址則:物理地址 1616DS DS SISI 10000H 10000H 2000H 2000H 12000H12000H 指令執(zhí)行后,指令執(zhí)行后,BXBX318BH318BH,指令執(zhí)行過(guò)程如圖所示。,指令執(zhí)行過(guò)程如圖所示。 4 4注意:注意:寄存器名稱外必須加方括號(hào)方括號(hào),以區(qū)別寄存器尋址方式; 段超越前綴段超越前綴來(lái)從默認(rèn)段以外的段中取得數(shù)據(jù); 例 MOV BX,ES:SI關(guān)于默認(rèn)段默認(rèn)段: 指定寄存器BX、SI或DI,默認(rèn)操作數(shù)存放在數(shù)據(jù)段DS中; (DSDS:BXBX,SISI,DIDI) 指定寄存器BP,默認(rèn)操作數(shù)存放在數(shù)據(jù)

9、段SS中; (SSSS:BPBP) 寄存器間接尋址方式寄存器間接尋址方式寄存器相對(duì)尋址方式寄存器相對(duì)尋址方式1 1含義:含義: 操作數(shù)的有效地址有效地址是基址或變址寄存器基址或變址寄存器的內(nèi)容與8位或16位位移量位移量(Displacement)之和和。即 BX / BP EA = + 8位偏移量/16位偏移量 SI / DI 2 2特點(diǎn):特點(diǎn): 使用:BX、BP、SI、DI 。 操作數(shù)的物理地址 16DS BX/SI/DI COUNT 或 16SS BP COUNT 寄存器相對(duì)尋址方式寄存器相對(duì)尋址方式例例 MOV BXMOV BX,COUNT SICOUNT SI ; ;或:或:MOV B

10、XMOV BX,COUNTCOUNTSISI解:設(shè):解:設(shè):DSDS3000H3000H,SISI2000H2000H,位移量,位移量COUNTCOUNT4000H4000H, (36000H)=318BH(36000H)=318BH則:物理地址則:物理地址 1616DS DS SI SI COUNTCOUNT 30000H 30000H 2000H 2000H 4000H4000H 36000H36000H指令執(zhí)行后,指令執(zhí)行后,BXBX318BH318BH403000 3 3注意:注意:寄存器名稱外必須加寄存器名稱外必須加方括號(hào)方括號(hào),位移量可以在括號(hào),位移量可以在括號(hào)內(nèi),也可以在括號(hào)外;

11、內(nèi),也可以在括號(hào)外; 段超越前綴段超越前綴來(lái)從默認(rèn)段以外的段中取得數(shù)據(jù);來(lái)從默認(rèn)段以外的段中取得數(shù)據(jù); 例例 MOV DHMOV DH,ESES:ARRAYSIARRAYSI關(guān)于關(guān)于默認(rèn)段默認(rèn)段: 指定寄存器指定寄存器BXBX、SISI或或DIDI,默認(rèn)操作數(shù)存放在數(shù),默認(rèn)操作數(shù)存放在數(shù)據(jù)段據(jù)段DSDS中;中; (DSDS:BXBX,SISI,DIDI) 指定寄存器指定寄存器BPBP,默認(rèn)操作數(shù)存放在數(shù)據(jù)段,默認(rèn)操作數(shù)存放在數(shù)據(jù)段SSSS中;中; (SSSS:BPBP) 寄存器相對(duì)尋址方式寄存器相對(duì)尋址方式基址變址尋址方式基址變址尋址方式1 1含義:含義: 操作數(shù)的操作數(shù)的有效地址有效地址是一

12、個(gè)是一個(gè)基址寄存器基址寄存器(BXBX、BPBP)的內(nèi))的內(nèi)容與一個(gè)容與一個(gè)變址寄存器變址寄存器(SISI、DIDI)的)的內(nèi)容之和內(nèi)容之和。2 2特點(diǎn):特點(diǎn):使用的使用的寄存器寄存器:基址寄存器:基址寄存器BXBX、BPBP,變址寄存器,變址寄存器SISI、DI DI 操作數(shù)的操作數(shù)的物理地址物理地址 1616DS DS BX BX SI /DISI /DI 或或 1616SS SS BP BP SI /DISI /DI3 3注意:注意: 寄存器寄存器SISI和和DIDI、BPBP和和BXBX不能同時(shí)出現(xiàn)在不能同時(shí)出現(xiàn)在 中。中?;纷冎穼ぶ贩绞交纷冎穼ぶ贩绞嚼?MOV AXMOV AX

13、, BXBX SISI ; ;或:或:MOV BXMOV BX,BXBXSISI解:設(shè):解:設(shè):DSDS3000H3000H,SISI0500H0500H,BXBX1200H1200H, (31700H)=0ABCDH (31700H)=0ABCDH 則:物理地址則:物理地址 1616DS DS SI SI BX BX 30000H 30000H 0500H 0500H 1200H1200H 31700H31700H指令執(zhí)行后,AX0ABCDH相對(duì)基址變址尋址方式相對(duì)基址變址尋址方式 1 1含義:含義: 操作數(shù)的操作數(shù)的有效地址有效地址是一個(gè)是一個(gè)基址寄存器基址寄存器(BXBX、BPBP)和和

14、一個(gè)一個(gè)變址寄存器變址寄存器(SISI、DIDI)的內(nèi)容,再加上)的內(nèi)容,再加上8 8位或位或1616位位位移量位移量之之和和。即。即 EA= BXEA= BX或或 BP + SIBP + SI或或DI +8DI +8或或1616位移量位移量2 2特點(diǎn):特點(diǎn):使用的使用的寄存器寄存器:基址寄存器:基址寄存器BXBX、BPBP,變址寄存器,變址寄存器SISI、DI DI 操作數(shù)的操作數(shù)的物理地址物理地址 1616DS DS BX BX SI /DI SI /DI 8/168/16位位移量位位移量 或或 1616SS SS BP BP SI /DI SI /DI 8/168/16位位移量位位移量3

15、 3注意:注意:存器存器SISI和和DIDI、BPBP和和BXBX不能同時(shí)出現(xiàn)在不能同時(shí)出現(xiàn)在 中中相對(duì)基址變址尋址方式相對(duì)基址變址尋址方式例例 MOV AXMOV AX, MASKBXMASKBX SISI ; ;或:或:MOV BXMOV BX,MASKMASKBXBXSISI解:設(shè):解:設(shè):DSDS3000H3000H,SISI0300H0300H,BXBX1500H1500H,MASK=0200H, (21A00H)=26BFHMASK=0200H, (21A00H)=26BFH 則:物理地址則:物理地址 1616DS DS SI SI BX + MASKBX + MASK 20000

16、H 20000H 0300H 0300H 1500H + 0200H1500H + 0200H 21A00H21A00H指令執(zhí)行后,指令執(zhí)行后,AXAX26BFH26BFH尋址方式總結(jié)尋址方式總結(jié) 尋址方式總結(jié):尋址方式總結(jié): 帶方括號(hào)帶方括號(hào)的地址表達(dá)式必須遵循下列規(guī)則規(guī)則:1.1.立即數(shù)立即數(shù)可以出現(xiàn)在方括號(hào)內(nèi),表示直接地址,如2000H。2.2.只有只有BXBX、BPBP、SISI、DIDI這四個(gè)寄存器可以出現(xiàn)在 內(nèi),它們可以單獨(dú)出現(xiàn),也可以相加,或與常數(shù)相加, 但:但:BX和BP寄存器、SI和DI寄存器不允許不允許出現(xiàn)在同一個(gè)同一個(gè) 內(nèi)內(nèi)。 3.3.方括號(hào)方括號(hào)表示相加相加,下面幾種寫

17、法等價(jià): 6BXSI; BX+6SI; BX+SI+6 尋址方式總結(jié)尋址方式總結(jié)4 4不同寄存器對(duì)應(yīng)不同寄存器對(duì)應(yīng)不同的隱含段基址不同的隱含段基址: SSSS:BPBP; DSDS:BXBX,SISI,DIDI;物理地址物理地址1616相應(yīng)段基址相應(yīng)段基址 EAEA EA EA BX / BP BX / BP SI / DI SI / DI DISP DISP (注:(注:可以是單一寄存器、兩個(gè)寄存器組合、和可以是單一寄存器、兩個(gè)寄存器組合、和DISPDISP組合;組合;DISPDISP也可以為也可以為0 0)可用可用段超越前綴段超越前綴修改段基址。修改段基址。其它其它1 1隱含尋址:隱含尋址

18、: 指令中指令中不指明操作數(shù)不指明操作數(shù),但有,但有隱含規(guī)定隱含規(guī)定的尋址方式。的尋址方式。 如:指令如:指令DAA DAA ;對(duì)寄存器;對(duì)寄存器ALAL中的數(shù)據(jù)中的數(shù)據(jù)進(jìn)行進(jìn)行十進(jìn)制數(shù)十進(jìn)制數(shù)調(diào)整調(diào)整,結(jié)果仍保留在,結(jié)果仍保留在ALAL中。中。2 2I/OI/O端口尋址:端口尋址: 80868086有直接端口和間接端口有直接端口和間接端口兩種尋址方式兩種尋址方式。 直接端口尋址方式直接端口尋址方式:指令直接提供端口地址:指令直接提供端口地址8 8位立即數(shù)位立即數(shù)???。可訪問(wèn)端口訪問(wèn)端口00FFH00FFH,即,即256256個(gè)端口。個(gè)端口。 例如,例如, IN ALIN AL, 63H 63

19、H ;表示將瑞口;表示將瑞口63H63H中中的內(nèi)容的內(nèi)容送進(jìn)送進(jìn)ALAL寄存器寄存器 其它其它 間接端口尋址方式間接端口尋址方式:端口地址由寄存器:端口地址由寄存器DXDX提供,提供,端口號(hào)為端口號(hào)為0000FFFFH0000FFFFH。 例如,例如, MOVMOVDXDX,213H213H;DX=DX=口地址號(hào)口地址號(hào)213H213H IN AL IN AL,DX DX ;ALAL端口端口213H213H中的內(nèi)容中的內(nèi)容3 3一條指令有多種尋址方式:一條指令有多種尋址方式: 源操作數(shù)和目的操作數(shù)同樣適用上述尋址方法。源操作數(shù)和目的操作數(shù)同樣適用上述尋址方法。例例 MOV BXMOV BX,

20、ALAL解:解: 設(shè):設(shè):BXBX3600H3600H,DSDS1000H1000H,AL=05HAL=05H 則:目的操作數(shù)的物理地址則:目的操作數(shù)的物理地址1616DS DS BX BX 10000H10000H十十3600H 3600H 13600H13600H 指令執(zhí)行結(jié)果為指令執(zhí)行結(jié)果為(13600H)(13600H)05H05H。目的和特點(diǎn)目的和特點(diǎn)指令代碼的編制指令代碼的編制其中,第一個(gè)字節(jié):其中,第一個(gè)字節(jié):高高6 6位位是操作碼是操作碼100010100010;W W位位說(shuō)明傳遞數(shù)據(jù)的類型是字(說(shuō)明傳遞數(shù)據(jù)的類型是字(W Wl l)還是字節(jié)()還是字節(jié)(W W0 0););D

21、 D位位標(biāo)明數(shù)據(jù)傳送的標(biāo)明數(shù)據(jù)傳送的方向方向:D D0 0,數(shù)據(jù)從寄存器傳,數(shù)據(jù)從寄存器傳出出; D D1 1,數(shù)據(jù)傳至寄存器;,數(shù)據(jù)傳至寄存器;1 1編碼格式說(shuō)明編碼格式說(shuō)明(MOVMOV指令為例)指令為例): 15876543210100010DWMODREGR/M操作碼指令代碼的編制指令代碼的編制第二個(gè)字節(jié):第二個(gè)字節(jié):REGREG字段字段:寄存器號(hào),用:寄存器號(hào),用3 3位編碼尋址位編碼尋址8 8種不同的寄種不同的寄存器,再根據(jù)第一字節(jié)中存器,再根據(jù)第一字節(jié)中W W位,選擇位,選擇8 8位或位或1616位寄存位寄存器。如表器。如表3-l3-l所示。所示。( (對(duì)段寄存器,對(duì)段寄存器,R

22、EGREG字段占字段占2 2位位) ) 例如:例如: REGREG010010,W W1 1時(shí)表示尋址時(shí)表示尋址DXDX寄存器;寄存器; REGREG010010,W W0 0時(shí)尋址時(shí)尋址DLDL寄存器。寄存器。指令代碼的編制指令代碼的編制MODMOD字段字段和和R/MR/M字段字段:MOVMOV指令的兩個(gè)操作數(shù)中有指令的兩個(gè)操作數(shù)中有一一個(gè)必為寄存器個(gè)必為寄存器,另一個(gè)操作數(shù)可能是,另一個(gè)操作數(shù)可能是寄存器寄存器,也可,也可能是能是存儲(chǔ)器單元存儲(chǔ)器單元,由由指令代碼的第二個(gè)字節(jié)個(gè)的指令代碼的第二個(gè)字節(jié)個(gè)的MODMOD和和R/MR/M字段指定字段指定。如表如表3-23-2所示。(所示。( 24

23、24種不同的編碼格式,種不同的編碼格式,D8D8表示表示8 8位位位移量,位移量,D16D16為為1616位位移量)位位移量) 對(duì)指令進(jìn)行編碼時(shí),對(duì)指令進(jìn)行編碼時(shí),若包含若包含8 8位位移量,則在編碼后增加一個(gè)宇節(jié)存放位位移量,則在編碼后增加一個(gè)宇節(jié)存放位移量位移量disp-Ldisp-L;若包含;若包含1616位的位移量,則增加位的位移量,則增加2 2個(gè)個(gè)字節(jié)存放位移量:第字節(jié)存放位移量:第3 3個(gè)字節(jié)存放位移量的低字節(jié)個(gè)字節(jié)存放位移量的低字節(jié)disp-Ldisp-L,第,第4 4個(gè)字節(jié)存放位移量高字節(jié)個(gè)字節(jié)存放位移量高字節(jié)disp-Hdisp-H。指令代碼的編制指令代碼的編制2 2寄存器間

24、傳送指令的編碼:寄存器間傳送指令的編碼: 例例 求指令求指令MOV SPMOV SP,BXBX的機(jī)器碼的機(jī)器碼 解:解:指令的功能指令的功能是將是將BXBX寄存器的內(nèi)容送到寄存器的內(nèi)容送到SPSP寄存器寄存器中。中。 從從附錄附錄B B可知,該指令的可知,該指令的操作碼操作碼為為1000l01000l0;傳送的;傳送的是字?jǐn)?shù)據(jù),所以是字?jǐn)?shù)據(jù),所以w w1 1; REGREG字段:字段:選擇將選擇將SPSP,則,則REGREG字段編碼字段編碼100100; D D位位=1=1,表示數(shù)據(jù)傳至所選的寄存器,表示數(shù)據(jù)傳至所選的寄存器(SP)(SP); MODMOD1111, ,因另一個(gè)操作數(shù)因另一個(gè)操

25、作數(shù)BXBX也是寄存器。也是寄存器。 從表從表3-23-2查得查得R/MR/M011011。根據(jù)。根據(jù)W Wl l及寄存器名稱為及寄存器名稱為BXBX,求得指令編碼。,求得指令編碼。指令代碼的編制指令代碼的編制3 3寄存器與存儲(chǔ)器間傳送指令的編碼寄存器與存儲(chǔ)器間傳送指令的編碼 例:求指令例:求指令MOV CLMOV CL, BXBXl234Hl234H的機(jī)器碼。的機(jī)器碼。 解:功能:將有效地址為解:功能:將有效地址為(BX(BX1234H)1234H)存儲(chǔ)單元中的存儲(chǔ)單元中的數(shù)據(jù)字節(jié)傳送到數(shù)據(jù)字節(jié)傳送到CLCL寄存器中;寄存器中; 指令的編碼如圖指令的編碼如圖3-103-10中所示。中所示。

26、第第1 1、2 2字節(jié)可通過(guò)查表得到;字節(jié)可通過(guò)查表得到; 第第3 3字節(jié)存放字節(jié)存放l6l6位位移量的低字節(jié)位位移量的低字節(jié)34H34H; 第第4 4字節(jié)存放高字節(jié)字節(jié)存放高字節(jié)12H12H。 所以該指令的編碼為所以該指令的編碼為8A 8F 34 12H8A 8F 34 12H。指令代碼的編制指令代碼的編制4 4立即數(shù)尋址指令的編碼立即數(shù)尋址指令的編碼 立即數(shù)尋址的指令:操作碼立即數(shù)尋址的指令:操作碼 1 12 2個(gè)字節(jié)用于存?zhèn)€字節(jié)用于存放立即數(shù)據(jù)。放立即數(shù)據(jù)。 例例 求指令求指令MOV BXMOV BX十十2100H2100H,0FA50H 0FA50H 的機(jī)器碼。的機(jī)器碼。 解:指令的功

27、能:將解:指令的功能:將1616位立即數(shù)位立即數(shù)FA 50HFA 50H送到有效地址送到有效地址為為(BX(BX2100H)2100H)的字存儲(chǔ)單元中;的字存儲(chǔ)單元中; 指令編碼如圖指令編碼如圖3-113-11中所示;中所示; 其中:低字節(jié)其中:低字節(jié)50H50H送列送列BXBX2100H2100H單元,高字單元,高字節(jié)節(jié)FAHFAH送到送到(BX(BX2101H)2101H)單元;單元; 指令中不但有指令中不但有1616位立即數(shù),還有位立即數(shù),還有1616位位移量;位位移量;該指令的該指令的6 6字節(jié)編碼為:字節(jié)編碼為:C7 87 00 21 50 FAC7 87 00 21 50 FA。指

28、令代碼的編制指令代碼的編制5 5包含段寄存器的指令的編碼包含段寄存器的指令的編碼 含有段寄存器的指令,寄存器字段含有段寄存器的指令,寄存器字段REGREG占有占有2 2位,位,從表從表3-13-1可得,相應(yīng)的編碼為:可得,相應(yīng)的編碼為:CSCS0101,DSDS1111,ES=00ES=00,SSSSl0l0。 例例 求指今求指今MOV DSMOV DS,AX AX 的機(jī)器碼。的機(jī)器碼。 解:指令功能:將解:指令功能:將AXAX寄存器的內(nèi)容傳送到數(shù)據(jù)段寄存器的內(nèi)容傳送到數(shù)據(jù)段寄存器寄存器DSDS; 從附錄從附錄B B中查到該指令的編碼格式為:中查到該指令的編碼格式為: 10001110 MOD

29、 0 REG R/M 10001110 MOD 0 REG R/M ; 段寄存器段寄存器DSDS的編碼為的編碼為1111,即,即REGREG字段字段為為1111;另一個(gè)操作數(shù)也是寄存器,所以另一個(gè)操作數(shù)也是寄存器,所以MODMOD1111,而,而R/MR/M字段字段應(yīng)填上應(yīng)填上AXAX的三位代碼的三位代碼000000; 得到該指令的編碼為:得到該指令的編碼為:8E D8H8E D8H。 指令代碼的編制指令代碼的編制 6 6段超越前綴指令的編碼段超越前綴指令的編碼 該類指令進(jìn)行編碼時(shí),在指令代碼前該類指令進(jìn)行編碼時(shí),在指令代碼前加加一個(gè)一個(gè)8 8位位的的段超越的綴代碼段超越的綴代碼,代碼的,代碼

30、的格式為格式為001001110110,其,其中中位表明段超越寄存器,編碼與上面列出的相位表明段超越寄存器,編碼與上面列出的相同。同。 例例 若指令若指令MOV BXMOV BX,DL DL 的編碼為的編碼為88 17H88 17H,試求指令試求指令MOV CSMOV CS:BXBX,DLDL的代碼。的代碼。 解:該指令的編碼是在不帶段超越前綴的指令解:該指令的編碼是在不帶段超越前綴的指令代代碼碼88 17H88 17H前前,加上加上一個(gè)字節(jié)一個(gè)字節(jié)001001110110。由于段。由于段寄存器寄存器CSCS的代碼為的代碼為0101,所以指令的第,所以指令的第1 1個(gè)字節(jié)的編個(gè)字節(jié)的編碼為碼為

31、0010111000101110,即即 2EH2EH。 可得到該指令的機(jī)器碼為可得到該指令的機(jī)器碼為2E2E 88 17H 88 17H上次課內(nèi)容回顧及問(wèn)題:1.指令系統(tǒng)的尋找方式有哪些?2.哪些尋址方式與存儲(chǔ)單元有關(guān)?3.這些尋址方式哪種較快?4.源操作數(shù)和目標(biāo)操作數(shù)數(shù)據(jù)類型有什么要求?指令編碼部分(自學(xué)),上機(jī)時(shí)總結(jié)。分類分類分為以下六類:分為以下六類: 數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 邏輯運(yùn)算和移位指令邏輯運(yùn)算和移位指令 字符串處理指令字符串處理指令 控制轉(zhuǎn)移指令控制轉(zhuǎn)移指令 處理器控制指令處理器控制指令注:注:數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令共共1414條;條;除除SAHF

32、SAHF和和POPFPOPF指令外,對(duì)標(biāo)指令外,對(duì)標(biāo)志位均沒(méi)有影志位均沒(méi)有影響。響。數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令MOVPUSHPOPXCHGXLAT字節(jié)或字的傳送入棧指令出棧指令交換字或字節(jié)表轉(zhuǎn)換INOUT輸入輸出LEALDSLES裝入有效地址裝入數(shù)據(jù)段寄存器裝入堆棧段寄存器LAHFSAHFPUSHFPOPF標(biāo)志寄存器低字節(jié)裝入AHAH內(nèi)容裝入標(biāo)志寄存器低字節(jié)標(biāo)志寄存器入棧指令出棧,并送入標(biāo)志寄存器重點(diǎn)掌握的指令:MOV、PUSH、POP、XCHG、XLAT、IN、OUT、LEA(General Purpose Data (General Purpose Data Tranfer)Tranfer)

33、數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 MOV MOV傳送指令傳送指令(Move)(Move) 指令格式:指令格式:MOV 目的,源指令功能:指令功能:實(shí)現(xiàn)CPU的內(nèi)部寄存器間或寄存器與存儲(chǔ)器間的數(shù)據(jù)傳送。例: MOV AX, 0FF00H; MOV DI, AX; MOV CX, 1000H; MOV BL, 40 MOV WORD PTR SI, 01H; MOV AL, BL;數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令注意:注意:指令中至少要有項(xiàng)明確說(shuō)明傳送的是字節(jié)還是字;IPIP寄存器不能用作源操作數(shù)或目的操作數(shù);立即數(shù)和CSCS寄存器不能用作目的操作數(shù);除了源操作數(shù)為立即數(shù)的情況外,兩個(gè)操作數(shù)中必有一個(gè)是寄存器,但

34、不能都是段寄存器;這就是說(shuō),MOV指令不能在兩個(gè)存儲(chǔ)單元之間直接傳送數(shù)據(jù),也不能在兩個(gè)段寄存器之間直接傳送數(shù)據(jù)。所謂所謂“傳送傳送”,實(shí)值是,實(shí)值是復(fù)制復(fù)制,把的內(nèi)容復(fù)制到,把的內(nèi)容復(fù)制到目的操作數(shù),源操作數(shù)內(nèi)容不變。內(nèi)容不變。目的操作數(shù)和和源操作數(shù)不能不能同時(shí)為內(nèi)存單元。同時(shí)為內(nèi)存單元。目的操作數(shù)和和源操作數(shù)不能不能同時(shí)為段寄存器。同時(shí)為段寄存器。目的操作數(shù)為段寄存器時(shí),為段寄存器時(shí),源操作數(shù)不能為不能為立即數(shù)。立即數(shù)。對(duì)段寄存器賦值必須通過(guò)對(duì)段寄存器賦值必須通過(guò)通用寄存器通用寄存器作中介。作中介。數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令這些注意事項(xiàng)基本適合所有指令數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令CS一般不為目標(biāo)操

35、作數(shù)數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令通常,數(shù)據(jù)通常存放在數(shù)據(jù)段中。例如,某個(gè)程序的數(shù)據(jù)段: DATADATASEGMENTSEGMENT ;數(shù)據(jù)段開(kāi)始 AREA1DB 14H,3BH ;定義字節(jié)變量 AREA2 DB 3 DUP(0) ;復(fù)制操作 ARRAYDW 3l00H,01A6H ;定義字變量 STRINGDB GOOD DATADATA ENDSENDS ;數(shù)據(jù)段結(jié)束 匯編后,DATA將被賦予一個(gè)具體的段地址。各變量將自偏移地址0000H開(kāi)始依次存放,各符號(hào)地址等于它們?cè)跀?shù)據(jù)段中的偏移量。AREA1的偏移地址為0000H,AREA2的偏移地址為0002H,ARRAY的偏移地址為0005H,ST

36、RING的偏移地址為0009H。數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令數(shù)據(jù)段開(kāi)始數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 PUSHPUSH進(jìn)棧指令進(jìn)棧指令 指令格式:PUSH 源 指令功能:數(shù)據(jù)入堆棧 工作過(guò)程:工作過(guò)程: SPSP-2;(SP+1,SP)源 源操作數(shù)要求:可以是16位通用寄存器、段寄存器、存儲(chǔ)器中的數(shù)據(jù)字,但不能是立即數(shù)。 最后一項(xiàng)高地址棧底(SP)壓入彈出棧頂(SS)最大容量64KSP總是指向偶地址單元段址POPPOP出棧指令出棧指令 指令格式:POP 目的 指令功能:數(shù)據(jù)出堆棧 工作過(guò)程:工作過(guò)程: 目的 (SP+1,SP) ; SPSP2; 目的操作數(shù)要求:目的操作數(shù)要求:可

37、以是16位通用寄存器、段寄存器、存儲(chǔ)單元,但CS不能作目的操作數(shù)。 最后一項(xiàng)高地址棧底(SP)壓入彈出棧頂(SS)最大容量64KSP總是指向偶地址單元段址數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 指令格式:指令格式:XCHG 目的, 源 指令功能:指令功能:源操作數(shù)、目的操作數(shù)數(shù)據(jù)交換。 操作數(shù)要求:操作數(shù)要求:交換可以在寄存器之間、寄存器與存儲(chǔ)器之間進(jìn)行;段寄存器不能作為操作數(shù);不能直接交換兩個(gè)存儲(chǔ)單元中的內(nèi)容。 例例 設(shè)AX=2000H,DS=3000H,BX=1800H,(3lA00H)=1995H。 則執(zhí)行指令XCHG AX,BX+200H后,結(jié)果如何? 解:把內(nèi)存中的一個(gè)字與

38、AX中的內(nèi)容進(jìn)行交換。 源操作數(shù)的物理地址3000H10H十1800H十200H31A00H, 指令執(zhí)行后:AX1995H,(3lA00H)2000H數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令指令格式:XLAT 轉(zhuǎn)換表 或:XLAT指令功能: 使使累加器累加器(ALAL)中的一個(gè)值變換為中的一個(gè)值變換為內(nèi)存表格內(nèi)存表格中的某中的某一個(gè)值,一般用來(lái)實(shí)現(xiàn)編碼制的轉(zhuǎn)換,即查表功能。一個(gè)值,一般用來(lái)實(shí)現(xiàn)編碼制的轉(zhuǎn)換,即查表功能。XLATXLAT指令使用步驟:指令使用步驟:使用之前必須先建立一個(gè)使用之前必須先建立一個(gè)表格表格,表格中的內(nèi)容是所需,表格中的內(nèi)容是所需要轉(zhuǎn)換的代碼;要轉(zhuǎn)換的代碼;將轉(zhuǎn)換表的起始地址裝入將轉(zhuǎn)換表

39、的起始地址裝入BXBX寄存器寄存器;欲查的某項(xiàng)與表頭地址的位移量欲查的某項(xiàng)與表頭地址的位移量ALAL,即表格最多包,即表格最多包含含256256個(gè)字節(jié);個(gè)字節(jié);執(zhí)行執(zhí)行XLATXLAT指令后,根據(jù)位移量從表中查到指令后,根據(jù)位移量從表中查到轉(zhuǎn)換后的代轉(zhuǎn)換后的代碼值碼值A(chǔ)LAL寄存器寄存器中。中。數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令例例 若十進(jìn)制數(shù)字若十進(jìn)制數(shù)字0 09 9的的LEDLED七段碼對(duì)照表如下表七段碼對(duì)照表如下表所示,試用所示,試用XLATXLAT指令求數(shù)字指令求數(shù)字5 5的七段碼值。的七段碼值。 解:程序如下:解:程序如下: TABEL DB 40HTABEL DB 40H,79H79H,24

40、H24H,30H30H,19H 19H ;建表;建表, ,表格起始地址為表格起始地址為TABLETABLE DB 12H DB 12H,02H02H,78H78H,00H00H,18H18H ;七段碼存于對(duì);七段碼存于對(duì)TABLETABLE的的 ;位移量為;位移量為 0 09 9的單元位移的單元位移 MOV MOV AL AL,5 5 ;ALAL數(shù)字?jǐn)?shù)字5 5的位移量的位移量 MOVMOV BX BX,OFFSET TABLEOFFSET TABLE ;BXBX表格首地址表格首地址 XLAT TABLEXLAT TABLE ;查表得:;查表得:AL=12HAL=12H十進(jìn)制數(shù)字七段顯示碼十進(jìn)制

41、數(shù)字七段顯示碼040H512H179H602H224H778H330H800H419H918HXCHG BX, BP+SIXCHG BX, BP+SIXCHG AL, BHXCHG AL, BHPOP CSPOP CSPUSH 1234HPUSH 1234HMOV SI, 2000HMOV SI, 2000HMOV CS, BXMOV CS, BXMOV 2000H, AXMOV 2000H, AX數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令MOV MOV BXBX, 20H, 20H在在MASM5.0MASM5.0下編譯,報(bào)錯(cuò),必須指明數(shù)據(jù)大小,下編譯,報(bào)錯(cuò),必須指明數(shù)據(jù)大小,8 8位位/16/16位。位。在在

42、MASM6.11MASM6.11下編譯,無(wú)錯(cuò),匯編程序編譯時(shí)自動(dòng)下編譯,無(wú)錯(cuò),匯編程序編譯時(shí)自動(dòng)識(shí)別為識(shí)別為 MOV WORD PTR BX, 20HMOV WORD PTR BX, 20HMOV BX, 200HMOV BX, 200H在在MASM5.0MASM5.0和和MASM6.11MASM6.11下編譯,均無(wú)錯(cuò),匯編程下編譯,均無(wú)錯(cuò),匯編程序編譯時(shí)自動(dòng)識(shí)別為序編譯時(shí)自動(dòng)識(shí)別為MOV WORD PTR BX, 200HMOV WORD PTR BX, 200H數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令I(lǐng)NIN指令指令:指定端口中的數(shù)據(jù)累加器OUTOUT指令:指令:累加器中的數(shù)據(jù)累加

43、器中的數(shù)據(jù)指定端口指定端口 IN IN輸入指令輸入指令(Input)(Input) 指令格式:指令格式: IN AL IN AL,端口地址,端口地址 ;端口地址;端口地址(00FFH)(00FFH)直接包含直接包含在在ININ指令里,指令里, 或或 IN AXIN AX,端口地址,端口地址 ;共允許尋址;共允許尋址256256個(gè)端口。個(gè)端口。 直接尋址直接尋址 IN AL IN AL,DX DX ;端口地址;端口地址0FFH 0FFH 時(shí),先將端口號(hào)時(shí),先將端口號(hào)送送DXDX寄存器,再執(zhí)行輸入操作。寄存器,再執(zhí)行輸入操作。 或或 IN AXIN AX,DX DX ;共允許尋址;共允許尋址64K

44、64K個(gè)端口。個(gè)端口。 間接尋址間接尋址指令功能:指令功能: 從從8 8位位端口讀入一個(gè)端口讀入一個(gè)字節(jié)字節(jié)到到ALAL寄存器寄存器,或從,或從1616位位端口端口讀一個(gè)讀一個(gè)字字到到AXAX寄存器寄存器。數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令注意:注意: 1616位端口位端口由由兩個(gè)兩個(gè)地址連續(xù)的地址連續(xù)的8 8位端口組成位端口組成。 1616位端口輸入位端口輸入:先先將給定端口中的字節(jié)將給定端口中的字節(jié)送進(jìn)送進(jìn)ALAL;再把端口再把端口地址加地址加1 1,然后將該端口中的字節(jié),然后將該端口中的字節(jié)讀入讀入AHAH。 例例 IN ALIN AL,0F1H0F1H;ALAL從從 F1H F1H 端口讀入一個(gè)

45、字節(jié)端口讀入一個(gè)字節(jié) IN AXIN AX,80H80H ;ALAL80H 80H 口的內(nèi)容,口的內(nèi)容,AHAH81H 81H 口的口的內(nèi)容內(nèi)容 MOV DXMOV DX,310H310H;端口地址;端口地址 310H 310H 先送入先送入DXDX中中 IN ALIN AL,DXDX ;ALAL310H 310H 端口的內(nèi)容端口的內(nèi)容 數(shù)據(jù)傳送指令指令 OUT OUT輸出指令輸出指令(Output)(Output)指令格式:指令格式: OUT OUT 端口地址,端口地址,AL AL ;端口地址;端口地址(00(00FFH)FFH)直接直接包含在包含在 IN IN 指令里,指令里, 或或 OU

46、T OUT 端口地址,端口地址,AX AX ;共允許尋址;共允許尋址256256個(gè)端口。個(gè)端口。 直接尋址直接尋址 OUT DX OUT DX,AL AL ;端口地址;端口地址0FFH 0FFH 時(shí),先將端時(shí),先將端口號(hào)送口號(hào)送DXDX寄存器,再執(zhí)行輸出操作。寄存器,再執(zhí)行輸出操作。 或或 OUT DXOUT DX,AX AX ;當(dāng)共允許尋址;當(dāng)共允許尋址 64K 64K 個(gè)端口。個(gè)端口。 間接尋址間接尋址指令功能:指令功能: 將將ALAL中的中的一個(gè)字節(jié)一個(gè)字節(jié)寫到一個(gè)寫到一個(gè)8 8位端口位端口,或把,或把AXAX中的中的一一個(gè)字個(gè)字寫到一個(gè)寫到一個(gè)1616位端口位端口。注意:注意: 對(duì)對(duì)1

47、616位端口進(jìn)行輸出操作時(shí),是對(duì)兩個(gè)連續(xù)的位端口進(jìn)行輸出操作時(shí),是對(duì)兩個(gè)連續(xù)的8 8位端位端口進(jìn)行輸出操作。口進(jìn)行輸出操作。數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令例例 OUT 85HOUT 85H,ALAL;85H 85H 端口端口ALAL內(nèi)容內(nèi)容 MOV DXMOV DX,0FF4H0FF4H;端口地址;端口地址DX = 0FF4HDX = 0FF4H OUT DX OUT DX,ALAL ;0FF4H 0FF4H 端口端口ALAL內(nèi)容內(nèi)容 MOV DXMOV DX,300H300H;DXDX指向指向300H300H OUT DX OUT DX,AXAX;300H 300H 端口端口 AL AL內(nèi)容,內(nèi)容

48、,301H301H端口端口AHAH內(nèi)容內(nèi)容數(shù)據(jù)傳送指令共三條指令:傳送共三條指令:傳送地址碼地址碼???。可傳送傳送操作數(shù)的操作數(shù)的段地址段地址和和偏移偏移地址地址。 LEA LEA 取有效地址指令取有效地址指令(Load Effective Address)(Load Effective Address) 指令格式:指令格式:LEA LEA 目的,源目的,源指令功能:指令功能:源操作數(shù)源操作數(shù)地址的偏移量地址的偏移量目的操作數(shù)所在目的操作數(shù)所在寄存器寄存器 要要 求:求: 源操作數(shù):源操作數(shù):必須是必須是存儲(chǔ)單元存儲(chǔ)單元; 目的操作數(shù):目的操作數(shù):必須是一個(gè)除必須是一個(gè)除段寄存器之外段寄存器之

49、外的的1616位寄存器位寄存器。注注 意:意: 與與MOVMOV指令的區(qū)別。指令的區(qū)別。 數(shù)據(jù)傳送指令例例 假設(shè)假設(shè)SISI1000H1000H,DSDS5000H5000H,(51000H)(51000H)1234H1234H LEA BXLEA BX,SISI;執(zhí)行完該指令后,;執(zhí)行完該指令后,BXBXl000Hl000H MOV BXMOV BX,SISI;執(zhí)行完該指令后,;執(zhí)行完該指令后,BXBX1234H1234H例例 LEA BXLEA BX,TABLETABLE ;可用;可用MOVMOV指令指令代替代替LEALEA指令指令 MOV BXMOV BX,OFFSET TABLEOFF

50、SET TABLE;兩條指令等價(jià)。;兩條指令等價(jià)。 例例 某數(shù)組含某數(shù)組含2020個(gè)元素,每個(gè)元素占一個(gè)字節(jié),符號(hào)為:個(gè)元素,每個(gè)元素占一個(gè)字節(jié),符號(hào)為:0 01919。設(shè)。設(shè)DIDI指向數(shù)組指向數(shù)組 開(kāi)頭處,把序號(hào)為開(kāi)頭處,把序號(hào)為6 6的元素的偏的元素的偏移地址送到移地址送到BXBX中,用什么指令來(lái)實(shí)現(xiàn)?中,用什么指令來(lái)實(shí)現(xiàn)? 解:解: LEA BXLEA BX,6DI6DI ;只能用;只能用LEALEA實(shí)現(xiàn),不能用實(shí)現(xiàn),不能用MOVMOV數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令指令格式:指令格式:LDSLDS目的,源目的,源指令功能:源操作數(shù)指定的存儲(chǔ)單元中的指令功能:源操作數(shù)指定的存儲(chǔ)單元中的4 4字

51、節(jié)字節(jié)地址指針地址指針 一對(duì)一對(duì)目的寄存器目的寄存器。其中:其中:前兩個(gè)字節(jié)前兩個(gè)字節(jié)( (偏移地址偏移地址) ) 指定的目的寄存器;指定的目的寄存器;( (常用常用SISI寄存器寄存器) ) 后兩個(gè)字節(jié)后兩個(gè)字節(jié)( (段地址段地址) ) DS DS寄存器。寄存器。操作數(shù)要求:操作數(shù)要求:源操作數(shù):源操作數(shù):必須是必須是存儲(chǔ)單元存儲(chǔ)單元( (該單元開(kāi)始的連續(xù)該單元開(kāi)始的連續(xù)4 4個(gè)字節(jié)存?zhèn)€字節(jié)存放一個(gè)變量的地址指針?lè)乓粋€(gè)變量的地址指針) );目的操作數(shù):目的操作數(shù):必須是必須是1616位寄存器位寄存器,常用,常用SISI寄存器,但寄存器,但不能不能用用段寄存器。段寄存器。例例 設(shè):設(shè):DSDS

52、1200H1200H,(12450H)(12450H)0F346H0F346H,(12452H)(12452H)0A90H0A90H。 執(zhí)行指令執(zhí)行指令LDS SILDS SI,450H 450H 后,結(jié)果如何?后,結(jié)果如何?解:解:SISI0F346H0F346H,DSDS0A90H0A90H數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 LES LES 將雙字指針?biāo)偷郊拇嫫骱蛯㈦p字指針?biāo)偷郊拇嫫骱虴SES指令指令(Load (Load Pointer using ES)Pointer using ES) 指令格式:指令格式:LESLES 目的,源目的,源 指令功能:源操作數(shù)指定的存儲(chǔ)單元中的指令功能

53、:源操作數(shù)指定的存儲(chǔ)單元中的4 4字節(jié)字節(jié)地址地址指針指針 一對(duì)一對(duì)目的寄存器目的寄存器。 其中:其中:前兩個(gè)字節(jié)前兩個(gè)字節(jié)( (偏移地址偏移地址) )指定的目的寄存器;指定的目的寄存器;( (常用常用DIDI寄存器寄存器) )后兩個(gè)字節(jié)后兩個(gè)字節(jié)( (段地址段地址) ) ES ES寄存器。寄存器。 例例 設(shè):設(shè):DSDS0100H0100H, BXBX0020H0020H, (01020H)(01020H)0300H0300H, (01022H)(01022H)0500H0500H。 執(zhí)行指令執(zhí)行指令LES DILES DI,BX BX 后,結(jié)果如何?后,結(jié)果如何?解:解:DIDI0300H

54、0300H,ESES0500H0500H(Flag Transfers)(Flag Transfers)數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令15 11 10 9 8 7 6 5 4 3 2 1 0 AHD7D6D4D2D0數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 LAHF LAHF 標(biāo)志送到標(biāo)志送到AHAH指令指令(Load AH from Flag)(Load AH from Flag) 指令格式:指令格式: LAHFLAHF 指令功能:標(biāo)志寄存器指令功能:標(biāo)志寄存器SFSF、ZFZF、AFAF、PFPF和和CFCF AHAH寄寄存器的位存器的位7 7、6 6、4 4、2 2和和0 0。 注意:注意: 位位5 5、3

55、3、1 1的內(nèi)容的內(nèi)容未定義未定義,是任意值。,是任意值。 執(zhí)行這條指令后,執(zhí)行這條指令后,標(biāo)志位本身標(biāo)志位本身并不受影響。并不受影響。15 11 10 9 8 7 6 5 4 3 2 1 0 AHD7D6D4D2D0數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令 SAHF AH SAHF AH送標(biāo)志寄存器送標(biāo)志寄存器(Store AH into Flags)(Store AH into Flags) 指令格式:指令格式:SAHFSAHF 指令功能:指令功能: AHAH內(nèi)容內(nèi)容 標(biāo)志寄存器標(biāo)志寄存器。 注意:注意: 位位5 5、3 3、1 1的內(nèi)容的內(nèi)容未定義未定義,是任意值。,是任意值。 執(zhí)行這條指令后,執(zhí)行這條

56、指令后,高位標(biāo)志高位標(biāo)志并不受影響。并不受影響。 15 11 10 9 8 7 6 5 4 3 2 1 0 AHD7D6D4D2D0數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令PUSHFPUSHF標(biāo)志入棧指令標(biāo)志入棧指令(Push Flag onto Stack)(Push Flag onto Stack) 指令格式:指令格式:PUSHFPUSHF 指令功能:整個(gè)指令功能:整個(gè)標(biāo)志寄存器的內(nèi)容標(biāo)志寄存器的內(nèi)容 堆棧堆棧;修改修改堆堆棧指針,使棧指針,使SPSPSPSP2; 2; 指令執(zhí)行后指令執(zhí)行后對(duì)標(biāo)志位無(wú)影響對(duì)標(biāo)志位無(wú)影響。POPFPOPF標(biāo)志出棧指令標(biāo)志出棧指令(Pop Flag off Stack)(Po

57、p Flag off Stack) 指令格式:指令格式:POPFPOPF 指令功能:堆棧指針指令功能:堆棧指針SPSP所指的一個(gè)字所指的一個(gè)字 標(biāo)志寄存器標(biāo)志寄存器PSWPSW;修改修改堆棧指針,使堆棧指針,使SPSPSPSP2 2。注意:注意:要要成對(duì)使用成對(duì)使用PUSHFPUSHF和和POPFPOPF,可對(duì)標(biāo)志寄存器進(jìn)行保存和,可對(duì)標(biāo)志寄存器進(jìn)行保存和恢復(fù)?;謴?fù)。常用在:常用在:過(guò)程過(guò)程( (子程序子程序) )調(diào)用,調(diào)用,中斷中斷服務(wù)程序,對(duì)主程序服務(wù)程序,對(duì)主程序的狀態(tài)的狀態(tài)( (即標(biāo)志位即標(biāo)志位) )進(jìn)行保護(hù)。進(jìn)行保護(hù)。也可用來(lái)改變也可用來(lái)改變追蹤標(biāo)志追蹤標(biāo)志TFTF。在。在80868

58、086指令系統(tǒng)中沒(méi)有直接指令系統(tǒng)中沒(méi)有直接改變改變TFTF(D8D8位)的指令。位)的指令。算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算二、算術(shù)運(yùn)算算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令可處理可處理4種種類型的數(shù)類型的數(shù)無(wú)符號(hào)二進(jìn)制整數(shù)無(wú)符號(hào)二進(jìn)制整數(shù)帶符號(hào)二進(jìn)制整數(shù)帶符號(hào)二進(jìn)制整數(shù)指令指令無(wú)符號(hào)壓縮十進(jìn)制整數(shù)無(wú)符號(hào)壓縮十進(jìn)制整數(shù)(Packed Decimal)(Packed Decimal)無(wú)符號(hào)非壓縮十進(jìn)制整數(shù)無(wú)符號(hào)非壓縮十進(jìn)制整數(shù)(Unpacked (Unpacked Decimal)Decimal) 一個(gè)一個(gè)8 8位二進(jìn)制數(shù)可看成位二進(jìn)制數(shù)可看成4 4種種不同類型的數(shù)不同類型的數(shù),所表示的所表示的數(shù)值亦不同

59、數(shù)值亦不同。算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令v數(shù)的表示數(shù)的表示:二進(jìn)制數(shù)二進(jìn)制數(shù):可以是:可以是8 8位或位或1616位,若是帶符號(hào)數(shù),則用補(bǔ)位,若是帶符號(hào)數(shù),則用補(bǔ)碼表示。碼表示。壓縮十進(jìn)制數(shù)壓縮十進(jìn)制數(shù):一個(gè)字節(jié)中存放兩個(gè):一個(gè)字節(jié)中存放兩個(gè)BCDBCD碼十進(jìn)制數(shù)。碼十進(jìn)制數(shù)。非壓縮十進(jìn)制數(shù)非壓縮十進(jìn)制數(shù):個(gè)字節(jié)的低半字節(jié)存放十進(jìn)制數(shù)個(gè)字節(jié)的低半字節(jié)存放十進(jìn)制數(shù),高半字節(jié)為全零。,高半字節(jié)為全零。例如,對(duì)十進(jìn)制數(shù)字例如,對(duì)十進(jìn)制數(shù)字5858:壓縮十進(jìn)制數(shù)壓縮十進(jìn)制數(shù)表示:只需一個(gè)字節(jié),即表示:只需一個(gè)字節(jié),即 0101 1000B0101 1000B;非壓縮十進(jìn)制數(shù)非壓縮十進(jìn)制數(shù)表示:需兩個(gè)字節(jié),

60、即表示:需兩個(gè)字節(jié),即 0000 0101B0000 0101B 和和 0000 1000B0000 1000B。4 4種數(shù)的類型的表示方法如下種數(shù)的類型的表示方法如下: :二進(jìn)制碼(B)十六進(jìn)制(H)無(wú)符號(hào)二進(jìn)制(D)帶符號(hào)二進(jìn)制(D)非壓縮十進(jìn)制壓縮十進(jìn)制0000 0111077+77071000 100189137-119無(wú)效891100 0101C5197-59無(wú)效無(wú)效算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令注意:注意:算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令處理的數(shù)處理的數(shù)都必須是都必須是有效有效的,否則會(huì)導(dǎo)致的,否則會(huì)導(dǎo)致錯(cuò)誤的結(jié)果。錯(cuò)誤的結(jié)果。8086808680888088指令系統(tǒng)提供:指令系統(tǒng)提供:加、減、

溫馨提示

  • 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)論