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

下載本文檔

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

文檔簡介

1、第第4章章 尋址方式與指令系統(tǒng)尋址方式與指令系統(tǒng) 本章主要內(nèi)容本章主要內(nèi)容 (1) 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 (2) 轉(zhuǎn)移地址尋址方式轉(zhuǎn)移地址尋址方式 (3) 8086 指令系統(tǒng)及編程應(yīng)用舉例指令系統(tǒng)及編程應(yīng)用舉例 (4) 指令編碼格式指令編碼格式 4.1 尋址方式尋址方式 4.1.1 8086/8088 的尋址方式的尋址方式 1. 尋址方式概述尋址方式概述 尋址方式尋址方式 定義定義 :指令中如何提供操作數(shù)或操作數(shù)地址的指令中如何提供操作數(shù)或操作數(shù)地址的 方式稱為尋址方式。方式稱為尋址方式。 規(guī)定如何對地址字段作出解釋以找到操作數(shù)規(guī)定如何對地址字段作出解釋以找到操作數(shù) * 程序轉(zhuǎn)移時需提供轉(zhuǎn)

2、移地址,這跟提供操作數(shù)地址在程序轉(zhuǎn)移時需提供轉(zhuǎn)移地址,這跟提供操作數(shù)地址在 方法上沒有本質(zhì)區(qū)別,因此也歸入尋址方式的范疇。方法上沒有本質(zhì)區(qū)別,因此也歸入尋址方式的范疇。 一個指令系統(tǒng)能夠提供哪些尋址方式,能否為一個指令系統(tǒng)能夠提供哪些尋址方式,能否為 編制程序提供方便,這是指令系統(tǒng)設(shè)計(jì)的關(guān)鍵。編制程序提供方便,這是指令系統(tǒng)設(shè)計(jì)的關(guān)鍵。 需要說明的是,在不同的計(jì)算機(jī)系統(tǒng)中,尋址需要說明的是,在不同的計(jì)算機(jī)系統(tǒng)中,尋址 方式的名稱和分類并不統(tǒng)一,但基本可以歸結(jié)方式的名稱和分類并不統(tǒng)一,但基本可以歸結(jié) 為以下幾種方式或它們的變型或組合:為以下幾種方式或它們的變型或組合: 尋址方式的名稱和分類尋址方式

3、的名稱和分類 立即尋址(立即數(shù)尋立即尋址(立即數(shù)尋 址)址) 寄存器尋址寄存器尋址 直接尋址直接尋址 間接尋址間接尋址 變址尋址變址尋址 例如,例如,Z80系統(tǒng):系統(tǒng): 立即尋址立即尋址 ;直接尋址;直接尋址 立即擴(kuò)展尋址;立即擴(kuò)展尋址;零頁尋零頁尋 址址 隱含尋址隱含尋址;相對尋址;相對尋址 寄存器尋址;變址尋址寄存器尋址;變址尋址 寄存器間接尋址;寄存器間接尋址;位尋位尋 址址 兩類尋址方式兩類尋址方式 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 轉(zhuǎn)移地址尋址方式轉(zhuǎn)移地址尋址方式 (重點(diǎn)討論數(shù)據(jù)的尋址方式)(重點(diǎn)討論數(shù)據(jù)的尋址方式) 2. 數(shù)據(jù)尋址方式數(shù)據(jù)尋址方式 (1) 立即尋址立即尋址(Immediat

4、e addressing) 指令中直接給出操作數(shù),操作數(shù)緊跟在操作碼指令中直接給出操作數(shù),操作數(shù)緊跟在操作碼 之后,作為指令的一部分存放在之后,作為指令的一部分存放在代碼段代碼段里,在里,在 取出指令的同時也就取出了操作數(shù),立即有操取出指令的同時也就取出了操作數(shù),立即有操 作數(shù)可用,所以稱之為作數(shù)可用,所以稱之為立即尋址立即尋址。 目的 源 example MOV AL, 80H ; 低地址低地址 存儲器 AX MOV AX, 3064H ; 代 碼 ADD AL, 20H ; 段 ADD AX, 1090H; 高地址高地址 OP 6 4 3 0 立即數(shù)可以為立即數(shù)可以為8位,也可以為位,也可

5、以為16位。如果是位。如果是16 位數(shù),則位數(shù),則“高位字節(jié)存放在高地址中,低位字高位字節(jié)存放在高地址中,低位字 節(jié)存放在低地址中節(jié)存放在低地址中。” 立即尋址方式常用于給寄存器賦值,并且只能立即尋址方式常用于給寄存器賦值,并且只能 用于用于源操作數(shù),而不能用于目的源操作數(shù),而不能用于目的操作數(shù)。操作數(shù)。 下述各條指令源操作數(shù)的尋址方式也都是立即尋址,下述各條指令源操作數(shù)的尋址方式也都是立即尋址, 但這些指令都是錯誤的但這些指令都是錯誤的: MOV AL, 256 ; 256=100H,超過了,超過了AL能存放的數(shù)的范圍能存放的數(shù)的范圍 MOV AX, -32769 ; -32769超過了超過

6、了AX能存放的帶符號數(shù)能存放的帶符號數(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ù)就不能是 段寄存器段寄存器 (2)寄存器尋址()寄存器尋址(Register addressing) 操作數(shù)在寄存器中,指令中指明寄存器號,這操作數(shù)在寄存器中,指令中指明寄存器號,這 種尋址方式叫寄存器尋址。種尋址方式叫寄存器尋址。 對于對于8位操作數(shù),寄存器可以是位操作數(shù),寄存器可以

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

8、位數(shù)不相同 MOV CS, AX ;錯誤。錯誤。CS不能作為目的操作數(shù)不能作為目的操作數(shù) MOV ES, DS ;錯誤。兩個操作數(shù)不能都是段錯誤。兩個操作數(shù)不能都是段 寄存器寄存器 寄存器尋址的特點(diǎn)寄存器尋址的特點(diǎn) (1) 操作數(shù)就在寄存器中操作數(shù)就在寄存器中,不需要訪問存儲器來不需要訪問存儲器來 取得操作數(shù)取得操作數(shù)(指令執(zhí)行時,操作就在(指令執(zhí)行時,操作就在CPU的內(nèi)的內(nèi) 部進(jìn)行),因而執(zhí)行速度快。部進(jìn)行),因而執(zhí)行速度快。 (2)寄存器號比內(nèi)存地址短寄存器號比內(nèi)存地址短 * 在編程中,如有可能,盡量使用這種尋址方式的指令。在編程中,如有可能,盡量使用這種尋址方式的指令。 * 寄存器尋址方

