微處理器原理及應(yīng)用---第三章 尋址方式及指令系統(tǒng)_第1頁(yè)
微處理器原理及應(yīng)用---第三章 尋址方式及指令系統(tǒng)_第2頁(yè)
微處理器原理及應(yīng)用---第三章 尋址方式及指令系統(tǒng)_第3頁(yè)
微處理器原理及應(yīng)用---第三章 尋址方式及指令系統(tǒng)_第4頁(yè)
微處理器原理及應(yīng)用---第三章 尋址方式及指令系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩86頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第三章第三章 尋址方式與指令系統(tǒng)尋址方式與指令系統(tǒng)3.1 3.1 數(shù)據(jù)類型及其存儲(chǔ)規(guī)則數(shù)據(jù)類型及其存儲(chǔ)規(guī)則 3.1.13.1.1基本數(shù)據(jù)類型及存儲(chǔ)基本數(shù)據(jù)類型及存儲(chǔ) 一個(gè)存儲(chǔ)單元一個(gè)存儲(chǔ)單元一個(gè)字節(jié)占用內(nèi)存的一個(gè)地址。一個(gè)字節(jié)占用內(nèi)存的一個(gè)地址?;緮?shù)據(jù)類型:字、雙字、四字、雙四字基本數(shù)據(jù)類型:字、雙字、四字、雙四字字字兩個(gè)相鄰字節(jié)組成的兩個(gè)相鄰字節(jié)組成的1616位二進(jìn)制;位二進(jìn)制;雙字雙字4 4個(gè)相鄰字節(jié)組成的個(gè)相鄰字節(jié)組成的3232位二進(jìn)制數(shù);位二進(jìn)制數(shù);四字四字8 8個(gè)相鄰字節(jié)組成的個(gè)相鄰字節(jié)組成的6464位二進(jìn)制數(shù);位二進(jìn)制數(shù);雙四字雙四字1616個(gè)相鄰字節(jié)組成的個(gè)相鄰字節(jié)組成的128

2、128位二進(jìn)制數(shù)。位二進(jìn)制數(shù)。高高 低低高高 字字 低低 字字高高 雙雙 字字低低 雙雙 字字字節(jié)字節(jié)字字雙字雙字四字四字高高 四四 字字低低 四四 字字雙四雙四字字7 07 07 07 015 815 815 15 0 031 31 161631 31 0 063 63 323263 63 0 0127 127 64 64 N NN NN+1N+1N NN+2N+2N NN+4N+4N NN+8N+8圖圖3.1 3.1 基本數(shù)據(jù)類型的結(jié)構(gòu)形式基本數(shù)據(jù)類型的結(jié)構(gòu)形式9CH48H2BH6AH7AH1AHC3H23H72H92H8BH3AHABHA2H12H45HNN1N2N3N4N5N6N7N8

3、N9N10N11N12N13N14N+15N+15單元地址單元地址圖圖3.2 3.2 基本數(shù)據(jù)類型存儲(chǔ)規(guī)律基本數(shù)據(jù)類型存儲(chǔ)規(guī)律 3.1.2 3.1.2 數(shù)字?jǐn)?shù)據(jù)類型數(shù)字?jǐn)?shù)據(jù)類型數(shù)據(jù)類型包含:無符號(hào)整數(shù)、帶符號(hào)整數(shù)和浮點(diǎn)數(shù)。數(shù)據(jù)類型包含:無符號(hào)整數(shù)、帶符號(hào)整數(shù)和浮點(diǎn)數(shù)。1 1無符號(hào)整數(shù)(范圍:無符號(hào)整數(shù)(范圍:0 02 2n n-1-1)2 2帶符號(hào)整數(shù)(范圍:帶符號(hào)整數(shù)(范圍:2 2n-1 n-1 +2+2n-1n-1-1-1) 帶符號(hào)整數(shù)是用帶符號(hào)整數(shù)是用2 2的補(bǔ)碼表示的二進(jìn)制值。規(guī)定操作數(shù)的最的補(bǔ)碼表示的二進(jìn)制值。規(guī)定操作數(shù)的最高位為符號(hào)位。高位為符號(hào)位。3 3浮點(diǎn)數(shù)浮點(diǎn)數(shù) 浮點(diǎn)數(shù)據(jù)類型

4、可分為三種:?jiǎn)尉雀↑c(diǎn)、雙精度浮點(diǎn)和雙浮點(diǎn)數(shù)據(jù)類型可分為三種:?jiǎn)尉雀↑c(diǎn)、雙精度浮點(diǎn)和雙擴(kuò)展的精度浮點(diǎn)。擴(kuò)展的精度浮點(diǎn)。3.1.33.1.3指針數(shù)據(jù)類型指針數(shù)據(jù)類型在實(shí)方式下有兩種類型的指針:近指針(在實(shí)方式下有兩種類型的指針:近指針(1616位)和遠(yuǎn)指針(位)和遠(yuǎn)指針(3232位)位)偏偏 移移NearNear指針指針31 031 0偏偏 移移段選擇子段選擇子FarFar指針或邏輯地址指針或邏輯地址31 031 047 3247 32(a a)(b b)圖圖3.3 3.3 指針數(shù)據(jù)類型(虛擬方式)指針數(shù)據(jù)類型(虛擬方式)3.1.43.1.4字符串、位及位串?dāng)?shù)據(jù)類型字符串、位及位串?dāng)?shù)據(jù)類型字符

5、串包括字節(jié)串、字串和雙字串。字符串包括字節(jié)串、字串和雙字串。它們分別是字節(jié)、字和雙字的相鄰序列。它們分別是字節(jié)、字和雙字的相鄰序列。7 07 07 07 07 07 015 015 015 015 015 015 031 031 031 031 031 031 0字節(jié)串字節(jié)串字字 串串雙字串雙字串N NN+1N+1N+MN+MN NN+2N+2N+2MN+2MN NN+4N+4N+4MN+4M圖圖3.4 3.4 字節(jié)、字、雙字字符串?dāng)?shù)據(jù)類型字節(jié)、字、雙字字符串?dāng)?shù)據(jù)類型3.2 3.2 計(jì)算機(jī)指令格式計(jì)算機(jī)指令格式指令包括兩部分:指令操作碼部分和地址碼部分。指令包括兩部分:指令操作碼部分和地址碼部

6、分。指令操作碼部分是給出該指令應(yīng)完成何種操作。指令操作碼部分是給出該指令應(yīng)完成何種操作。地址碼部分是用來描述該指令的操作對(duì)象。地址碼部分是用來描述該指令的操作對(duì)象。指令格式可分為:零地址指令、一地址指令、二地址指令和三地址指令格式可分為:零地址指令、一地址指令、二地址指令和三地址指令。指令。零地址指令:只有操作碼部分,而沒有操作數(shù)的指令;零地址指令:只有操作碼部分,而沒有操作數(shù)的指令;一地址指令:只有目的操作數(shù)的單操作數(shù)指令;一地址指令:只有目的操作數(shù)的單操作數(shù)指令;二地址指令:有兩個(gè)地址指出兩個(gè)操作數(shù)的地址;二地址指令:有兩個(gè)地址指出兩個(gè)操作數(shù)的地址;三地址指令優(yōu)點(diǎn):操作結(jié)束后,原兩個(gè)操作數(shù)

