




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第三章尋址方式與指令系統(tǒng)3.1數(shù)據(jù)類型及其存儲規(guī)則3.1.1基本數(shù)據(jù)類型及存儲
一個(gè)存儲單元——一個(gè)字節(jié)占用內(nèi)存的一個(gè)地址?;緮?shù)據(jù)類型:字、雙字、四字、雙四字字——兩個(gè)相鄰字節(jié)組成的16位二進(jìn)制;雙字——4個(gè)相鄰字節(jié)組成的32位二進(jìn)制數(shù);四字——8個(gè)相鄰字節(jié)組成的64位二進(jìn)制數(shù);雙四字——16個(gè)相鄰字節(jié)組成的128位二進(jìn)制數(shù)。高低高字低字高雙字低雙字字節(jié)字雙字四字高四字低四字雙四字707015815
031
1631
063
3263
0127
64NNN+1NN+2NN+4NN+8圖3.1基本數(shù)據(jù)類型的結(jié)構(gòu)形式9CH48H2BH6AH7AH1AHC3H23H72H92H8BH3AHABHA2H12H45H…NN+1N+2N+3N+4N+5N+6N+7N+8N+9N+10N+11N+12N+13N+14N+15單元地址圖3.2基本數(shù)據(jù)類型存儲規(guī)律
3.1.2數(shù)字?jǐn)?shù)據(jù)類型數(shù)據(jù)類型包含:無符號整數(shù)、帶符號整數(shù)和浮點(diǎn)數(shù)。1.無符號整數(shù)(范圍:0~2n-1)2.帶符號整數(shù)(范圍:-2n-1~+2n-1-1)帶符號整數(shù)是用2的補(bǔ)碼表示的二進(jìn)制值。規(guī)定操作數(shù)的最高位為符號位。3.浮點(diǎn)數(shù)浮點(diǎn)數(shù)據(jù)類型可分為三種:單精度浮點(diǎn)、雙精度浮點(diǎn)和雙 擴(kuò)展的精度浮點(diǎn)。
3.1.3指針數(shù)據(jù)類型在實(shí)方式下有兩種類型的指針:近指針(16位)和遠(yuǎn)指針(32 位)偏移Near指針310偏移段選擇子Far指針或邏輯地址3104732(a)(b)圖3.3指針數(shù)據(jù)類型(虛擬方式)3.1.4字符串、位及位串?dāng)?shù)據(jù)類型字符串包括字節(jié)串、字串和雙字串。它們分別是字節(jié)、字和雙字的相鄰序列。707070150150150310310310字節(jié)串字串雙字串NN+1N+MNN+2N+2MNN+4N+4M………圖3.4字節(jié)、字、雙字字符串?dāng)?shù)據(jù)類型3.2計(jì)算機(jī)指令格式指令包括兩部分:指令操作碼部分和地址碼部分。指令操作碼部分是給出該指令應(yīng)完成何種操作。地址碼部分是用來描述該指令的操作對象。指令格式可分為:零地址指令、一地址指令、二地址指令和三地址指令。零地址指令:只有操作碼部分,而沒有操作數(shù)的指令;一地址指令:只有目的操作數(shù)的單操作數(shù)指令;二地址指令:有兩個(gè)地址指出兩個(gè)操作數(shù)的地址;三地址指令優(yōu)點(diǎn):操作結(jié)束后,原兩個(gè)操作數(shù)的內(nèi)容均未被破壞;缺點(diǎn):增加一個(gè)地址后,使得指令碼加長,增加了存儲空間,取指時(shí)間變長。
3.2.1指令的助記符格式助記符格式可用以下通式表示:L:opD1,D2,D3其中:L是標(biāo)號,在標(biāo)識符后面跟有冒號(:)
op是助記符,具有相同功能的指令操作碼的保留名例如:
MOV
AX,[BX]操作碼的助記符目的操作數(shù)源操作數(shù)3.2.280x86指令編碼格式指令編碼格式包含操作碼和操作數(shù)兩部分。操作碼表示計(jì)算機(jī)執(zhí)行什么操作。操作數(shù)指明參與操作的數(shù)的本身,或規(guī)定了操作數(shù)的地址。圖3.58086CPU指令編碼的一般形式1)操作碼字節(jié)它是指令的第一字節(jié),規(guī)定指令的操作類型,是指令的必選字節(jié),字節(jié)內(nèi)容如下:
D7D6D5D4D3D2D1D0
操作碼字節(jié)尋址方式字節(jié)偏移量字節(jié)(1/2)立即數(shù)字節(jié)(1/2)OPDW
OP:表示指令操作碼,
D:表示指令中數(shù)據(jù)傳送的方向。
W:表示操作數(shù)類型。
2)尋址方式字節(jié)。它是指令的第二字節(jié),規(guī)定操作數(shù)的尋址方式。是指令的可選字節(jié),字節(jié)內(nèi)容如下:
D7D6D5D4D3D2D1D0
MOD:表示方式域,D7、D6位能表示4種不同的方式。
REG:表示寄存器域,D5、D4、D3位能表示8種不同的寄存器。
R/M:表示寄存器/存儲器域,D-2、D1、D0位能表示8種不同的寄存器/存儲器。MODREGR/M表3-1mod與r/m域所組合的尋址方式
MODR/M存儲器尋址寄存器尋址邏輯地址的計(jì)算公式W=0W=1MOD=00B
MOD=01BMOD=10BMOD=11B000001010011100101110111DS:[BX+SI]DS:[BX+DI]SS:[BP+SI]SS:[BP+DI]DS:[SI]DS:[DI]DS:[disp16]Ds:[BX]DS:[BX+SI+disp8]DS:[BX+DI+disp8]SS:[BP+SI+disp8]SS:[BP+DI+disp8]DS:[SI+disp8]DS:[DI+disp8]DS:[disp16+disp8]Ds:[BX+disp8]DS:[BX+SI+disp16]DS:[BX+DI+disp16]SS:[BP+SI+disp16]SS:[BP+DI+disp16]DS:[SI+disp16]DS:[DI+disp16]DS:[disp16+disp16]Ds:[BX+disp16]ALCLDLBLAHCHDHBHAXCXDXBXSPBPSIDI3)
偏移量字節(jié)是指令的第三、四字節(jié),是指令的可選字節(jié),給出了存儲器操作數(shù)的偏移量。4)
立即數(shù)字節(jié)是指令的可選字節(jié),給出了指令的立即數(shù)。3.38086CPU的尋址方式
尋址方式——尋找指令或操作數(shù)存放地址的方法。兩種尋址方式:一種是用來對操作數(shù)進(jìn)行尋址;另一種是 用來對轉(zhuǎn)移地址或調(diào)用地址進(jìn)行尋址,即 對指令地址進(jìn)行尋址。3.3.1操作數(shù)的尋址方式1、立即尋址立即數(shù)尋址特點(diǎn):指令執(zhí)行速度快。立即數(shù)只能是整數(shù),且只能作為源操作數(shù)。圖3-6立即數(shù)尋址過程代碼段1234┇MOVAX,3412H的指令代碼34AXAH
AL操作碼122、寄存器尋址方式寄存器尋址方式的優(yōu)點(diǎn):不但可以減少指令碼的長度,而且由 于操作數(shù)已存于寄存器中,執(zhí)行速度 較快。寄存器既能作為源操作數(shù),又能作為目的操作數(shù)。例如:MOVAX,CX
該指令將CX(源操作數(shù))的內(nèi)容傳送到AX寄存器(目的操作數(shù))中,其中源操作數(shù)CX,目的操作數(shù)AX都是寄存器尋址方式。
3、存儲器尋址指令給出了操作數(shù)在數(shù)據(jù)區(qū)中的地址信息。五種不同的存儲器尋址方式:(1)直接尋址方式例如:MOVAX,[7834H]
該指令將有效地址EA=8064H單元中的內(nèi)容傳送到AX寄存器中。若(DS)=2000H,則該指令源操作數(shù)的存儲單元的物理地址為20000H+7834H=27834H。代碼段操作碼34數(shù)據(jù)段┇2000DS20000+783427834
34
12AXMOVAX,[7834H]指令代碼┇78┇┇1234圖3-7直接尋址方式尋址過程(2)寄存器間接尋址操作數(shù)存放在存儲單元中。注意兩點(diǎn):一是寄存器中的內(nèi)容是操作數(shù)的有效地址,而不是 操作數(shù)本身; 二是只能用CPU中的基址寄存器BX、BP或變址寄存器 DI、SI來間接尋址。如果指令前面沒有用前綴指令指明操作數(shù)在哪一段,則通常默認(rèn)段寄存器為DS。即:物理地址=[DS]×10H+EA=[DS]×10H+或物理地址=[SS]×10H+[BP]例如:MOVAX,[DI]代碼段操作碼數(shù)據(jù)段1234┇┇1
2
3
4DS2
4
6
8BX12340+2468147A83412AXMOVAX,[BX]指令代碼┇圖3-8寄存器間接尋址示意圖(3)寄存器相對尋址操作數(shù)存放在存儲單元中物理地址=[DS]×10H+EA=[DS]×10H+或物理地址=[SS]×10H+[BP]例如:MOVBX,[DI+10H]基址尋址——用BX、BP為基址寄存器進(jìn)行尋址變址尋址——用SI、DI為變址寄存器進(jìn)行尋址代碼段操作碼24數(shù)據(jù)段267868┇1
2
3
4DS2
7
3
2BX12340
27321B2967826AXMOV
AX,[BX+6824H]指令代碼┇+6824┇圖3-9寄存器相對尋址操作過程(4)基址加變址尋址方式操作數(shù)存放在存儲單元中物理地址=[DS]×10H+EA=[DS]×10H+或物理地址=[SS]×10H+例如:ADDAX,[BX+SI]+1026
003412340代碼段操作碼數(shù)據(jù)段7856┇┇1
2
3
4DS1
0
2
6SI1339A5678AXMOVAX,[BX+SI]指令代碼┇0
0
3
4BX圖3-10基址加變址尋址方式操作過程(5)相對的基址和變址尋址方式操作數(shù)存放在存儲單元中物理地址=[DS]×10H+EA=[DS]×10H+或物理地址=[SS]×10H+例如:MOVAH,[BX+SI+2468H]MOVAH,[BX+SI+2468H]指令代碼
0110
010020000代碼段操作碼68數(shù)據(jù)段2623┇2
0
0
0DS0
11
0SI2267826AH┇0
1
0
0BX+246824┇圖3-11相對的基址和變址尋址方式操作過程過程4、I/O端口尋址操作數(shù)在I/O端口中。兩種編址方式:與存儲器統(tǒng)一編址方式獨(dú)立的I/O空間編址方式與存儲器統(tǒng)一編址方式,上述五種存儲器尋址方式均可采用。獨(dú)立的I/O空間編址方式則對I/O端口有兩種尋址方式:(l)直接端口尋址方式端口地址的尋址范圍是0~0FFH,端口地址直接由指令給出。(2)間接端口尋址方式端口地址的尋址范圍是0~0FFFFH,端口地址由DX寄存器給出。
3.3.2指令地址的尋址方式指令地址的尋址方式以下4種:(1)段內(nèi)直接尋址方式轉(zhuǎn)移的指令地址是由當(dāng)前的IP內(nèi)容和指令中規(guī)定的8位或16位偏移量之和給出。
+2101
0121
12340代碼段操作碼操作碼0121┇┇1
2
3
4CS14562段內(nèi)直接轉(zhuǎn)移指令代碼┇0
1
2
1IP目標(biāo)指令代碼圖3-12段內(nèi)直接尋址方式過程(2)段內(nèi)間接尋址方式轉(zhuǎn)移的指令地址是由用寄存器或一個(gè)字存儲單元的內(nèi)容給出。代碼段操作碼操作碼數(shù)據(jù)尋址方式┇┇CS段內(nèi)間接轉(zhuǎn)移指令代碼┇根據(jù)數(shù)據(jù)尋址方式計(jì)算EAIP目標(biāo)指令代碼Σ圖3-13段內(nèi)間接尋址方式過程(3)段間直接尋址方式轉(zhuǎn)移的指令地址是由指令碼字節(jié)直接給出。
3412+78560代碼段操作碼操作碼1234┇┇7856CS7B972段間直接轉(zhuǎn)移代碼┇3412IP目標(biāo)指令代碼5678圖3-14段間直接尋址過程(4)段間間接尋址方式轉(zhuǎn)移的指令地址由一個(gè)雙字存儲單元的內(nèi)容給出。
圖3-15段間間接尋址方式過程代碼段操作碼操作碼數(shù)據(jù)尋址方式┇┇段間間接轉(zhuǎn)移指令代碼┇目標(biāo)指令代碼DSCSIPΣΣ數(shù)據(jù)段┇12345678┇根據(jù)數(shù)據(jù)尋址方式計(jì)算EA3.48086指令系統(tǒng)指令系統(tǒng)按功能可分為6類:①數(shù)據(jù)傳送類指令;②算術(shù)運(yùn)算類指令;③邏輯運(yùn)算與移位類指令;④字符串指令;⑤控制轉(zhuǎn)移類指令;⑥處理器控制類指令。3.4.1數(shù)據(jù)傳送類指令分為4種:①通用數(shù)據(jù)傳送指令②累加器專用傳送指令③地址傳送指令④標(biāo)志傳送指令。1.通用數(shù)據(jù)傳送指令(1)最基本的傳送指令格式:MOV
目的操作數(shù),源操作數(shù)舉例:①M(fèi)OVBL,AL②
MOVDS,AX③
MOVDL,[DI]④MOV[BX],AX⑤
MOVDX,[1000]⑥
MOVBH,120⑦
MOVDX,1234H(2)堆棧操作指令堆棧是一種數(shù)據(jù)結(jié)構(gòu),是在內(nèi)存中開辟了一個(gè)比較特殊的存儲區(qū),這個(gè)區(qū)域中數(shù)據(jù)的存取采用“后進(jìn)先出”的原則。1000SS0018SP┇605040302010┇100181001A棧頂棧底1000SS0016SP┇605040302010┇ABCD100181001A棧頂棧底1000SS001ASP┇40302010┇1001A棧頂棧底10016圖3.16
8086系統(tǒng)椎棧及其操作(a)堆棧原始狀態(tài)(b)執(zhí)行pushAX(c)執(zhí)行POPAX
(AX)=CDABHPOPBX后的狀態(tài)(a)(b)(c)堆棧段——8086CPU在存儲器分段管理時(shí),劃分了一個(gè)專門的 堆棧區(qū)。格式:PUSH源操作數(shù)
POP目的操作數(shù)舉例:①PUSHBX②PUSHES③PUSHDS④PUSH[SI]⑤POPAX⑥POPBX⑦POSH[DI]
(3)交換指令實(shí)現(xiàn)兩個(gè)操作數(shù)之間進(jìn)行直接交換,方便程序的編寫。格式:XCHG目的操作數(shù),源操作數(shù)舉例:①XCHGAH,BL②
XCHGDX,BX③
XCHG[505H],AX2.累加器專用傳送指令累加器是8086CPU進(jìn)行數(shù)據(jù)傳輸?shù)暮诵摹S袃深愔噶睿孩佥斎耄敵鲋噶睥趽Q碼指令(1)輸入/輸出指令——工業(yè)控制中常用的指令格式:INAC,源操作數(shù)
OUT目的操作數(shù),AC舉例:①INAL,20H②OUTDX,AX
(2)換碼指令該指令用來將一個(gè)代碼值轉(zhuǎn)換成相應(yīng)的另一種代碼值,格式:XLAT代碼段D779數(shù)據(jù)段┇40┇780
3
0
0BX07
03008030707ALXLAT指令代碼┇+80000┇┇8
0
0
0DS803008030180307圖3-17
XLAT指令執(zhí)行過程舉例:若要將十進(jìn)制數(shù)0~9轉(zhuǎn)換成共陽極LED顯示的字形代碼,則列表如表3-2所示。十進(jìn)制數(shù)(BCD碼)字形代碼040H179H224H330H419H512H602H778H800H918H表3-2十進(jìn)制數(shù)0~9轉(zhuǎn)換成LED顯示的字形代碼
3.地址傳送指令它包括3條指令:①取有效地址指令LEA;②將地址指針裝入DS指令LDS;③將地址指針裝入ES指令LES。格式:LEA寄存器,源操作數(shù)
LDS寄存器,源操作數(shù)
LES寄存器,源操作數(shù)舉例:①LEAAX,[DI+1000]②LEAAX,[3721H]③LDSSI,[2130H]④LESDI,[SI]
代碼段C578數(shù)據(jù)段┇5600201
0
0
0DS初值+2130121307856SILDSSI,[2130H]指令代碼┇┇┇36213010000圖3-18
LDS指令執(zhí)行過程2
0
0
0DS終值4.標(biāo)志傳送指令標(biāo)志傳送指令包括4條指令:①標(biāo)志讀取指令LAHF②標(biāo)志設(shè)置指令SAHF③標(biāo)志寄存器壓入堆棧指令PUSHF④標(biāo)志寄存器從堆棧彈出指令POPF格式:LAHFSAHFPUSHFPOPF舉例:①PUSHF
②POPBX③
PUSHCX④
POPF
OFDFIFTFSFZFAF
PFCF15
11109876543210FLAGSLAHFSAHFAH圖3-19LAHF和SAHF指令傳送操作3.4.2算術(shù)運(yùn)算類指令1.加法指令格式:ADD目的操作數(shù),源操作數(shù)
ADC目的操作數(shù),源操作數(shù)
INC目的操作數(shù)舉例:①ADDBL,15H
②ADDBX,SI
③ADCCX,[BX]④INCDX
2.減法指令格式:SUB
目的操作數(shù),源操作數(shù)
SBB
目的操作數(shù),源操作數(shù)
DEC
目的操作數(shù)
NEG
目的操作數(shù)
CMP
目的操作數(shù),源操作數(shù)舉例:①SUBAX,BX
②SUBAH,110
③SBB
[BX],AX④DECBX
3.乘法指令格式:MUL
源操作數(shù)
IMUL
源操作數(shù)舉例:
①M(fèi)ULDL②
IMULBX
AL操作數(shù)乘積AH
ALAX操作數(shù)乘積DX
AX(a)(b)圖3-20乘法運(yùn)算操作數(shù)及其運(yùn)算結(jié)果間關(guān)系(a)字節(jié)操作數(shù)(b)字操作數(shù)4.除法指令格式:DIV
源操作數(shù)
IDIV
源操作數(shù)
CBW
CBD舉例:①DIVDL②
IDIVBX③
MOVAL,72H④
CBW⑤
MOVAX,8600H
⑥CWDALAH商余數(shù)操作數(shù)AX8位16位AXDX商余數(shù)操作數(shù)DXAX16位32位(a)(b)圖3-21除法運(yùn)算操作數(shù)及其運(yùn)算結(jié)果存放關(guān)系(a)字節(jié)操作數(shù)(b)字操作數(shù)5.BCD碼運(yùn)算的調(diào)整指令分為兩類:組合式BCD碼和分離式BCD碼格式:DAAAAADASAASAAMAAD舉例:①ADCAL,[SI]②
DAA③
ADDAL,[DI]④
AAA⑤SUBAL,[BX]
⑥D(zhuǎn)AS
⑦M(jìn)ULDL
⑧AAM
⑨AAD⑩
DIVBL3.4.3邏輯運(yùn)算和移位指令兩組處理指令:邏輯運(yùn)算指令和移位指令。1.邏輯運(yùn)算指令指令格式:AND目的操作數(shù),源操作數(shù)
OR目的操作數(shù),源操作數(shù)
NOT目的操作數(shù)
XOR目的操作數(shù),源操作數(shù)
TEST目的操作數(shù),源操作數(shù)舉例:①ANDBL,0FH②ORCX,[BX+DI]③XORAX,0FF00H④TESTBX,8000H⑤NOTDH2.移位指令分為兩大類:非循環(huán)移位指令和循環(huán)移位指令。(1)非循環(huán)移位指令指令格式:SAL目的操作數(shù),計(jì)數(shù)值
SHL目的操作數(shù),計(jì)數(shù)值
SAR目的操作數(shù),計(jì)數(shù)值
SHR目的操作數(shù),計(jì)數(shù)值舉例:①SALAX,1②SHLAX,CL③SARWORDPTR[SI],1④SHRDI,1CF0MSBLSBCFCFMSBLSBMSBLSB0(a)(b)(c)圖3-22非循環(huán)移位指令操作示意圖(a)SHL/SAL算術(shù)左移(b)SHR
邏輯右移(c)SAR算術(shù)右移(2)循環(huán)移位指令指令格式:ROL目的操作數(shù),計(jì)數(shù)值
ROR目的操作數(shù),計(jì)數(shù)值
RCL目的操作數(shù),計(jì)數(shù)值
RCR目的操作數(shù),計(jì)數(shù)值舉例:①ROLAX,1②RORAH,CL③RCLBYTEPTR[BX],1④RCRBX,1圖3.23循環(huán)移位移位指令操作示意圖(a)ROL不帶進(jìn)位循環(huán)左移(b)ROR不帶進(jìn)位循環(huán)右移(c)RCL帶進(jìn)位循環(huán)左移(d)RCR帶進(jìn)位循環(huán)右移CFMSBLSBCFCFMSBLSBMSBLSB(a)(b)(d)CFMSBLSB(c)3.4.4串操作指令串操作指令-----用一條指令實(shí)現(xiàn)對一串字符或數(shù)據(jù)的操作。串操作指令的特點(diǎn):①通過加重復(fù)前綴來實(shí)現(xiàn)串操作,規(guī)定CX寄存器存放要處理的字符串的元素個(gè)數(shù),即:字節(jié)數(shù)或字?jǐn)?shù)。②可以對字節(jié)串進(jìn)行操作,也可以對字串進(jìn)行操作。③串操作時(shí),SI和DI的增減規(guī)定由方向標(biāo)志DF設(shè)定,當(dāng)DF=1時(shí),SI和DI作自動減量修改,當(dāng)DF=0時(shí),SI和DI作自動增量修改,對字節(jié)串操作增減量為1,對字串操作增減量為2。④重復(fù)的字符串處理過程可以被中斷。5條串操作指令:串傳送指令MOVS、串比較指令CMPS、串檢索指 令SCAS、LODS串裝入指令和串存儲指令STOS。3條重復(fù)前綴:重復(fù)前綴REP、相等時(shí)重復(fù)REPE和不相等時(shí)重復(fù)REPNE。1.指令的重復(fù)前綴格式:REP串操作指令
REPE串操作指令或REPZ串操作指令
REPNE串操作指令或REPNZ串操作指令2.字符串指令(1)字符串傳送指令指令格式:MOVSBMOVSW舉例:①M(fèi)OVDS,2000H②
MOVES,3000H③
CLD④
MOVCX,20⑤
MOVSI,200H⑥
MOVDI,100H⑦
REPMOVSW
(2)字符串比較指令指令格式:CMPSBCMPSW舉例:編程比較從邏輯地址2000H:100H開始的10個(gè)字節(jié)與邏輯地址4000H:200H開始的10個(gè)字節(jié)是否對應(yīng)相等,相等則轉(zhuǎn)DONE。
MOVDS,2000H
MOVES,4000H
MOVDI,200H
MOVSI,100H
CLDMOVCX,10REPZCMPSBJZDONERETDONE┇(3)字符串檢索指令指令格式:SCASW
SCASB功能:SCASB/SCASW在字符串中查找一個(gè)與已知數(shù)值相同或不同的元素。舉例:從邏輯地址9000H:100H開始的10個(gè)單元中如果有一個(gè)單元的內(nèi)容為2CH,則BX加1。MOVES,9000HMOVDI,100HCLDMOVCX,10MOVAL,2CHREPNZSCASBJNZAAAINCBXAAA:┇(4)取字符串指令指令格式:LODSBLODSW舉例:將100H:20H單元開始10個(gè)字節(jié)的內(nèi)容均加5。CLD;方向標(biāo)志清0,SI遞增MOVCX,10;置計(jì)數(shù)初值10MOVDS,100H;置DS為100H
MOVSI,20H;置SI為20,作為初始地址指針LL1:
LODSB;取1個(gè)字節(jié)到AL中,并使SI增1
ADDAL,5;加5處理MOV[SI],AL;處理結(jié)果送回
DECCX;計(jì)數(shù)值減1JNZLL1;如未處理完,轉(zhuǎn)LL1HLT;暫停(5)存字符串指令指令格式:STOSB
STOSW舉例:將100H:20H開始的128個(gè)單元清0。CLD;清除方向標(biāo)志,DI遞增MOVCX,0080H;置計(jì)數(shù)初值128MOVES,100H;置ES為100HMOVDI,20H;置DI為20H,作為初始地址指針XORAL,AL;AL清0REPSTOSB;將128個(gè)字節(jié)清03.4.5控制轉(zhuǎn)移類指令5種轉(zhuǎn)移指令:無條件跳轉(zhuǎn)指令條件跳轉(zhuǎn)指令循環(huán)控制指令子程序調(diào)用和返回指令中斷指令
1.無條件跳轉(zhuǎn)指令指令格式:JMP
目標(biāo)地址舉例:①JMPSHORTMULTI②JMPNEARPRTMULT2③JMPCX④JMPFARPTRMULT3⑤
JMPDWORDPTR[SI]2.條件跳轉(zhuǎn)指令(1)簡單條件跳轉(zhuǎn)指令指令格式:JC目標(biāo)地址
JNC目標(biāo)地址
JZ目標(biāo)地址
JNZ目標(biāo)地址
JS目標(biāo)地址
JNS目標(biāo)地址JO目標(biāo)地址
JNO目標(biāo)地址
JP目標(biāo)地址
JNP目標(biāo)地址
JCXZ目標(biāo)地址舉例:用條件跳轉(zhuǎn)指令實(shí)現(xiàn)程序的循環(huán)
MOVSI,1000HMOVDI,2000HMOVCX,100KKK:MOVSBDECCXJNZKKK┇(2)帶符號數(shù)條件跳轉(zhuǎn)指令指令格式:JG/JNLE目標(biāo)地址
JGE/JNL目標(biāo)地址
JL/JNGE目標(biāo)地址
JLE/JNG目標(biāo)地址舉例:設(shè)有2個(gè)互不相等的帶符號字節(jié)數(shù)存放在以100H單元為首地址的數(shù)據(jù)緩沖區(qū)中,試編程把較大的數(shù)送200H單元中。
(3)無符號數(shù)條件跳轉(zhuǎn)指令指令格式:JB/JNAE目標(biāo)地址
JNB/JAE目標(biāo)地址
JA/JNBE目標(biāo)地址
JNA/JBE目標(biāo)地址
MOVSI,100H;首址100H送SIMOVAL,[SI];取第一個(gè)數(shù)據(jù)CMPAL,[SI+1];與第二個(gè)數(shù)相比較JGL1;如果比第二個(gè)數(shù)大,轉(zhuǎn)L1MOVAL,[SI+1];取第二個(gè)數(shù)L1:MOVSI,200H;將較大的數(shù)送至200HMOV[SI],AL3.循環(huán)控制指令指令格式:LOOP目標(biāo)地址
LOOPZ/LOOPE目標(biāo)地址
LOOPNZ/LOOPNE目標(biāo)地址舉例:編程求1+2+3+4+…+100MOVCX,100;置循環(huán)計(jì)數(shù)初值100MOVAX,0;求和寄存器AX清0,SUM:ADDAX,CX;把CX計(jì)數(shù)值累加入AXLOOPSUM;CX=CX-1,當(dāng)CX≠0時(shí)再循環(huán)RET;返回,結(jié)果在AX中
4.子程序調(diào)用和返回指令指令格式:CALL目標(biāo)地址
RETRET參數(shù)舉例:①CALL200H②
CALLBX③
CALL500H:600H④
CALLDWORDPTR[BX]⑤RET4主程序┇MOVAL,3AHCALLPROGMOVBX,AX┇CALLPROGMOVDX,AX┇子程序PROG:MOVBL,AL┇┇
RET圖3-24調(diào)用子程序的過程5.中斷指令3.4.6處理器控制類指令1.標(biāo)志操作指令指令格式:STC
CLC
CMC
STD
CLD
STI
CLI
2.8086CPU與外部事件同步指令指令格式:HLT
WAIT
ESC外部操作碼,源操作數(shù)
LOCK指令3.空操作指令指令格式:NOP3.580X86的尋址方式及新增的指令
3.5.1虛地址方式下的尋址方式1.立即數(shù)尋址方式例如:MOVEAX,12345678H
2.寄存器尋址方式
例如:MOVEAX,ECX
3.存儲器尋址方式偏移量可以由下列公式計(jì)算得到:
EA=基址十變址×比例因子十位移量基址——任何通用寄存器都可作為基址寄存器,其內(nèi)容即為基址。位移量——在指令操作碼后面的32位、16位或8位的數(shù)。變址——除了ESP寄存器外,任何通用寄存器都可以作為變址寄存器,其內(nèi)容即為變址值。比例因子——變址寄存器的值可以乘以一個(gè)比例因子,比例因子可以是1,2,4或8。屬性CS段界限值段基地址屬性DS段界限值段基地址屬性ES段界限值段基地址屬性FS段界限值段基地址屬性GS段界限值段基地址屬性SS段界限值段基地址描述符寄存器選擇子CSDSESFSGSSS基址寄存器變址寄存器比例因子1、2、4或8位移量存儲器┇┇目標(biāo)地址┇┇目標(biāo)地址┇┇圖3-25尋址計(jì)算圖解9種存儲器尋址方式(1)直接尋址方式例如:INCWORDPTR[1234567H](2)寄存器間接尋址方式例如:MOVEBX,[EAX]MOVAX,[ECX]MOVBL,[CX]
(3)基址尋址方式例如:MOVECX,[EAX+124]
MOVDX,[EBP+12345H]與8086CPU不同之處:①位移量可以是32位,②任何一個(gè)通用寄存器均可(4)變址尋址方式例如:MOVEAX,CNT[EBP]MOVEDX,CNT[EAX]與8086CPU不同之處:①位移量可以是32位,②任何一個(gè)通用寄存器均可看成基址寄存器(5)帶比例因子的變址尋址方式
EA=變址寄存器內(nèi)容*比例因子+位移量其中:比例因子可以為1、2、4或8例如:MOVEAX,CNT[ESI*4]
MOVEAX,VAR[EDI*2](6)基址加變址尋址方式EA=基址寄存器內(nèi)容+變址寄存器內(nèi)容例如1:MOVEAX,[EBX][EDI]MOVEAX,[ESP][EBP]例如2:MOVEAX,[EDX][EBP]MOVEAX,EBP][EDX]
(7)帶比例因子的變址再加基址尋址方式
EA=變址寄存器內(nèi)容*比例因子+基址例如:MOVEBX,[EDX*8][EBP]MOVEAX,EDX][EBP*2](8)帶位移量的基址加變址尋址方式
例如:ADDEDX,[EDI][EBP+123H]
EA=基址寄存器內(nèi)容+變址寄存器內(nèi)容+位移量(9)帶比例因子的變址加基址加位移量的尋址方式
例如:MOVEAX,[ESI*8][EBP+180H]EA=基址寄存器內(nèi)容+(變址寄存器內(nèi)容×比例因子)+位移量注意:在實(shí)模式下,操作數(shù)和地址的默認(rèn)長度是16位。3.5.280286CPU新增指令新增指令包括兩個(gè)方面,一是增加了一些新功能指令,二是對一些原有指令增強(qiáng)了其功能。80286CPU新增指令見表3-3.3-4。下面就其中一些常用指令進(jìn)行介紹1.?dāng)?shù)據(jù)傳送類指令指令格式:PUSH源操作數(shù)
PUSHA
POPA舉例:PUSH-5
2.算術(shù)運(yùn)算類指令指令格式:①IMUL寄存器,立即數(shù)②IMUL寄存器1,寄存器2或存儲器,立即數(shù)舉例:
IMULBX,50IMULDI,[BX+TABLE],3IMULBX,CX,345H
3.移位和循環(huán)移位指令指令格式:SHL目的操作數(shù),COUNT
SAL目的操作數(shù),COUNTSHR目的操作數(shù),COUNTSAR目的操作數(shù),COUNTROL目的操作數(shù),COUNTROR目的操作數(shù),COUNTRCL目的操作數(shù),COUNTRCR目的操作數(shù),COUNT舉例:
SHLDX,94.串輸入/輸出指令指令格式:INSBINSWOUTSBOUTSW舉例:要從端口地址為125H的外設(shè)端口中輸入200個(gè)字節(jié),存放在以邏輯地址2000H:100H為首址的內(nèi)存單元中,則可采用如下串輸入指令:
CLDMOVES,2000HLEADI,100HMOVCX,200MOVDX,125HREPINSB5.高級語言類指令指令格式:BOUND寄存器,存儲器地址
ENTER立即數(shù)1,立即數(shù)2LEAVE3.5.380386/80486CPU新增指令1.?dāng)?shù)據(jù)傳送類指令指令格式:MOVSX目的操作數(shù),源操作數(shù)
MOVZX目的操作數(shù),源操作數(shù)舉例:
MOVDX,0FB20HMOVSXEAX,DXMOVCL,0FBHMOVZXAX,CL2.算術(shù)運(yùn)算類指令格式:XADD目的操作數(shù),源操作數(shù)3.邏輯運(yùn)算與移位指令指令格式:
SHRD第一操作數(shù),第二操作數(shù),第三操作數(shù)
SHLD第一操作數(shù),第二操作數(shù),第三操作數(shù)
舉例:設(shè)CX中有內(nèi)容為1234H,DX中有內(nèi)容為5678H,則SHLDCX,DX,
7指令是把DX左移
7位,移入
CX中,結(jié)果(CX)=1A2BH4.位操作類指令指令格式:BT第一操作數(shù),第二操作數(shù)
BTC第一操作數(shù),第二操作數(shù)
BTR第一操作數(shù),第二操作數(shù)
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公章合同范本模板
- ui設(shè)計(jì)兼職合同范本
- 上游電子銷售合同范本
- 住宅抵押合同范本
- 借貸咨詢合同范本
- 農(nóng)村房車銷售合同范本
- 農(nóng)用器材采購合同范本
- 中美二十天然氣合同范例
- 個(gè)人售賣二手車合同范本
- 出納公司合同范本
- 重大事故隱患判定標(biāo)準(zhǔn)
- 新能源汽車驅(qū)動電機(jī)及控制系統(tǒng)檢修課件 學(xué)習(xí)情境1:驅(qū)動電機(jī)的認(rèn)知
- 2024年采購部年終總結(jié)
- 人教版(PEP)五年級英語下冊第一單元測試卷-Unit 1 My day 含答案
- 打深水井施工方案
- 企業(yè)名稱預(yù)先核準(zhǔn)通知書
- 統(tǒng)籌管理方案
- 建筑工程安全文明施工標(biāo)準(zhǔn)化圖集(附圖豐富)
- Unit 1 Travel教案-2023-2024學(xué)年高一下學(xué)期 中職英語高教版(2023修訂版)基礎(chǔ)模塊2
- DB3206T 1083-2024機(jī)關(guān)會議服務(wù)人員操作技術(shù)規(guī)范
- 習(xí)作《我的家人 》教案-2024-2025學(xué)年統(tǒng)編版語文四年級上冊
評論
0/150
提交評論