9、式既可用于源操作數(shù),也可用于目的操寄存器尋址方式既可用于源操作數(shù),也可用于目的操 作數(shù),還可以兩者都用于寄存器尋址方式(如作數(shù),還可以兩者都用于寄存器尋址方式(如 MOV BX , AX ) 除以上兩種尋址方式外,下面各種尋址方式的除以上兩種尋址方式外,下面各種尋址方式的 操作數(shù)均在存儲器中,通過采用不同的尋址方操作數(shù)均在存儲器中,通過采用不同的尋址方 式取得操作數(shù)地址,從而取得操作數(shù)。式取得操作數(shù)地址,從而取得操作數(shù)。 (3)直接尋址()直接尋址(Direct Addressing) 說明:在討論尋址方式時,通常把操作數(shù)的偏移地址說明:在討論尋址方式時,通常把操作數(shù)的偏移地址 稱為有效地址稱

10、為有效地址EAEA (Effective AddressEffective Address) ) ,EAEA可通過不同可通過不同 的尋址方式來得到。的尋址方式來得到。 在直接尋址方式中,在直接尋址方式中,指令中直接給出操作數(shù)的指令中直接給出操作數(shù)的 有效地址有效地址,或者說,有效地址,或者說,有效地址EA就在指令中。就在指令中。 它它(操作數(shù)的有效地址,而不是操作數(shù)本身操作數(shù)的有效地址,而不是操作數(shù)本身)存存 放在代碼段中指令的操作碼之后,但操作數(shù)一放在代碼段中指令的操作碼之后,但操作數(shù)一 般存放在數(shù)據(jù)段中。般存放在數(shù)據(jù)段中。 例例 1. MOV AX , DS:2000H; 如如(DS)=

11、3000H, 則指令的執(zhí)行情況如下圖則指令的執(zhí)行情況如下圖 所示:所示: 代 存儲器 采用直接尋址方式,如果沒 碼 有用“段跨越前綴”標(biāo)明操作 段 數(shù)在哪一段,就默認(rèn)段寄存 為DS. 30000H 數(shù) AX 據(jù) 段 32000H 執(zhí)行結(jié)果:(AX)=3050H OP 00 20 50 30 也允許數(shù)據(jù)存放在數(shù)據(jù)段以外的其它段(如附也允許數(shù)據(jù)存放在數(shù)據(jù)段以外的其它段(如附 加段加段)。此時應(yīng)在指令中給出。此時應(yīng)在指令中給出 “跨越段前綴跨越段前綴”。 例例 2: 如數(shù)據(jù)在附加段中,則應(yīng)指明如數(shù)據(jù)在附加段中,則應(yīng)指明“段跨越段跨越 綴綴” 。 MOV AX , ES : 3000H 或或 ES:

12、MOV AX , 3000H * 為了使指令字不要過長,規(guī)定雙操作數(shù)指令不能兩個為了使指令字不要過長,規(guī)定雙操作數(shù)指令不能兩個 操作數(shù)都用直接尋址方式。操作數(shù)都用直接尋址方式。 如如 MOV DS: 2000H , DS:3000H 寄存器間接尋址寄存器間接尋址 (Register indirect Addressing) 采用寄存器間接尋址方式時,指令中給采用寄存器間接尋址方式時,指令中給 出寄存出寄存 器號器號(寄存器為寄存器為BX,BP,SI和和DI之一之一), 被指定的寄被指定的寄 存器中存放著操作數(shù)的有效地址,操作數(shù)在存存器中存放著操作數(shù)的有效地址,操作數(shù)在存 儲器中儲器中(以寄存器

13、的內(nèi)容為操作數(shù)的有效地以寄存器的內(nèi)容為操作數(shù)的有效地 址)址)。 (BX) .對應(yīng)段寄存器為對應(yīng)段寄存器為 DS EA= (BP) . SS (SI ) . DS (DI) DS Example MOV AX , BX ; 設(shè)設(shè) ( DS) = 2000H ,(BX) = 1000H 物理地址物理地址20000H 1000H =21000H *指令中也可以通過 AX . “段跨越前綴”取得 數(shù) 其他段中的數(shù)據(jù), 據(jù) 例如: 段 MOV AX,ES: BX 21000H 指令的執(zhí)行結(jié)果為: (AX) = 50A0H A0 50 (5)寄存器相對尋址()寄存器相對尋址(Register relat

14、ive addressing) 操作數(shù)的有效地址是一個基址或變址寄存器的操作數(shù)的有效地址是一個基址或變址寄存器的 內(nèi)容與指令中指定的內(nèi)容與指令中指定的8位或位或16位位移量位位移量 (Displacement)之和。之和。 如下圖所示:如下圖所示: (BX) 8位位移量位位移量 EA = (BP) + (SI) 16位位移量位位移量 (DI) 若沒有段跨越前綴,則對于寄存器若沒有段跨越前綴,則對于寄存器BX,SI, DI的情況,的情況, 段寄存器為段寄存器為DS; 對于寄存器為對于寄存器為BP的情況,則段寄存器為的情況,則段寄存器為SS。 Example MOV AX, SI+3000H 操操