7、的內(nèi)容均未被破壞;三地址指令優(yōu)點(diǎn):操作結(jié)束后,原兩個(gè)操作數(shù)的內(nèi)容均未被破壞; 缺點(diǎn):增加一個(gè)地址后,使得指令碼加長(zhǎng),增加了存儲(chǔ)缺點(diǎn):增加一個(gè)地址后,使得指令碼加長(zhǎng),增加了存儲(chǔ)空間,取指時(shí)間變長(zhǎng)??臻g,取指時(shí)間變長(zhǎng)。 3.2.1 3.2.1 指令的助記符格式指令的助記符格式助記符格式可用以下通式表示:助記符格式可用以下通式表示:L L:op D1, D2, D3op D1, D2, D3其中:其中:L L是標(biāo)號(hào),在標(biāo)識(shí)符后面跟有冒號(hào)(:)是標(biāo)號(hào),在標(biāo)識(shí)符后面跟有冒號(hào)(:)opop是助記符,具有相同功能的指令操作碼的保留名是助記符,具有相同功能的指令操作碼的保留名例如:例如: MOV MOV AX

8、AX, BXBX操作碼的助記符目的操作數(shù)源操作數(shù)操作碼的助記符目的操作數(shù)源操作數(shù)3.2.2 80 x863.2.2 80 x86指令編碼格式指令編碼格式指令編碼格式包含操作碼和操作數(shù)兩部分。指令編碼格式包含操作碼和操作數(shù)兩部分。操作碼表示計(jì)算機(jī)執(zhí)行什么操作。操作碼表示計(jì)算機(jī)執(zhí)行什么操作。操作數(shù)指明參與操作的數(shù)的本身,或規(guī)定了操作數(shù)的地址。操作數(shù)指明參與操作的數(shù)的本身,或規(guī)定了操作數(shù)的地址。圖圖 3.5 8086 CPU3.5 8086 CPU指令編碼的一般形式指令編碼的一般形式1)1)操作碼字節(jié)操作碼字節(jié) 它是指令的第一字節(jié),規(guī)定指令的操作類型,是它是指令的第一字節(jié),規(guī)定指令的操作類型,是指令

9、的必選字節(jié),字節(jié)內(nèi)容如下:指令的必選字節(jié),字節(jié)內(nèi)容如下: D D7 7 D D6 6 D D5 5 D D4 4 D D3 3 D D2 2 D D1 1 D D0 0 操作碼字節(jié)操作碼字節(jié)尋址方式字節(jié)尋址方式字節(jié)偏移量字節(jié)(偏移量字節(jié)(1/21/2)立即數(shù)字節(jié)(立即數(shù)字節(jié)(1/21/2)OP D WOP D WOPOP:表示指令操作碼,:表示指令操作碼,D D:表示指令中數(shù)據(jù)傳送的方向。:表示指令中數(shù)據(jù)傳送的方向。W W:表示操作數(shù)類型。:表示操作數(shù)類型。2)2)尋址方式字節(jié)。尋址方式字節(jié)。它是指令的第二字節(jié),規(guī)定操作數(shù)的尋址方它是指令的第二字節(jié),規(guī)定操作數(shù)的尋址方式。是指令的可選字節(jié),字節(jié)

10、內(nèi)容如下:式。是指令的可選字節(jié),字節(jié)內(nèi)容如下:D D7 7 D D6 6 D D5 5 D D4 4 D D3 3 D D2 2 D D1 1 D D0 0 MODMOD:表示方式域,:表示方式域,D D7 7、D D6 6位能表示位能表示4 4種不同的方式。種不同的方式。REGREG:表示寄存器域,:表示寄存器域,D D5 5、D D4 4、D D3 3位能表示位能表示8 8種不同的寄存器。種不同的寄存器。R/MR/M:表示寄存器存儲(chǔ)器域,:表示寄存器存儲(chǔ)器域,D D2 2、D D1 1、D D0 0位能表示位能表示8 8種不同種不同的寄存器存儲(chǔ)器。的寄存器存儲(chǔ)器。MODMODREGREGR

11、/MR/M表表3-1 mod3-1 mod與與r rm m域所組合的尋址方式域所組合的尋址方式 MOD MODR/MR/M存儲(chǔ)器尋址存儲(chǔ)器尋址寄存器尋址寄存器尋址邏輯地址的計(jì)算公式邏輯地址的計(jì)算公式W W0 0W W1 1MODMOD00B00BMODMOD01B01BMODMOD10B10BMODMOD11B11B000000001001010010011011100100101101110110111111DS:BX+SIDS:BX+SIDS:BX+DIDS:BX+DISS:BP+SISS:BP+SISS:BP+DISS:BP+DIDS:SIDS:SIDS:DIDS:DIDS:disp16

12、DS:disp16Ds:BXDs:BXDS:BX+SI+disp8DS:BX+SI+disp8DS:BX+DI +disp8DS:BX+DI +disp8SS:BP+SI +disp8SS:BP+SI +disp8SS:BP+DI +disp8SS:BP+DI +disp8DS:SI +disp8DS:SI +disp8DS:DI +disp8DS:DI +disp8DS:disp16 DS:disp16 +disp8+disp8Ds:BX +disp8Ds:BX +disp8DS:BX+SI+disp16DS:BX+SI+disp16DS:BX+DI +disp16DS:BX+DI +dis

13、p16SS:BP+SI +disp16SS:BP+SI +disp16SS:BP+DI +disp16SS:BP+DI +disp16DS:SI +disp16DS:SI +disp16DS:DI +disp16DS:DI +disp16DS:disp16 +disp16DS:disp16 +disp16Ds:BX +disp16Ds:BX +disp16ALALCLCLDLDLBLBLAHAHCHCHDHDHBHBHAXAXCXCXDXDXBXBXSPSPBPBPSISIDIDI3 3) 偏移量字節(jié)偏移量字節(jié) 是指令的第三、四字節(jié),是指令的可選字節(jié),是指令的第三、四字節(jié),是指令的可選字節(jié),

14、給出了存儲(chǔ)器操作數(shù)的偏移量。給出了存儲(chǔ)器操作數(shù)的偏移量。4 4) 立即數(shù)字節(jié)立即數(shù)字節(jié) 是指令的可選字節(jié),給出了指令的立即數(shù)。是指令的可選字節(jié),給出了指令的立即數(shù)。3.3 8086CPU3.3 8086CPU的尋址方式的尋址方式尋址方式尋址方式尋找指令或操作數(shù)存放地址的方法。尋找指令或操作數(shù)存放地址的方法。 兩種尋址方式:一種是用來對(duì)操作數(shù)進(jìn)行尋址;另一種是兩種尋址方式:一種是用來對(duì)操作數(shù)進(jìn)行尋址;另一種是 用來對(duì)轉(zhuǎn)移地址或調(diào)用地址進(jìn)行尋址,即用來對(duì)轉(zhuǎn)移地址或調(diào)用地址進(jìn)行尋址,即 對(duì)指令地址進(jìn)行尋址。對(duì)指令地址進(jìn)行尋址。3.3.1 3.3.1 操作數(shù)的尋址方式操作數(shù)的尋址方式1 1、 立即尋址

15、立即尋址立即數(shù)尋址特點(diǎn):指令執(zhí)行速度快。立即數(shù)尋址特點(diǎn):指令執(zhí)行速度快。立即數(shù)只能是整數(shù),且只能作為源操作數(shù)。立即數(shù)只能是整數(shù),且只能作為源操作數(shù)。圖圖3-63-6立即數(shù)尋址過程立即數(shù)尋址過程代碼段代碼段12123434MOV AX, 3412HMOV AX, 3412H的指令代碼的指令代碼3434AXAXAHAHALAL操作碼操作碼12122 2、 寄存器尋址方式寄存器尋址方式寄存器尋址方式的優(yōu)點(diǎn):不但可以減少指令碼的長(zhǎng)度,而且由寄存器尋址方式的優(yōu)點(diǎn):不但可以減少指令碼的長(zhǎng)度,而且由 于操作數(shù)已存于寄存器中,執(zhí)行速度于操作數(shù)已存于寄存器中,執(zhí)行速度 較快。較快。寄存器既能作為源操作數(shù),又能作

16、為目的操作數(shù)。寄存器既能作為源操作數(shù),又能作為目的操作數(shù)。例如:例如: MOV AXMOV AX,CXCX 該指令將該指令將CXCX(源操作數(shù))的內(nèi)容傳送到(源操作數(shù))的內(nèi)容傳送到AXAX寄存器(目的操寄存器(目的操作數(shù))中,其中源操作數(shù)作數(shù))中,其中源操作數(shù)CXCX,目的操作數(shù),目的操作數(shù)AXAX都是寄存器尋址方式。都是寄存器尋址方式。3 3、 存儲(chǔ)器尋址存儲(chǔ)器尋址指令給出了操作數(shù)在數(shù)據(jù)區(qū)中的地址信息。指令給出了操作數(shù)在數(shù)據(jù)區(qū)中的地址信息。五種不同的存儲(chǔ)器尋址方式:五種不同的存儲(chǔ)器尋址方式:(1 1)直接尋址方式)直接尋址方式例如:例如: MOV AXMOV AX,7834H7834H 該指

17、令將有效地址該指令將有效地址EA=8064HEA=8064H單元中的內(nèi)容傳送到單元中的內(nèi)容傳送到AXAX寄存器寄存器中。若(中。若(DSDS)=2000H=2000H,則該指令源操作數(shù)的存儲(chǔ)單元的物理,則該指令源操作數(shù)的存儲(chǔ)單元的物理地址為地址為20000H20000H7834H=27834H7834H=27834H。代碼段代碼段操作碼操作碼3434數(shù)據(jù)段數(shù)據(jù)段2 0 0 02 0 0 0DSDS2000020000+7834+783427834278343434 1212AXAXMOV AX,7834HMOV AX,7834H指指令代碼令代碼787812123434圖圖3 3- -7 7直接

18、尋址方式尋址過程直接尋址方式尋址過程(2 2)寄存器間接尋址)寄存器間接尋址操作數(shù)存放在存儲(chǔ)單元中。操作數(shù)存放在存儲(chǔ)單元中。注意兩點(diǎn):一是寄存器中的內(nèi)容是操作數(shù)的有效地址,而不是注意兩點(diǎn):一是寄存器中的內(nèi)容是操作數(shù)的有效地址,而不是 操作數(shù)本身;操作數(shù)本身; 二是只能用二是只能用CPUCPU中的基址寄存器中的基址寄存器BXBX、BPBP或變址寄存器或變址寄存器 DIDI、SISI來間接尋址。來間接尋址。如果指令前面沒有用前綴指令指明操作數(shù)在哪一段,則通常如果指令前面沒有用前綴指令指明操作數(shù)在哪一段,則通常默認(rèn)段寄存器為默認(rèn)段寄存器為DSDS。即:。即: 物理地址物理地址=DS=DS10H+EA

19、=DS10H+EA=DS10H+ 10H+ 或或 物理地址物理地址=SS=SS10H+BP10H+BP例如:例如: MOV AXMOV AX,DI DI 代碼段代碼段操作碼操作碼數(shù)據(jù)段數(shù)據(jù)段121234341 12 23 34 4DSDS2 24 46 68 8BXBX1234012340+2468+2468147A8147A834 1234 12AXAXMOV AX,BXMOV AX,BX指指令代碼令代碼圖圖3-8 3-8 寄存器間接尋址示意圖寄存器間接尋址示意圖(3(3)寄存器相對(duì)尋址)寄存器相對(duì)尋址操作數(shù)存放在存儲(chǔ)單元中操作數(shù)存放在存儲(chǔ)單元中物理地址物理地址=DS=DS10H+EA= D

20、S10H+EA= DS10H+ 10H+ 或或 物理地址物理地址=SS=SS10H+BP10H+BP例如:例如: MOV BXMOV BX,DI+10H DI+10H 基址尋址基址尋址用用BXBX、BPBP為基址寄存器進(jìn)行尋址為基址寄存器進(jìn)行尋址變址尋址變址尋址用用SISI、DIDI為變址寄存器進(jìn)行尋址為變址寄存器進(jìn)行尋址 代碼段代碼段操作碼操作碼2424數(shù)據(jù)段數(shù)據(jù)段2626787868681 12 23 34 4DSDS2 27 73 32 2BXBX1234012340273227321B2961B29678 2678 26AXAXMOVMOVAX,BXAX,BX6824H6824H指令代

21、碼指令代碼+6824+6824圖圖3-9 3-9 寄存器相對(duì)尋址操作過程寄存器相對(duì)尋址操作過程(4(4)基址加變址尋址方式)基址加變址尋址方式操作數(shù)存放在存儲(chǔ)單元中操作數(shù)存放在存儲(chǔ)單元中 物理地址物理地址= DS= DS10H+EA=DS10H+EA=DS10H+ 10H+ 或或 物理地址物理地址= SS= SS10H+ 10H+ 例如:例如: ADD AXADD AX,BX+SI BX+SI +1026+1026003400341234012340代碼段代碼段操作碼操作碼數(shù)據(jù)段數(shù)據(jù)段787856561 12 23 34 4DSDS1 10 02 26 6SISI1339A1339A56 78

22、56 78AXAXMOV AX, BXMOV AX, BXSISI指令代碼指令代碼0 00 03 34 4BXBX圖圖3-10 3-10 基址加變址尋址方式操作過程基址加變址尋址方式操作過程(5(5)相對(duì)的基址和變址尋址方式)相對(duì)的基址和變址尋址方式操作數(shù)存放在存儲(chǔ)單元中操作數(shù)存放在存儲(chǔ)單元中物理地址物理地址=DS=DS10H+EA=DS10H+EA=DS10H+10H+或或 物理地址物理地址=SS=SS10H + 10H + 例如:例如:MOV AHMOV AH,BXBXSISI2468H2468HMOV AH,BXMOV AH,BXSISI2468H2468H指令代碼指令代碼0110011