15、 設(shè)設(shè)(DS)4000H,(SI)=2000H 作作 物理地址物理地址 碼碼 40000H+2000H+3000H 位位 45000H 移移 量量 指令的執(zhí)行情況如指令的執(zhí)行情況如 右圖右圖 AX 40000H 43000H SI 數(shù)數(shù) 45000H 據(jù)據(jù) 段段 OP OP 00 30 34 12 這種尋址方式可用于表格的處理,通過這種尋址方式可用于表格的處理,通過位移量位移量 來設(shè)置表格的首地址;來設(shè)置表格的首地址; 利用修改利用修改基址寄存器或變址寄存器基址寄存器或變址寄存器的內(nèi)容來獲的內(nèi)容來獲 得表項(xiàng)的值。得表項(xiàng)的值。 (6)基址變址尋址()基址變址尋址(Based indexed ad

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

17、 21000H 21158H AX 221FDH 34 12 這種尋址方式同樣適用于表格這種尋址方式同樣適用于表格(或數(shù)組或數(shù)組)的處理的處理, 表的首地址可存放在基址寄存器中,而用變址表的首地址可存放在基址寄存器中,而用變址 寄存器來訪問表格中的各項(xiàng)。寄存器來訪問表格中的各項(xiàng)。 由于兩個寄存器都可以修改,使由于兩個寄存器都可以修改,使 用起來更靈活。用起來更靈活。 (7 )相對基址變址尋址相對基址變址尋址(Relative based indexed address) 也稱也稱“帶位移量的基址加變址尋址方式帶位移量的基址加變址尋址方式”. 操作數(shù)的有效地址是一個基址寄存器和一個變址寄存器操作

18、數(shù)的有效地址是一個基址寄存器和一個變址寄存器 內(nèi)容與內(nèi)容與8位或位或16位位移量之和。位位移量之和。 (BX) (SI) 用用BX,則段寄存器為則段寄存器為 DS EA= + + 位移量位移量 (BP) (DI) 用用BP,則段寄存器為則段寄存器為 SS 例:例:MOV AX,BX+SI+0250H 設(shè)設(shè)(DS)=3000H,(BX)=2000H,(SI)=1000H,則 代代 EA 2000H+1000H+0250H=3250H 碼碼 物理地址物理地址30000H+3250H=33250H 段段 30000H 位移量位移量 AX 30250H 數(shù)數(shù) (BX) 32250H 據(jù)據(jù) (SI) 3

19、3250H 段段 OP OP 50 02 34 12 這種尋址方式可用于訪問二維數(shù)組。這種尋址方式可用于訪問二維數(shù)組。 設(shè)數(shù)組元素在內(nèi)存中按行順序存放(首先放第一行所設(shè)數(shù)組元素在內(nèi)存中按行順序存放(首先放第一行所 有元素,再放第二行所有元素,有元素,再放第二行所有元素,)。通過改變基)。通過改變基 址寄存器(如址寄存器(如BXBX)和變址寄存器(如)和變址寄存器(如SI)SI)的值可以訪問的值可以訪問 數(shù)組中不同行和列上的元素。數(shù)組中不同行和列上的元素。 若保持若保持BXBX不變而不變而SISI改變,則可以訪問同一行的所有元改變,則可以訪問同一行的所有元 素。素。 若保持若保持SISI不變而不

20、變而BXBX改變,則可以訪問同一列的所有元改變,則可以訪問同一列的所有元 素。素。 數(shù)據(jù)的尋址方式的尋址過程數(shù)據(jù)的尋址方式的尋址過程(圖示)圖示) . 指令 數(shù)據(jù)寄存器 (1)立即尋址 數(shù)據(jù) 指令 寄存器 (2)寄存器尋址 圖圖4-1 數(shù)據(jù)的尋址方式的尋址過程數(shù)據(jù)的尋址方式的尋址過程(1) EA 數(shù)據(jù) 指令存儲器 (3)直接尋址 寄存器EA 指令寄存器 (4)寄存器間接尋址 數(shù)據(jù) 存儲器 圖圖4-1 數(shù)據(jù)的尋址方式的尋址過程(數(shù)據(jù)的尋址方式的尋址過程(2) 數(shù)據(jù) 存儲器 地址 寄存器 寄存器 指令 位移量 + EA (5)寄存器相對尋址 圖圖4-1 數(shù)據(jù)的尋址方式的尋址過程數(shù)據(jù)的尋址方式的尋址

21、過程(3) 圖圖4-1 數(shù)據(jù)的尋址方式的尋址過程(數(shù)據(jù)的尋址方式的尋址過程(4) 數(shù)據(jù) 存儲器 基地址 寄存器 基址 寄存器 指令 變址 寄存器 + EA (6)基址變址尋址 變址值 寄存器 圖圖4-1 數(shù)據(jù)的尋址方式的尋址過程(數(shù)據(jù)的尋址方式的尋址過程(5) 數(shù)據(jù) 存儲器 基地址 寄存器 基址 寄存器 指令 變址 寄存器 + EA (7)基址變址相對尋址 變址值 寄存器 位移量 端口號數(shù)據(jù) 指令 端口 (8)直接尋址 DX端口號 指令DX (9)間接尋址 數(shù)據(jù) 端口 圖圖4-1 數(shù)據(jù)的尋址方式的尋址過程(數(shù)據(jù)的尋址方式的尋址過程(6) 端 口 操 作 數(shù) 3 轉(zhuǎn)移地址的尋址方式轉(zhuǎn)移地址的尋址

22、方式 有關(guān)術(shù)語和概念有關(guān)術(shù)語和概念: 段內(nèi)轉(zhuǎn)移段內(nèi)轉(zhuǎn)移如果轉(zhuǎn)移地址與該轉(zhuǎn)移類指令在同如果轉(zhuǎn)移地址與該轉(zhuǎn)移類指令在同 一個代碼段,這樣的轉(zhuǎn)移稱為段內(nèi)轉(zhuǎn)移,也稱一個代碼段,這樣的轉(zhuǎn)移稱為段內(nèi)轉(zhuǎn)移,也稱 近轉(zhuǎn)移近轉(zhuǎn)移; 近轉(zhuǎn)移時的轉(zhuǎn)移地址只包含偏移地址部分,找近轉(zhuǎn)移時的轉(zhuǎn)移地址只包含偏移地址部分,找 到轉(zhuǎn)移地址后,將轉(zhuǎn)移地址送入到轉(zhuǎn)移地址后,將轉(zhuǎn)移地址送入IP即可實(shí)現(xiàn)轉(zhuǎn)即可實(shí)現(xiàn)轉(zhuǎn) 移移(CS的內(nèi)容不必改變的內(nèi)容不必改變)。 段間轉(zhuǎn)移段間轉(zhuǎn)移如果轉(zhuǎn)移地址與該轉(zhuǎn)移類指令位于如果轉(zhuǎn)移地址與該轉(zhuǎn)移類指令位于 不同的代碼段,這樣的轉(zhuǎn)移稱為段間轉(zhuǎn)移,也不同的代碼段,這樣的轉(zhuǎn)移稱為段間轉(zhuǎn)移,也 稱稱遠(yuǎn)轉(zhuǎn)移遠(yuǎn)轉(zhuǎn)移;

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

24、移如果轉(zhuǎn)移地址間接放在其他地方,如果轉(zhuǎn)移地址間接放在其他地方, 則這樣的轉(zhuǎn)移稱為間接轉(zhuǎn)移,視轉(zhuǎn)移地址是在則這樣的轉(zhuǎn)移稱為間接轉(zhuǎn)移,視轉(zhuǎn)移地址是在 寄存器中還是在存儲器中又可分別稱為寄存器寄存器中還是在存儲器中又可分別稱為寄存器 操作數(shù)操作數(shù)(寄存器尋址寄存器尋址)和存儲器操作數(shù)和存儲器操作數(shù)(存儲器尋存儲器尋 址址)。 以以JMP指令為例,可將轉(zhuǎn)移地址的各種尋址指令為例,可將轉(zhuǎn)移地址的各種尋址 方式列出,如表方式列出,如表4-2所示。所示。 表表4-2 轉(zhuǎn)移地址的尋址方式轉(zhuǎn)移地址的尋址方式 段內(nèi)轉(zhuǎn)移例段內(nèi)轉(zhuǎn)移例 段間轉(zhuǎn)移例段間轉(zhuǎn)移例 直接轉(zhuǎn)移直接轉(zhuǎn)移(L為標(biāo)號)轉(zhuǎn)移地址在指令中(近標(biāo)號)轉(zhuǎn)移地

25、址在指令中(近標(biāo)號)轉(zhuǎn)移地址在指令中(遠(yuǎn)標(biāo)號)轉(zhuǎn)移地址在指令中(遠(yuǎn)標(biāo)號) JMP L(近)JMP FAR PTR L (遠(yuǎn)) 寄存器操作數(shù)寄存器操作數(shù)轉(zhuǎn)移地址在通用字寄存器中轉(zhuǎn)移地址在通用字寄存器中無 JMP AX 間間 接接 轉(zhuǎn)轉(zhuǎn) 移移 存存 儲儲 器器 操操 作作 數(shù)數(shù) 直接尋址 JMP WORD PRT DS:20JMP DWORD PTR DS: 20 間 接 尋 址 寄存器間 接尋址 轉(zhuǎn)移地址在轉(zhuǎn)移地址在“BX, BP, SI, DI 之一之一”中中 JMP BXJMP DWORD PTR BX 寄存器相 對尋址 轉(zhuǎn)移地址在轉(zhuǎn)移地址在“BX, BP, SI, DI 之一之一+ 位移量

26、位移量”中中 JMP BX+20JMP DWORD PTR BX+20 基址變址 尋址 轉(zhuǎn)移地址在轉(zhuǎn)移地址在“BX, BP之一之一SI, DI 之一之一”中中 JMP BX+SIJMP DWORD PTR BX+SI 基址變址 相對尋址 轉(zhuǎn)移地址在轉(zhuǎn)移地址在“BX, BP之一之一SI, DI 之一位移量之一位移量”中中 JMP BX+SI+20JMP DWORD PTR BX+SI+20 (1) 段內(nèi)直接轉(zhuǎn)移段內(nèi)直接轉(zhuǎn)移(直接近轉(zhuǎn)移直接近轉(zhuǎn)移) 特點(diǎn):特點(diǎn): 轉(zhuǎn)移地址轉(zhuǎn)移地址(通常就是近標(biāo)號通常就是近標(biāo)號)直接包含在匯編形式的轉(zhuǎn)直接包含在匯編形式的轉(zhuǎn) 移指令中,移指令中,轉(zhuǎn)移指令的機(jī)器代碼中存

27、放的是該標(biāo)號與轉(zhuǎn)移指令的機(jī)器代碼中存放的是該標(biāo)號與 當(dāng)前當(dāng)前IP值的差值的差(標(biāo)號標(biāo)號-IP),此差稱為位移量,該位移量此差稱為位移量,該位移量 與轉(zhuǎn)移指令一起存于代碼段:與轉(zhuǎn)移指令一起存于代碼段: 位移量被放在轉(zhuǎn)移指令位移量被放在轉(zhuǎn)移指令 的操作碼之后,也是的操作碼之后,也是“高字節(jié)放在高地址單元,低字高字節(jié)放在高地址單元,低字 節(jié)放在低地址單元節(jié)放在低地址單元”。 在取轉(zhuǎn)移指令時,此位移量即作為轉(zhuǎn)移指令的一部分在取轉(zhuǎn)移指令時,此位移量即作為轉(zhuǎn)移指令的一部分 被取入被取入CPU中。中。 執(zhí)行轉(zhuǎn)移指令時,將這個位移量加到執(zhí)行轉(zhuǎn)移指令時,將這個位移量加到IP上即可得到轉(zhuǎn)上即可得到轉(zhuǎn) 移地址移地址

28、(標(biāo)號的值標(biāo)號的值),即即 IP+(標(biāo)號標(biāo)號-IP)=標(biāo)號標(biāo)號=轉(zhuǎn)移地址轉(zhuǎn)移地址 不必為找這個轉(zhuǎn)移地址再去訪問寄存器或存儲器。不必為找這個轉(zhuǎn)移地址再去訪問寄存器或存儲器。 例如,如果例如,如果L是本段中的標(biāo)號,則下述指令采用的是是本段中的標(biāo)號,則下述指令采用的是 段內(nèi)直接轉(zhuǎn)移方式:段內(nèi)直接轉(zhuǎn)移方式: JMP L; 機(jī)器指令中的位移量為機(jī)器指令中的位移量為L-IP,轉(zhuǎn)移地址為,轉(zhuǎn)移地址為L (2) 段內(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)移地址 存儲器操作數(shù)存儲器操作數(shù)(

29、也稱存儲器尋址也稱存儲器尋址) (i) 直接尋址直接尋址 其特征是:其特征是: 轉(zhuǎn)移地址轉(zhuǎn)移地址(偏移地址部分偏移地址部分)在數(shù)據(jù)存儲單元在數(shù)據(jù)存儲單元 中,數(shù)據(jù)存儲單元的地址在指令中直接給出。中,數(shù)據(jù)存儲單元的地址在指令中直接給出。 例如,例如,JMP WORD PTR DS:20;數(shù)據(jù)存儲單元數(shù)據(jù)存儲單元 (DS:20)的一個字為轉(zhuǎn)移地址的一個字為轉(zhuǎn)移地址 (ii) 寄存器間接尋址寄存器間接尋址 其特征是其特征是: 轉(zhuǎn)移地址轉(zhuǎn)移地址(偏移地址部分偏移地址部分)在數(shù)據(jù)存儲單元在數(shù)據(jù)存儲單元 中,數(shù)據(jù)存儲單元的偏移地址在中,數(shù)據(jù)存儲單元的偏移地址在BX、BP、SI、DI之之 一中。一中。 例如

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

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

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

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

34、地址的一個字為轉(zhuǎn)移地址 JMPBP+SI+20 ;數(shù)據(jù)存儲單元數(shù)據(jù)存儲單元(SS:BP+SI+20)的一個字為轉(zhuǎn)移地址的一個字為轉(zhuǎn)移地址 JMP DS:BP+SI+20 ;數(shù)據(jù)存儲單元數(shù)據(jù)存儲單元(DS:BP+SI+20)的一個字為轉(zhuǎn)移地址的一個字為轉(zhuǎn)移地址 (3) 段間直接轉(zhuǎn)移段間直接轉(zhuǎn)移(直接遠(yuǎn)轉(zhuǎn)移直接遠(yuǎn)轉(zhuǎn)移) 轉(zhuǎn)移地址轉(zhuǎn)移地址(通常就是遠(yuǎn)標(biāo)號通常就是遠(yuǎn)標(biāo)號)直接包含在匯編形直接包含在匯編形 式的轉(zhuǎn)移類指令中,也直接存放在轉(zhuǎn)移類指令式的轉(zhuǎn)移類指令中,也直接存放在轉(zhuǎn)移類指令 的機(jī)器代碼中,它是轉(zhuǎn)移類指令不可分割的一的機(jī)器代碼中,它是轉(zhuǎn)移類指令不可分割的一 部分,位于轉(zhuǎn)移類指令的操作碼之后。部

35、分,位于轉(zhuǎn)移類指令的操作碼之后。 高字高字存放轉(zhuǎn)移地址的存放轉(zhuǎn)移地址的段基值段基值部分,部分,低字低字存放轉(zhuǎn)存放轉(zhuǎn) 移地址的移地址的偏移地址偏移地址部分。在取轉(zhuǎn)移類指令時,部分。在取轉(zhuǎn)移類指令時, 此段基值和偏移地址作為轉(zhuǎn)移類指令的一部分此段基值和偏移地址作為轉(zhuǎn)移類指令的一部分 被取入被取入CPU中,執(zhí)行轉(zhuǎn)移類指令時,不必為找中,執(zhí)行轉(zhuǎn)移類指令時,不必為找 轉(zhuǎn)移地址再去訪問寄存器或存儲器。轉(zhuǎn)移地址再去訪問寄存器或存儲器。 例如,如果例如,如果L是其他代碼段中的標(biāo)號,則下述是其他代碼段中的標(biāo)號,則下述 指令采用的就是段間直接轉(zhuǎn)移方式:指令采用的就是段間直接轉(zhuǎn)移方式: JMP FAR PTR L

36、;在在L左邊通常要加上類左邊通常要加上類 型說明型說明FAR PTR (4) 段間間接轉(zhuǎn)移段間間接轉(zhuǎn)移(間接遠(yuǎn)轉(zhuǎn)移間接遠(yuǎn)轉(zhuǎn)移) 段間間接轉(zhuǎn)移時的轉(zhuǎn)移地址既包含偏移地址部分,又段間間接轉(zhuǎn)移時的轉(zhuǎn)移地址既包含偏移地址部分,又 包含段基值部分,在數(shù)據(jù)存儲器中占兩個字:低字單包含段基值部分,在數(shù)據(jù)存儲器中占兩個字:低字單 元存放偏移地址,高字單元存放段基值。元存放偏移地址,高字單元存放段基值。 要在轉(zhuǎn)移類指令中的地址表達(dá)式左邊加上類型說明要在轉(zhuǎn)移類指令中的地址表達(dá)式左邊加上類型說明 DWORD PTR。例如,。例如, JMP DWORD PTR B ;1 直接尋址直接尋址 JMP DWORD PTR

37、DS:20 ;2 直接尋址直接尋址 JMP DWORD PTR BX ;3 寄存器間接尋址寄存器間接尋址 JMP DWORD PTR BX+B ;4 寄存器相對尋址寄存器相對尋址 JMP DWORD PTR BX+20 ;5 寄存器相對尋址寄存器相對尋址 JMP DWORD PTR BX+SI ;6 基址變址尋址基址變址尋址 JMP DWORD PTR BX+SI+B ;7 基址變址相對尋址基址變址相對尋址 JMP DWORD PTR BX+SI+20 ;8 基址變址相對尋址基址變址相對尋址 指令 轉(zhuǎn)移地址寄存器 (1)直接轉(zhuǎn)移 轉(zhuǎn)移地址 指令 寄存器 (2)寄存器間接轉(zhuǎn)移 圖圖4-2 轉(zhuǎn)移地

38、址的尋址方式的尋址過程轉(zhuǎn)移地址的尋址方式的尋址過程(1) EA轉(zhuǎn)移地址 指令 存儲器 (3)直接尋址 寄存器 EA 指令寄存器 (4)寄存器間接尋址 轉(zhuǎn)移地址 存儲器 圖圖4-2 轉(zhuǎn)移地址的尋址方式的尋址過程(轉(zhuǎn)移地址的尋址方式的尋址過程(2) 轉(zhuǎn)移地址 存儲器 地址 寄存器 寄存器 指令 位移量 + EA (5)寄存器相對尋址 圖圖4-2 轉(zhuǎn)移地址的尋址方式的尋址過程(轉(zhuǎn)移地址的尋址方式的尋址過程(3) 圖圖4-2 轉(zhuǎn)移地址的尋址方式的尋址過程(轉(zhuǎn)移地址的尋址方式的尋址過程(4) 轉(zhuǎn)移地址 存儲器 基地址 寄存器 基址 寄存器 指令 變址 寄存器 + EA (6)基址變址尋址 變址值 寄存器

39、 圖圖4-2 轉(zhuǎn)移地址的尋址方式的尋址過程(轉(zhuǎn)移地址的尋址方式的尋址過程(5) 轉(zhuǎn)移地址 存儲器 基地址 寄存器 基址 寄存器 指令 變址 寄存器 + EA (7)基址變址相對尋址 變址值 寄存器 位移量 4.1.2 8086 指令系統(tǒng)指令系統(tǒng) 可以分為以下可以分為以下6類:類: 傳送指令傳送指令 算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令 邏輯運(yùn)算和移位指令邏輯運(yùn)算和移位指令 串操作指令串操作指令 轉(zhuǎn)移指令轉(zhuǎn)移指令 處理器控制指令處理器控制指令 一、傳送指令一、傳送指令 包括包括:通用傳送指令通用傳送指令和和專用傳送指令專用傳送指令兩類兩類 通用傳送指令:通用傳送指令: 名稱格式類型操作 傳送 交換 入棧 出

40、棧 MOV 目的,源 XCHG 操作數(shù)1,操作數(shù)2 PUSH 源字 POP 目的字 B/W B/W W W (目的)(源) (操作數(shù)1) (操作數(shù)2) SP SP-2, (SS:SP) (源)字 (目的)字 (SS:SP), SP SP+2 (1) MOV 指令指令 立即數(shù) 存儲器存儲器 直接尋址直接尋址 寄存器間接尋址寄存器間接尋址 寄存器相對尋址寄存器相對尋址 基址變址尋址基址變址尋址 基址變址相對尋址基址變址相對尋址 通用寄存器通用寄存器 AX BX CX DX SI DI SP BP AL BL CL DL AH BH CH DH 段寄存器 DS ES SS CS 例例: MOV AL

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

42、, BL MOV DS:2035H, CL HLT 用寄存器間接尋址方式實(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 ,AH 練習(xí)練習(xí)2 把數(shù)據(jù)塊把數(shù)據(jù)塊BLOCK1移到移到BLOCK2 2040H 2060H 把把2040H地址開始的地址開始的10個字節(jié)數(shù)據(jù)移到個字節(jié)數(shù)據(jù)移到2060地地 址開始的址開始的10個字節(jié)單元處。個字節(jié)單元處。 BLOCK1 BLOCK2 ANSWER MOV SI, 2040H MOV DI, 2060H MOV CX,

43、 0AH LOOP1: MOV BL, SI+09H; MOV DI+09H,BL ; DEC SI DEC DI DEC CX JNZ LOOP1 HLT 練習(xí)練習(xí)3 把把2040H地址開始的地址開始的10個字節(jié)單元的內(nèi)容與個字節(jié)單元的內(nèi)容與 2060H地址開始的地址開始的10個字節(jié)單元內(nèi)容互換。個字節(jié)單元內(nèi)容互換。 MOV BL,SI+09H MOV AL,DI+09H MOV SI+09H,AL MOV DI+09H,BL (2) PUSH指令和指令和POP指令指令 堆棧的圖示: 壓入壓入:格式 PUSH SRC (SS) 先修改指針: SP SP-2 后壓入: (SP+1,SP) SR

44、C (SP) 彈出彈出:格式 POP DST 棧頂 先彈出:DST (SP+1,SP) 壓 彈 后修改指針:SP SP+2 入 出 高地址 棧底 最后一項(xiàng) (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,CX XCHG DS:2530H, CX XCHG指令允許的操作數(shù)及數(shù)據(jù)傳送方向指令允許的操作數(shù)及數(shù)據(jù)傳送方向 存儲器存儲器 直接尋址直接尋址 寄存器間接尋址寄存器間接尋址 寄存器相對

45、尋址寄存器相對尋址 基址變址尋址基址變址尋址 基址變址相對尋址基址變址相對尋址 通用寄存器通用寄存器 AX BX CX DX SI DI SP BP AL BL CL DL AH BH CH DH 練習(xí)練習(xí) 用用XCHG指令改進(jìn)指令改進(jìn)前面的數(shù)據(jù)塊交換程序:前面的數(shù)據(jù)塊交換程序: MOV BL , SI +09H XCHG BL , DI+09H MOV SI+09H , BL MOV BL,SI+09H MOV AL,DI+09H MOV SI+09H,AL MOV DI+09H,BL 2. 專用傳送指令專用傳送指令 專用傳送指令有專用傳送指令有15條,可分為條,可分為標(biāo)志傳送、查表、標(biāo)志傳

46、送、查表、 地址傳送、符號擴(kuò)展、輸入地址傳送、符號擴(kuò)展、輸入/輸出和串傳送類輸出和串傳送類 共六種,它們的名稱、書寫格式、完成的操作共六種,它們的名稱、書寫格式、完成的操作 及操作類型如下表所示。及操作類型如下表所示。 專用傳送指令專用傳送指令 (1) 名稱格式類型操作 標(biāo)標(biāo) 志志 傳傳 送送 標(biāo)志入棧標(biāo)志入棧PUSHF WSP SP-2, (SS:SP) Flag 出棧到標(biāo)志出棧到標(biāo)志POPF WFlag(SS:SP), SP SP+2 標(biāo)志送標(biāo)志送AHLAHFBAHFlag低低8位位 AH送標(biāo)志送標(biāo)志SAHFBFlag低低8位位 AH 查查 表表 查表查表XLAT或或XLATB XLAT

47、段寄存器:變量名段寄存器:變量名 B B AL (DS:BX+AL) AL (段寄存器:段寄存器:BX+AL) 地地 址址 傳傳 送送 傳送有效地址傳送有效地址LEA 16位位Reg, Mem W16位位 RegMem的有效地的有效地 址址 地址指針?biāo)图牡刂分羔標(biāo)图?存器及存器及DS LDS 16位位Reg, 雙字雙字 Mem W16位位 Reg(Mem)低字低字 DS (Mem)高字高字 地址指針?biāo)图牡刂分羔標(biāo)图?存器及存器及ES LES 16位位Reg, 雙字雙字 Mem W16位位Reg (Mem)低字低字 ES (Mem)高字高字 專用傳送指令專用傳送指令 (2) 續(xù)表 名稱名稱格式格

48、式類型類型操作操作 符號符號 擴(kuò)展擴(kuò)展 字節(jié)擴(kuò)展為字字節(jié)擴(kuò)展為字 字?jǐn)U展為雙字字?jǐn)U展為雙字 CBW CWD B W AH的各位的各位AL的最高位的最高位 DX的各位的各位AX的最高位的最高位 輸入輸入 輸出輸出 輸入輸入 IN Ac, 端口號端口號B/WAc (端口端口), 端口號:端口號: 00FFH IN Ac, DXB/WAc (DX), DX:00FFFFH 輸出輸出 OUT 端口號端口號, AcB/W(端口端口) Ac , 端口號:端口號: 00FFH OUT DX, AcB/W(DX)Ac, DX:00FFFFH 專用傳送指令專用傳送指令 (3) 續(xù)表 名稱名稱格式格式類型類型操作

49、操作 串串 傳傳 送送 類類 串傳送串傳送MOVSBB(ES:DI)字節(jié)字節(jié) (DS:SI)字節(jié)字節(jié) DF=0時時 SISI+1, DIDI+1 DF=1時時 SISI- 1, DIDI -1 MOVSWW(ES:DI)字字 (DS:SI)字字 DF=0時時 SISI+2, DIDI+2 DF=1時時 SISI- 2, DIDI -2 *MOVS 目的,源目的,源B/W略略 串存儲串存儲 (存入串存入串) STOSBB(ES:DI)AL 若若DF=0, 則則DIDI+1 若若DF=1, 則則DIDI- 1 STOSWW(ES:DI)AX 若若DF=0, 則則DIDI+2 若若DF=1, 則則D

50、IDI- 2 *STOS 目的目的B/W略略 專用傳送指令專用傳送指令 (4) 續(xù)表 名稱名稱格式格式類型類型操作操作 串串 傳傳 送送 類類 串裝入串裝入 (從串取從串取 ) LODSBBAL (DS:DI) 若若DF=0, 則則SISI+1 若若DF=1, 則則SISI- 1 LODSWWAX (DS:DI) 若若DF=0, 則則SISI+2 若若DF=1, 則則SISI- 2 *LODS 源源B/W略略 (1)標(biāo)志傳送指令標(biāo)志傳送指令 標(biāo)志傳送指令共標(biāo)志傳送指令共4條:條: PUSHF POPF LAHF ;AH Flag的低的低8位位 SAHF ;Flag的低的低8位位 AH 例:例:

51、將將8086 標(biāo)志寄存器的標(biāo)志寄存器的TF位置位置 “1” (2)查表指令查表指令 查表指令查表指令XLAT將以將以BX+AL為偏移地址的內(nèi)存為偏移地址的內(nèi)存 單元中的一個字節(jié)送到單元中的一個字節(jié)送到AL中。中。 在使用在使用XLAT指令前,應(yīng)先在內(nèi)存中建立一個指令前,應(yīng)先在內(nèi)存中建立一個 字節(jié)數(shù)據(jù)表,字節(jié)數(shù)據(jù)表,表的首字節(jié)的偏移地址要事先存表的首字節(jié)的偏移地址要事先存 入入BX,表中待查的數(shù)據(jù)相對于表開始處的位表中待查的數(shù)據(jù)相對于表開始處的位 移量也要事先存入移量也要事先存入AL。 指令執(zhí)行時,會將指令執(zhí)行時,會將BX的內(nèi)容與的內(nèi)容與AL的內(nèi)容相加,的內(nèi)容相加, 用得到的數(shù)作為偏移地址,以用

52、得到的數(shù)作為偏移地址,以DS為段地址,將為段地址,將 該地址處存儲單元中的內(nèi)容該地址處存儲單元中的內(nèi)容(字節(jié)字節(jié))取到取到AL中。中。 例如,例如,如果如果B為數(shù)據(jù)段中一組字節(jié)變量的開始地為數(shù)據(jù)段中一組字節(jié)變量的開始地 址,則執(zhí)行下列程序段后,址,則執(zhí)行下列程序段后,AL=66H。 B DB 3FH, 06H, 5BH, 4FH, 66H ;數(shù)據(jù)段中的數(shù)據(jù)表 DB 6DH, 7DH, 07H, 7FH, 6FH MOV BX,OFFSET B ;使使BX中存放數(shù)據(jù)表首字節(jié)的偏移地址中存放數(shù)據(jù)表首字節(jié)的偏移地址 MOV AL,4 ;使使AL中存放欲查單元的地址位移量中存放欲查單元的地址位移量4

53、XLAT ;查表得到的內(nèi)容查表得到的內(nèi)容(字節(jié)字節(jié))在在AL中中 在此例中,數(shù)據(jù)表中存放的數(shù)據(jù)恰好是共陰極數(shù)碼管在此例中,數(shù)據(jù)表中存放的數(shù)據(jù)恰好是共陰極數(shù)碼管 的輸入信號,所以,只要事先在的輸入信號,所以,只要事先在AL中放好一個十進(jìn)制中放好一個十進(jìn)制 數(shù)碼數(shù)碼(09),就能通過上述程序段得到數(shù)碼管的相應(yīng)輸,就能通過上述程序段得到數(shù)碼管的相應(yīng)輸 入信號。入信號。 (3) 地址傳送指令地址傳送指令 地址傳送指令有地址傳送指令有LEA、LDS和和LES共共3條條: LEA (Load Effective Address) LDS (Load pointer into register and DS

54、) LES (Load pointer into register and ES) (i)取有效地址指令)取有效地址指令 格式:格式:LEA REG , SRC 操作:操作:REG SRC 的有效地址的有效地址 *指令功能:指令功能: 將源操作數(shù)的有效地址將源操作數(shù)的有效地址EA傳送到目的操作數(shù),傳送到目的操作數(shù), 目的操作數(shù)為一個目的操作數(shù)為一個16位的通用寄存器。位的通用寄存器。 例:例:LEA BX , BX+DI+6H 若指令執(zhí)行之前若指令執(zhí)行之前(BX)=1000H, (DI)=0200H, 則則 指令執(zhí)行之后指令執(zhí)行之后, (BX)=1206H 注意與指令注意與指令MOV BX,B

55、X+DI+6H功能上的功能上的 區(qū)別區(qū)別 從變量的角度,從變量的角度,“LEA AX,VAR”指令傳送的指令傳送的 是變量的地址,而是變量的地址,而“MOV AX,VAR”指令傳送指令傳送 的是變量的值。的是變量的值。 練習(xí)練習(xí) 如果如果TABLE為數(shù)據(jù)段中為數(shù)據(jù)段中0032H單元的符號名,單元的符號名, 其中存放的內(nèi)容為其中存放的內(nèi)容為1234H, 當(dāng)執(zhí)行指令當(dāng)執(zhí)行指令 “ MOV AX , TABLE”后,后, (AX)= ; 而執(zhí)行指令而執(zhí)行指令 “ LEA AX , TABLE”后后, (AX) = 。 (ii) LDS REG , SRC 操作:操作:REG (SRC) DS (SR

56、C+2) 標(biāo)志:標(biāo)志:- - - - - - - - - 指令指令 功功 能能:將地址指針:將地址指針(共共4個字節(jié))裝入個字節(jié))裝入DS 和另一個非段寄存器。其中:和另一個非段寄存器。其中: 前兩個字節(jié)前兩個字節(jié)(偏移量)偏移量) 非段寄存器非段寄存器 后兩個字節(jié)后兩個字節(jié)(段基址段基址) DS Example 例例1. LDS DI , DS:2130H 設(shè)設(shè)(DS)=3000H 32130H DI DS 偏移量 段基址 (iii) LES REG , SRC 操作:操作: REG (SRC) ES (SRC+2) * LDS和和LES指令為切換數(shù)據(jù)段提供了方便。指令為切換數(shù)據(jù)段提供了方便

57、。 (4) 符號擴(kuò)展指令符號擴(kuò)展指令 符號擴(kuò)展指令有符號擴(kuò)展指令有CBW和和CWD共兩條。共兩條。 CBW指令將指令將AL中的中的8位帶符號數(shù)擴(kuò)展為位帶符號數(shù)擴(kuò)展為16位并送入位并送入AX 中。中。 實(shí)際上就是將實(shí)際上就是將AL的最高位送入的最高位送入AH的所有各位。的所有各位。 CWD指令將指令將AX中的中的16位帶符號數(shù)擴(kuò)展為位帶符號數(shù)擴(kuò)展為32位并送入位并送入 DX和和AX中中(其中其中DX存放高存放高16位,位,AX存放低存放低16位位)。 實(shí)際上就是將實(shí)際上就是將AX的最高位送入的最高位送入DX的所有各位。的所有各位。 CBW和和CWD兩條指令通常只對帶符號數(shù)使用。兩條指令通常只對帶

58、符號數(shù)使用。 CBW指令只能對指令只能對AL的內(nèi)容進(jìn)行擴(kuò)展,擴(kuò)展后的內(nèi)容進(jìn)行擴(kuò)展,擴(kuò)展后AL的內(nèi)的內(nèi) 容不變但占用容不變但占用AH; CWD指令只能對指令只能對AX的內(nèi)容進(jìn)行擴(kuò)展,擴(kuò)展后的內(nèi)容進(jìn)行擴(kuò)展,擴(kuò)展后AX的內(nèi)的內(nèi) 容不變但占用容不變但占用DX。 例如:例如: 若若AX=379AH, 則執(zhí)行完則執(zhí)行完CBW指令后,指令后,AX=FF9AH, 若執(zhí)行的是若執(zhí)行的是CWD指令,則指令,則DX=0000H,AX=379A H; 若若AX=977AH, 則執(zhí)行完指令則執(zhí)行完指令CBW后,后,AX=007AH, 若執(zhí)行的是若執(zhí)行的是CWD指令,則指令,則DX=FFFFH,AX=977AH。 (5)

59、 輸入輸出指令輸入輸出指令 直接輸入輸出指令直接輸入輸出指令 格式:格式:IN AL, PORT ;操作操作:AL (PORT) IN AX, PORT; AX (PORT+1,PORT) OUT PORT,AL; (PORT) AL OUT PORT,AX; (PORT+1,PORT) AX 注:注:PORT為輸入輸出端口號,范圍為為輸入輸出端口號,范圍為0255(00FFH) I/O 接口的基本結(jié)構(gòu)接口的基本結(jié)構(gòu) cpu 外外 圍圍 設(shè)設(shè) 備備 數(shù)據(jù)輸入寄存器數(shù)據(jù)輸入寄存器 數(shù)據(jù)輸出寄存器數(shù)據(jù)輸出寄存器 狀態(tài)寄存器狀態(tài)寄存器 控制寄存器控制寄存器 中斷控制邏輯中斷控制邏輯 數(shù)據(jù)總線數(shù)據(jù)總線

60、 地址總線地址總線 控制總線控制總線 I/O接口接口 間接輸入輸出指令間接輸入輸出指令 格式:格式:IN AL, DX; 操作:操作:AL (DX) IN AX, DX; AX (DX+1,DX) OUT DX,AL; (DX) AL OUT DX,AX; (DX+1,DX) AX 在間接輸入輸出指令之前,需將在間接輸入輸出指令之前,需將端口號端口號 DX. MOV DX,XXXXH; 輸入輸出指令的使用輸入輸出指令的使用 IIN 指令指令:用于從數(shù)據(jù)端口輸入數(shù)據(jù)或從狀態(tài):用于從數(shù)據(jù)端口輸入數(shù)據(jù)或從狀態(tài) 端口輸入狀端口輸入狀 態(tài)字態(tài)字. 例:例: IN AL , 28H; LOP : IN A

溫馨提示

  • 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

提交評論