23、0010001002000020000代碼段代碼段操作碼操作碼6868數(shù)據(jù)段數(shù)據(jù)段262623232 20 00 00 0DSDS0 01 11 10 0SISI22678226782626AHAH0 01 10 00 0BXBX+2468+24682424圖圖3-11 3-11 相對(duì)的基址和變址尋址方式操作過程過程相對(duì)的基址和變址尋址方式操作過程過程4 4、 I IO O端口尋址端口尋址操作數(shù)在操作數(shù)在I IO O端口中。端口中。兩種編址方式:與存儲(chǔ)器統(tǒng)一編址方式兩種編址方式:與存儲(chǔ)器統(tǒng)一編址方式獨(dú)立的獨(dú)立的I IO O空間編址方式空間編址方式與存儲(chǔ)器統(tǒng)一編址方式,上述五種存儲(chǔ)器尋址方式均可

24、采用。與存儲(chǔ)器統(tǒng)一編址方式,上述五種存儲(chǔ)器尋址方式均可采用。獨(dú)立的獨(dú)立的I IO O空間編址方式則對(duì)空間編址方式則對(duì)I IO O端口有兩種尋址方式:端口有兩種尋址方式:(l(l)直接端口尋址方式)直接端口尋址方式端口地址的尋址范圍是端口地址的尋址范圍是 0 0 0FFH0FFH,端口地址直接由指令給,端口地址直接由指令給出。出。(2(2) 間接端口尋址方式間接端口尋址方式端口地址的尋址范圍是端口地址的尋址范圍是 0 0 0FFFFH0FFFFH,端口地址由,端口地址由DXDX寄存器寄存器給出。給出。3.3.2 3.3.2 指令地址的尋址方式指令地址的尋址方式指令地址的尋址方式以下指令地址的尋址

25、方式以下4 4種:種:(1) (1) 段內(nèi)直接尋址方式段內(nèi)直接尋址方式轉(zhuǎn)移的指令地址是由當(dāng)前的轉(zhuǎn)移的指令地址是由當(dāng)前的IPIP內(nèi)容和指令中規(guī)定的內(nèi)容和指令中規(guī)定的8 8位或位或1616位位偏移量之和給出。偏移量之和給出。+2101+2101012101211234012340代碼段代碼段操作碼操作碼操作碼操作碼010121211 12 23 34 4CSCS1456214562段內(nèi)直接轉(zhuǎn)移段內(nèi)直接轉(zhuǎn)移指令代碼指令代碼0 01 12 21 1IPIP目標(biāo)指令代碼目標(biāo)指令代碼圖圖3 3- -1 12 2段內(nèi)直接尋址方式過程段內(nèi)直接尋址方式過程代碼段代碼段操作碼操作碼操作碼操作碼數(shù)據(jù)尋數(shù)據(jù)尋址方式址

26、方式CSCS段內(nèi)間接轉(zhuǎn)段內(nèi)間接轉(zhuǎn)移指令代碼移指令代碼根據(jù)數(shù)據(jù)尋址根據(jù)數(shù)據(jù)尋址方式計(jì)算方式計(jì)算EAEAIPIP目標(biāo)指目標(biāo)指令代碼令代碼圖圖3 3- -1 13 3段內(nèi)間接尋址方式過程段內(nèi)間接尋址方式過程(3) (3) 段間直接尋址方式段間直接尋址方式 轉(zhuǎn)移的指令地址是由指令碼字節(jié)直接給出。轉(zhuǎn)移的指令地址是由指令碼字節(jié)直接給出。 34123412+78560+78560代碼段代碼段操作碼操作碼操作碼操作碼121234347 8 5 67 8 5 6CSCS7B9727B972段間直接段間直接轉(zhuǎn)移代碼轉(zhuǎn)移代碼3 4 1 23 4 1 2IPIP目標(biāo)指目標(biāo)指令代碼令代碼56567878圖圖3 3- -

27、1 14 4段間直接尋址過程段間直接尋址過程(4) (4) 段間間接尋址方式段間間接尋址方式 轉(zhuǎn)移的指令地址由一個(gè)雙字存儲(chǔ)單元的內(nèi)容給出轉(zhuǎn)移的指令地址由一個(gè)雙字存儲(chǔ)單元的內(nèi)容給出。圖圖3 3- -1 15 5段間間接尋址方式過程段間間接尋址方式過程代碼段代碼段操作碼操作碼操作碼操作碼數(shù)據(jù)尋數(shù)據(jù)尋址方式址方式段間間接轉(zhuǎn)段間間接轉(zhuǎn)移指令代碼移指令代碼目標(biāo)指目標(biāo)指令代碼令代碼DSDSCSCSIPIP數(shù)據(jù)段數(shù)據(jù)段1212343456567878根據(jù)數(shù)據(jù)尋址根據(jù)數(shù)據(jù)尋址方式計(jì)算方式計(jì)算EAEA3.4 80863.4 8086指令系統(tǒng)指令系統(tǒng)指令系統(tǒng)按功能可分為指令系統(tǒng)按功能可分為6 6類:類: 數(shù)據(jù)傳送

28、類指令;數(shù)據(jù)傳送類指令; 算術(shù)運(yùn)算類指令;算術(shù)運(yùn)算類指令; 邏輯運(yùn)算與移位類指令;邏輯運(yùn)算與移位類指令; 字符串指令;字符串指令; 控制轉(zhuǎn)移類指令;控制轉(zhuǎn)移類指令; 處理器控制類指令。處理器控制類指令。3.4.1 3.4.1 數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令分為分為4 4種:種: 通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令 累加器專用傳送指令累加器專用傳送指令 地址傳送指令地址傳送指令 標(biāo)志傳送指令。標(biāo)志傳送指令。1 1通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令(1(1)最基本的傳送指令)最基本的傳送指令格式:格式: MOV 目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù)舉例:舉例:MOVBL,ALMOVDS,AXMOVD

29、L,DIMOVBX,AXMOVDX,1000MOVBH,120MOVDX,1234H(2(2)堆棧操作指令)堆棧操作指令 堆棧是一種數(shù)據(jù)結(jié)構(gòu),是在內(nèi)存中開辟了一個(gè)比較特殊的堆棧是一種數(shù)據(jù)結(jié)構(gòu),是在內(nèi)存中開辟了一個(gè)比較特殊的存儲(chǔ)區(qū),這個(gè)區(qū)域中數(shù)據(jù)的存取采用存儲(chǔ)區(qū),這個(gè)區(qū)域中數(shù)據(jù)的存取采用“后進(jìn)先出后進(jìn)先出”的原則。的原則。10001000SSSS00180018SPSP60605050404030302020101010018100181001A1001A棧頂棧頂棧底棧底10001000SSSS00160016SPSP606050504040303020201010ABABCDCD1001810

30、0181001A1001A棧頂棧頂棧底棧底10001000SSSS001A001ASPSP40403030202010101001A1001A棧頂棧頂棧底棧底1001610016圖圖3.13.16 680868086系統(tǒng)椎棧及其操作系統(tǒng)椎棧及其操作( (a)a)堆棧原始狀態(tài)堆棧原始狀態(tài) ( (b)b)執(zhí)行執(zhí)行push AX (c)push AX (c)執(zhí)行執(zhí)行POP AXPOP AX ( (AX)=CDABH AX)=CDABH POP BX POP BX后的狀態(tài)后的狀態(tài)(a) (b) (c)(a) (b) (c)堆棧段堆棧段8086CPU在存儲(chǔ)器分段管理時(shí),劃分了一個(gè)專門的在存儲(chǔ)器分段管理時(shí)

31、,劃分了一個(gè)專門的堆棧區(qū)。堆棧區(qū)。格式:格式:PUSH源操作數(shù)源操作數(shù)POP目的操作數(shù)目的操作數(shù)舉例:舉例:PUSHBXPUSHESPUSHDSPUSHSIPOPAXPOPBX1.POSHDI(3)交換指令)交換指令實(shí)現(xiàn)兩個(gè)操作數(shù)之間進(jìn)行直接交換,方便程序的編寫。實(shí)現(xiàn)兩個(gè)操作數(shù)之間進(jìn)行直接交換,方便程序的編寫。格式:格式:XCHG目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù)舉例:舉例:XCHGAH,BLXCHGDX,BXXCHG505H,AX2累加器專用傳送指令累加器專用傳送指令累加器是累加器是8086CPU進(jìn)行數(shù)據(jù)傳輸?shù)暮诵?。進(jìn)行數(shù)據(jù)傳輸?shù)暮诵?。有兩類指令:有兩類指令:輸入輸出指令輸入輸出指令換

32、碼指令換碼指令(1)輸入輸出指令)輸入輸出指令工業(yè)控制中常用的指令工業(yè)控制中常用的指令格式:格式:INAC,源操作數(shù),源操作數(shù)OUT目的操作數(shù),目的操作數(shù),AC舉例:舉例:INAL,20HOUTDX,AX(2(2)換碼指令)換碼指令該指令用來將一個(gè)代碼值轉(zhuǎn)換成相應(yīng)的另一種代碼值,該指令用來將一個(gè)代碼值轉(zhuǎn)換成相應(yīng)的另一種代碼值,格式:格式: XLAT代碼段代碼段D7D77979數(shù)據(jù)段數(shù)據(jù)段404078780 03 30 00 0BXBX07070300030080307803070 70 7ALALXLATXLAT指令代碼指令代碼+80000+800008 80 00 00 0DSDS80300

33、8030080301803018030780307圖圖3 3- -1717XLATXLAT指令執(zhí)行過程指令執(zhí)行過程舉例:舉例:若要將十進(jìn)制數(shù)若要將十進(jìn)制數(shù)09轉(zhuǎn)換成共陽(yáng)極轉(zhuǎn)換成共陽(yáng)極LEDLED顯示的字形代碼,則列顯示的字形代碼,則列表如表表如表3-23-2所示。所示。十進(jìn)制數(shù)(十進(jìn)制數(shù)(BCDBCD碼)碼)字形代碼字形代碼0 040H40H1 179H79H2 224H24H3 330H30H4 419H19H5 512H12H6 602H02H7 778H78H8 800H00H9 918H18H表表3-2 3-2 十進(jìn)制數(shù)十進(jìn)制數(shù)09轉(zhuǎn)換成轉(zhuǎn)換成LEDLED顯示的字形代碼顯示的字形代碼3

34、地址傳送指令地址傳送指令它包括它包括3條指令:條指令:取有效地址指令取有效地址指令LEA;將地址指針裝入將地址指針裝入DS指令指令LDS;將地址指針裝入將地址指針裝入ES指令指令LES。格式:格式:LEA寄存器,源操作數(shù)寄存器,源操作數(shù)LDS寄存器,源操作數(shù)寄存器,源操作數(shù)LES寄存器,源操作數(shù)寄存器,源操作數(shù)舉例:舉例:LEAAX,DI+1000LEAAX,3721HLDSSI,2130HLESDI,SI 代碼段代碼段C5C57878數(shù)據(jù)段數(shù)據(jù)段5656000020201 10 00 00 0DSDS初值初值+2130+213012130121307 8 5 67 8 5 6SISILDS

35、SI, 2130HLDS SI, 2130H指令代碼指令代碼363621213030 10000 10000圖圖3 3- -1818LDSLDS指令執(zhí)行過程指令執(zhí)行過程2 20 00 00 0DSDS終值終值4標(biāo)志傳送指令標(biāo)志傳送指令標(biāo)志傳送指令包括標(biāo)志傳送指令包括4條指令:條指令:標(biāo)志讀取指令標(biāo)志讀取指令LAHF標(biāo)志設(shè)置指令標(biāo)志設(shè)置指令SAHF標(biāo)志寄存器壓入堆棧指令標(biāo)志寄存器壓入堆棧指令PUSHF標(biāo)志寄存器從堆棧彈出指令標(biāo)志寄存器從堆棧彈出指令POPF格式:格式:LAHFSAHFPUSHFPOPF舉例:舉例:PUSHFPOPBXPUSHCXPOPF OF DF IF TF SF ZF AF

36、OF DF IF TF SF ZF AF PF CFPF CF15 15 11 10 9 8 7 6 5 4 3 2 1 011 10 9 8 7 6 5 4 3 2 1 0FLAGSFLAGSLAHFLAHFSAHFSAHFAHAH圖圖3-19 LAHF3-19 LAHF和和SAHFSAHF指令傳送操作指令傳送操作3.4.2算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令1加法指令加法指令格式:格式:ADD目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù)ADC目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù)INC目的操作數(shù)目的操作數(shù)舉例:舉例:ADDBL,15HADDBX,SIADCCX,BXINCDX2 2減法指令減法指令格

37、式:格式:SUB 目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù) SBB 目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù) DEC 目的操作數(shù)目的操作數(shù) NEG 目的操作數(shù)目的操作數(shù) CMP 目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù)舉例:舉例:SUBAX,BXSUBAH,110SBBBX,AXDECBX3 3乘法指令乘法指令格式:格式:MUL 源操作數(shù)源操作數(shù) IMUL 源操作數(shù)源操作數(shù)舉例:舉例: MULDLIMULBX ALAL操作數(shù)操作數(shù)乘積乘積 AHAH ALALAXAX操作數(shù)操作數(shù)乘積乘積DX DX AXAX(a) (b)(a) (b)圖圖3-203-20乘法運(yùn)算操作數(shù)及其運(yùn)算結(jié)果間關(guān)系乘法運(yùn)算操

38、作數(shù)及其運(yùn)算結(jié)果間關(guān)系(a)(a)字節(jié)操作數(shù)字節(jié)操作數(shù) (b)(b)字操作數(shù)字操作數(shù)4 4除法指令除法指令格式:格式:DIV 源操作數(shù)源操作數(shù) IDIV 源操作數(shù)源操作數(shù) CBWCBD舉例:舉例:DIVDLIDIVBXMOVAL,72HCBWMOVAX,8600H CWDALALAHAH商商余數(shù)余數(shù)操作數(shù)操作數(shù)AXAX8 8位位1616位位AXAXDXDX商商余數(shù)余數(shù)操作數(shù)操作數(shù)DX AXDX AX1616位位3232位位(a) (b)(a) (b)圖圖3-213-21除法運(yùn)算操作數(shù)及其運(yùn)算結(jié)果存放關(guān)系除法運(yùn)算操作數(shù)及其運(yùn)算結(jié)果存放關(guān)系(a)(a)字節(jié)操作數(shù)字節(jié)操作數(shù) (b)(b)字操作數(shù)字操

39、作數(shù)5 5BCDBCD碼運(yùn)算的調(diào)整指令碼運(yùn)算的調(diào)整指令分為兩類:組合式分為兩類:組合式BCDBCD碼和分離式碼和分離式BCDBCD碼碼格式:格式: DAAAAADASAASAAMAAD舉例:舉例:ADCAL,SIDAAADDAL,DIAAASUBAL,BXDASMULDLAAMAADDIVBL3.4.3邏輯運(yùn)算和移位指令邏輯運(yùn)算和移位指令兩組處理指令:邏輯運(yùn)算指令和移位指令。兩組處理指令:邏輯運(yùn)算指令和移位指令。1邏輯運(yùn)算指令邏輯運(yùn)算指令指令格式:指令格式:AND目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù)OR目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù)NOT目的操作數(shù)目的操作數(shù)XOR目的操作數(shù),源操

40、作數(shù)目的操作數(shù),源操作數(shù)TEST目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù)舉例:舉例:ANDBL,0FHORCX,BX+DIXORAX,0FF00HTESTBX,8000HNOTDH2移位指令移位指令分為兩大類:非循環(huán)移位指令和循環(huán)移位指令。分為兩大類:非循環(huán)移位指令和循環(huán)移位指令。(1)非循環(huán)移位指令)非循環(huán)移位指令指令格式:指令格式:SAL目的操作數(shù),計(jì)數(shù)值目的操作數(shù),計(jì)數(shù)值SHL目的操作數(shù),計(jì)數(shù)值目的操作數(shù),計(jì)數(shù)值SAR目的操作數(shù),計(jì)數(shù)值目的操作數(shù),計(jì)數(shù)值SHR目的操作數(shù),計(jì)數(shù)值目的操作數(shù),計(jì)數(shù)值舉例:舉例:SALAX,1SHLAX,CLSARWORDPTRSI,1SHRDI,1CFCF0

41、 0MSBMSBLSBLSBCFCFCFCFMSBMSBLSBLSBMSBMSBLSBLSB0 0(a)(a)(b)(b)(c)(c)圖圖3-22 3-22 非循環(huán)移位指令操作示意圖非循環(huán)移位指令操作示意圖(a)SHL/SAL (a)SHL/SAL 算術(shù)左移算術(shù)左移 (b)SHR (b)SHR 邏輯右移邏輯右移 (c) SAR(c) SAR算術(shù)右移算術(shù)右移(2)循環(huán)移位指令)循環(huán)移位指令指令格式:指令格式:ROL目的操作數(shù),計(jì)數(shù)值目的操作數(shù),計(jì)數(shù)值ROR目的操作數(shù),計(jì)數(shù)值目的操作數(shù),計(jì)數(shù)值RCL目的操作數(shù),計(jì)數(shù)值目的操作數(shù),計(jì)數(shù)值RCR目的操作數(shù),計(jì)數(shù)值目的操作數(shù),計(jì)數(shù)值舉例:舉例:ROLAX

42、,1RORAH,CLRCLBYTEPTRBX,1RCRBX,1圖圖3.23 3.23 循環(huán)移位移位指令操作示意圖循環(huán)移位移位指令操作示意圖(a)ROL(a)ROL不帶進(jìn)位循環(huán)左移不帶進(jìn)位循環(huán)左移 (b)ROR(b)ROR不帶進(jìn)位循環(huán)右移不帶進(jìn)位循環(huán)右移 (c)RCL(c)RCL帶進(jìn)位循環(huán)左移帶進(jìn)位循環(huán)左移 (d)RCR(d)RCR帶進(jìn)位循環(huán)右移帶進(jìn)位循環(huán)右移CFCFMSBMSBLSBLSBCFCFCFCFMSBMSBLSBLSBMSBMSBLSBLSB(a)(a)(b)(b)(d)(d)CFCFMSBMSBLSBLSB(c)(c)3.4.4 3.4.4 串操作指令串操作指令串操作指令串操作指令

43、-用一條指令實(shí)現(xiàn)對(duì)一串字符或數(shù)據(jù)的操作。用一條指令實(shí)現(xiàn)對(duì)一串字符或數(shù)據(jù)的操作。串操作指令的特點(diǎn):串操作指令的特點(diǎn): 通過加重復(fù)前綴來實(shí)現(xiàn)串操作,規(guī)定通過加重復(fù)前綴來實(shí)現(xiàn)串操作,規(guī)定CXCX寄存器存放要處理的寄存器存放要處理的字符串的元素個(gè)數(shù),即:字節(jié)數(shù)或字?jǐn)?shù)。字符串的元素個(gè)數(shù),即:字節(jié)數(shù)或字?jǐn)?shù)。 可以對(duì)字節(jié)串進(jìn)行操作,也可以對(duì)字串進(jìn)行操作??梢詫?duì)字節(jié)串進(jìn)行操作,也可以對(duì)字串進(jìn)行操作。 串操作時(shí),串操作時(shí),SISI和和DIDI的增減規(guī)定由方向標(biāo)志的增減規(guī)定由方向標(biāo)志DFDF設(shè)定,當(dāng)設(shè)定,當(dāng)DF=1DF=1時(shí),時(shí),SISI和和DIDI作自動(dòng)減量修改,當(dāng)作自動(dòng)減量修改,當(dāng)DF=0DF=0時(shí),時(shí),SI

44、SI和和DIDI作自動(dòng)增量修改,對(duì)作自動(dòng)增量修改,對(duì)字節(jié)串操作增減量為字節(jié)串操作增減量為1 1,對(duì)字串操作增減量為,對(duì)字串操作增減量為2 2。 重復(fù)的字符串處理過程可以被中斷。重復(fù)的字符串處理過程可以被中斷。5 5條串操作指令:串傳送指令條串操作指令:串傳送指令MOVSMOVS、串比較指令、串比較指令CMPSCMPS、串檢索指、串檢索指 令令SCASSCAS、LODSLODS串裝入指令和串存儲(chǔ)指令串裝入指令和串存儲(chǔ)指令STOSSTOS。3條重復(fù)前綴:重復(fù)前綴條重復(fù)前綴:重復(fù)前綴REP、相等時(shí)重復(fù)、相等時(shí)重復(fù)REPE和不和不相等時(shí)重復(fù)相等時(shí)重復(fù)REPNE。1指令的重復(fù)前綴指令的重復(fù)前綴格式:格式

45、:REP串操作指令串操作指令REPE串操作指令串操作指令或或REPZ串操作指令串操作指令REPNE串操作指令串操作指令或或REPNZ串操作指令串操作指令2 2字符串指令字符串指令(1(1)字符串傳送指令)字符串傳送指令指令格式:指令格式:MOVSBMOVSW舉例:舉例:MOVDS,2000HMOVES,3000HCLDMOVCX,20MOVSI,200HMOVDI,100HREPMOVSW(2)字符串比較指令)字符串比較指令指令格式:指令格式:CMPSBCMPSW舉例:舉例:編程比較從邏輯地址編程比較從邏輯地址2000H:100H開始的開始的10個(gè)字節(jié)與邏輯地個(gè)字節(jié)與邏輯地址址4000H:20

46、0H開始的開始的10個(gè)字節(jié)是否對(duì)應(yīng)相等,相等則轉(zhuǎn)個(gè)字節(jié)是否對(duì)應(yīng)相等,相等則轉(zhuǎn)DONE。MOVDS,2000HMOVES,4000HMOVDI,200HMOVSI,100HCLDMOVCX,10REPZCMPSBJZDONERETDONE(3)字符串檢索指令)字符串檢索指令指令格式:指令格式:SCASWSCASB功能:功能:SCASB/SCASW在字符串中查找一個(gè)與已知數(shù)值在字符串中查找一個(gè)與已知數(shù)值相同或不同的元素。相同或不同的元素。舉例:舉例:從邏輯地址從邏輯地址9000H:100H開始的開始的10個(gè)單元中如果有一個(gè)單元個(gè)單元中如果有一個(gè)單元的內(nèi)容為的內(nèi)容為2CH,則,則BX加加1。MOVE

47、S,9000HMOVDI,100HCLDMOVCX,10MOVAL,2CHREPNZSCASBJNZAAAINCBXAAA:(4)取字符串指令取字符串指令指令格式:指令格式:LODSBLODSW舉例:將100H:20H單元開始10個(gè)字節(jié)的內(nèi)容均加5。 CLD ;方向標(biāo)志清0,SI遞增 MOV CX,10 ;置計(jì)數(shù)初值10 MOV DS,100H ;置DS為100H MOV SI,20H ;置SI為20,作為初始地址指針LL1: LODSB ;取1個(gè)字節(jié)到AL中,并使SI增1 ADD AL,5 ;加5處理 MOV S I,AL ;處理結(jié)果送回 DEC CX ;計(jì)數(shù)值減1 JNZ LL1 ;如未處

48、理完,轉(zhuǎn)LL1 HLT ;暫停(5)存字符串指令)存字符串指令指令格式:指令格式:STOSBSTOSW舉例:舉例:將將100H:20H開始的開始的128個(gè)單元清個(gè)單元清0。CLD;清除方向標(biāo)志,;清除方向標(biāo)志,DI遞增遞增MOVCX,0080H;置計(jì)數(shù)初值;置計(jì)數(shù)初值128MOVES,100H;置;置ES為為100HMOVDI,20H;置;置DI為為20H,作為初始地址指針,作為初始地址指針XORAL,AL;AL清清0REPSTOSB;將;將128個(gè)字節(jié)清個(gè)字節(jié)清03.4.5 3.4.5 控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令5 5種轉(zhuǎn)移指令:種轉(zhuǎn)移指令:無條件跳轉(zhuǎn)指令無條件跳轉(zhuǎn)指令條件跳轉(zhuǎn)指令條件跳轉(zhuǎn)

49、指令循環(huán)控制指令循環(huán)控制指令子程序調(diào)用和返回指令子程序調(diào)用和返回指令中斷指令中斷指令1 1無條件跳轉(zhuǎn)指令無條件跳轉(zhuǎn)指令指令格式:指令格式:JMP 目標(biāo)地址目標(biāo)地址舉例:舉例:JMPSHORTMULTIJMPNEARPRTMULT2JMPCXJMPFARPTRMULT3JMPDWORDPTRSI2條件跳轉(zhuǎn)指令條件跳轉(zhuǎn)指令(1)簡(jiǎn)單條件跳轉(zhuǎn)指令)簡(jiǎn)單條件跳轉(zhuǎn)指令指令格式:指令格式:JC目標(biāo)地址目標(biāo)地址JNC目標(biāo)地址目標(biāo)地址JZ目標(biāo)地址目標(biāo)地址JNZ目標(biāo)地址目標(biāo)地址JS目標(biāo)地址目標(biāo)地址JNS目標(biāo)地址目標(biāo)地址JO目標(biāo)地址目標(biāo)地址JNO目標(biāo)地址目標(biāo)地址JP目標(biāo)地址目標(biāo)地址JNP目標(biāo)地址目標(biāo)地址JCXZ目

50、標(biāo)地址目標(biāo)地址舉例:用條件跳轉(zhuǎn)指令實(shí)現(xiàn)程序的循環(huán)舉例:用條件跳轉(zhuǎn)指令實(shí)現(xiàn)程序的循環(huán)MOVSI,1000HMOVDI,2000HMOVCX,100KKK:MOVSBDECCXJNZKKK(2)帶符號(hào)數(shù)條件跳轉(zhuǎn)指令)帶符號(hào)數(shù)條件跳轉(zhuǎn)指令指令格式:指令格式:JG/JNLE目標(biāo)地址目標(biāo)地址JGE/JNL目標(biāo)地址目標(biāo)地址JL/JNGE目標(biāo)地址目標(biāo)地址JLE/JNG目標(biāo)地址目標(biāo)地址舉例:設(shè)有2個(gè)互不相等的帶符號(hào)字節(jié)數(shù)存放在以100H單元為首地址的數(shù)據(jù)緩沖區(qū)中,試編程把較大的數(shù)送200H單元中。(3)無符號(hào)數(shù)條件跳轉(zhuǎn)指令)無符號(hào)數(shù)條件跳轉(zhuǎn)指令指令格式:指令格式:JB/JNAE目標(biāo)地址目標(biāo)地址JNB/JAE目

51、標(biāo)地址目標(biāo)地址JA/JNBE目標(biāo)地址目標(biāo)地址JNA/JBE目標(biāo)地址目標(biāo)地址MOVSI,100H;首址;首址100H送送SIMOVAL,SI;取第一個(gè)數(shù)據(jù);取第一個(gè)數(shù)據(jù)CMPAL,SI+1;與第二個(gè)數(shù)相比較;與第二個(gè)數(shù)相比較JGL1;如果比第二個(gè)數(shù)大,轉(zhuǎn);如果比第二個(gè)數(shù)大,轉(zhuǎn)L1MOVAL,SI+1;取第二個(gè)數(shù);取第二個(gè)數(shù)L1:MOVSI,200H;將較大的數(shù)送至;將較大的數(shù)送至200HMOVSI,AL3循環(huán)控制指令循環(huán)控制指令指令格式:指令格式:LOOP目標(biāo)地址目標(biāo)地址LOOPZLOOPE目標(biāo)地址目標(biāo)地址LOOPNZLOOPNE目標(biāo)地址目標(biāo)地址舉例:舉例:編程求1+2+3+4+ +100 MO

52、V CX,100 ;置循環(huán)計(jì)數(shù)初值100 MOV AX,0 ;求和寄存器AX清0, SUM:ADD AX,CX ;把CX計(jì)數(shù)值累加入AX LOOP SUM ;CX=CX-1, 當(dāng)CX0時(shí)再循環(huán) RET ;返回,結(jié)果在AX中4子程序調(diào)用和返回指令子程序調(diào)用和返回指令指令格式:指令格式:CALL目標(biāo)地址目標(biāo)地址RETRET參數(shù)參數(shù)舉例:舉例:CALL200HCALLBXCALL500H:600HCALLDWORDPTRBXRET4主程序主程序MOV AL,3AHMOV AL,3AHCALL PROGCALL PROGMOV BX,AXMOV BX,AXCALL PROGCALL PROGMOV D

53、X,AXMOV DX,AX子程序子程序PROG:MOV BL,ALPROG:MOV BL,AL RETRET圖圖3-24 3-24 調(diào)用子程序的過程調(diào)用子程序的過程5中斷指令中斷指令3.4.6處理器控制類指令處理器控制類指令1標(biāo)志操作指令標(biāo)志操作指令指令格式:指令格式:STCCLCCMCSTDCLDSTICLI28086CPU與外部事件同步指令與外部事件同步指令指令格式:指令格式:HLTWAITESC外部操作碼,源操作數(shù)外部操作碼,源操作數(shù)LOCK指令指令3空操作指令空操作指令指令格式:指令格式:NOP3.580X86的尋址方式及新增的指令的尋址方式及新增的指令3.5.1虛地址方式下的尋址方式

54、虛地址方式下的尋址方式1立即數(shù)尋址方式立即數(shù)尋址方式例如:例如:MOVEAX,12345678H2寄存器尋址方式寄存器尋址方式例如:例如:MOVEAX,ECX3存儲(chǔ)器尋址方式存儲(chǔ)器尋址方式偏移量可以由下列公式計(jì)算得到:偏移量可以由下列公式計(jì)算得到:EA基址十變址基址十變址比例因子十位移量比例因子十位移量基址基址任何通用寄存器都可作為基址寄存器,其內(nèi)容即為基址。任何通用寄存器都可作為基址寄存器,其內(nèi)容即為基址。位移量位移量在指令操作碼后面的在指令操作碼后面的32位、位、16位或位或8位的數(shù)。位的數(shù)。變址變址除了除了ESP寄存器外,任何通用寄存器都可以作為變址寄存器,其寄存器外,任何通用寄存器都可

55、以作為變址寄存器,其內(nèi)容即為變址值。內(nèi)容即為變址值。比例因子比例因子變址寄存器的值可以乘以一個(gè)比例因子,比例因子可以是變址寄存器的值可以乘以一個(gè)比例因子,比例因子可以是1,2,4或或8。屬性屬性CSCS段界限值段界限值段基地址段基地址屬性屬性DSDS段界限值段界限值段基地址段基地址屬性屬性ESES段界限值段界限值段基地址段基地址屬性屬性FSFS段界限值段界限值段基地址段基地址屬性屬性GSGS段界限值段界限值段基地址段基地址屬性屬性SSSS段界限值段界限值段基地址段基地址描述符寄存器描述符寄存器選擇子選擇子CSCSDSDSESESFSFSGSGSSSSS基址寄存器基址寄存器變址寄存器變址寄存器比

56、例因子比例因子1 1、2 2、4 4或或8 8位移量位移量存儲(chǔ)器存儲(chǔ)器目標(biāo)地址目標(biāo)地址目標(biāo)地址目標(biāo)地址圖圖3-25 3-25 尋址計(jì)算圖解尋址計(jì)算圖解9種存儲(chǔ)器尋址方式種存儲(chǔ)器尋址方式(1)直接尋址方式)直接尋址方式例如:例如:INCWORDPTR1234567H(2)寄存器間接尋址方式)寄存器間接尋址方式例如:例如:MOVEBX,EAXMOVAX,ECXMOVBL,CX(3)基址尋址方式)基址尋址方式例如:例如:MOVECX,EAX124MOVDX,EBP12345H與與8086CPU不同之處:不同之處:位移量可以是位移量可以是32位,位,任何一個(gè)通用任何一個(gè)通用寄存器均可寄存器均可(4)變

57、址尋址方式)變址尋址方式例如:例如:MOVEAX,CNTEBPMOVEDX,CNTEAX與與8086CPU不同之處:不同之處:位移量可以是位移量可以是32位,位,任何任何一個(gè)通用寄存器均可看成基址寄存器一個(gè)通用寄存器均可看成基址寄存器(5)帶比例因子的變址尋址方式)帶比例因子的變址尋址方式EA=變址寄存器內(nèi)容變址寄存器內(nèi)容*比例因子比例因子+位移量位移量其中:比例因子可以為其中:比例因子可以為1、2、4或或8例如:例如:MOVEAX,CNTESI*4MOVEAX,VAREDI*2(6)基址加變址尋址方式)基址加變址尋址方式EA=基址寄存器內(nèi)容基址寄存器內(nèi)容+變址寄存器內(nèi)容變址寄存器內(nèi)容例如例如

58、1:MOVEAX,EBXEDIMOVEAX,ESPEBP例如例如2:MOVEAX,EDXEBPMOVEAX,EBPEDX (7)帶比例因子的變址再加基址尋址方式)帶比例因子的變址再加基址尋址方式EA=變址寄存器內(nèi)容變址寄存器內(nèi)容*比例因子比例因子+基址基址例如:例如:MOVEBX,EDX*8EBPMOVEAX,EDXEBP*2(8)帶位移量的基址加變址尋址方式)帶位移量的基址加變址尋址方式例如:例如:ADDEDX,EDIEBP123HEA=基址寄存器內(nèi)容基址寄存器內(nèi)容+變址寄存器內(nèi)容變址寄存器內(nèi)容+位移量位移量(9)帶比例因子的變址加基址加位移量的尋址方式)帶比例因子的變址加基址加位移量的尋址

59、方式例如:例如:MOVEAX,ESI*8EBP180HEA=基址寄存器內(nèi)容基址寄存器內(nèi)容+(變址寄存器內(nèi)容(變址寄存器內(nèi)容比例因子)比例因子)+位移量位移量注意:在實(shí)模式下,操作數(shù)和地址的默認(rèn)長(zhǎng)度是注意:在實(shí)模式下,操作數(shù)和地址的默認(rèn)長(zhǎng)度是16位。位。3.5.280286CPU新增指令新增指令新增指令包括兩個(gè)方面,一是增加了一些新功能指新增指令包括兩個(gè)方面,一是增加了一些新功能指令,二是對(duì)一些原有指令增強(qiáng)了其功能。令,二是對(duì)一些原有指令增強(qiáng)了其功能。80286CPU新增指令見表新增指令見表33.34。下面就其中一些常用指令進(jìn)行。下面就其中一些常用指令進(jìn)行介紹介紹1數(shù)據(jù)傳送類指令數(shù)據(jù)傳送類指令指

60、令格式:指令格式:PUSH源操作數(shù)源操作數(shù)PUSHAPOPA舉例:舉例:PUSH52算術(shù)運(yùn)算類指令算術(shù)運(yùn)算類指令指令格式:指令格式:IMUL寄存器,立即數(shù)寄存器,立即數(shù)IMUL寄存器寄存器1,寄存器,寄存器2或存儲(chǔ)器,立即數(shù)或存儲(chǔ)器,立即數(shù)舉例:舉例:IMULBX,50IMULDI,BXTABLE,3IMULBX,CX,345H3移位和循環(huán)移位指令移位和循環(huán)移位指令指令格式:指令格式:SHL目的操作數(shù),目的操作數(shù),COUNTSAL目的操作數(shù),目的操作數(shù),COUNTSHR目的操作數(shù),目的操作數(shù),COUNTSAR目的操作數(shù),目的操作數(shù),COUNTROL目的操作數(shù),目的操作數(shù),COUNTROR目的操

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論