版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1第3章8086的指令系統(tǒng)2幾個(gè)概念8086的尋址方式8086指令集主要內(nèi)容3CPU內(nèi)部14個(gè)16位寄存器8086CPU內(nèi)部寄存器問(wèn)4一、幾個(gè)概念指令:是指使計(jì)算機(jī)執(zhí)行某種操作的命令。指令系統(tǒng):是指處理器所能成的所有指令的集合------指令集,每種計(jì)算機(jī)都有組它的指令系統(tǒng)。機(jī)器指令:用二進(jìn)制編碼(代碼各種組合)形式表示一條指令稱為機(jī)器指令。通常指令以二進(jìn)制編碼的形式存放在存儲(chǔ)器中,CPU可以直接識(shí)別機(jī)器指令。符號(hào)指令:用符號(hào)表示的指令稱為符號(hào)指令。5指令的組成:任意一條指令都由操作碼和操作數(shù)構(gòu)成。操作碼規(guī)定了計(jì)算機(jī)執(zhí)行什么樣操作。操作數(shù)它指明了操作的對(duì)象和操作對(duì)象的地址。6一條指令要解決的兩個(gè)問(wèn)題:要指出進(jìn)行什么操作——操作碼;要指出操作數(shù)和操作結(jié)果放在何處——尋址方式。因此:7組成操作數(shù)操作碼CPU指令[標(biāo)號(hào):]指令助記符
[操作數(shù)[,操作數(shù)]][;注釋]尋找操作數(shù)或操作數(shù)地址的方式指明了操作的對(duì)象和操作對(duì)象的地址規(guī)定了計(jì)算機(jī)執(zhí)行什么樣操作任意一條指令都由操作碼和操作數(shù)構(gòu)成格式尋址方式?8如數(shù)據(jù)傳輸指令,格式
:MOV目的操作數(shù),源操作數(shù)(助記符)操作碼部分操作數(shù)可見(jiàn),指令中的操作數(shù)有源操作數(shù)和目的操作數(shù)之分如:MOVAX1234H9二、
8086的尋址方式
主要內(nèi)容:8086的尋址方式說(shuō)明尋址方式介紹立即數(shù)尋址;寄存器尋址;直接尋址;寄存器間接尋址;基址/變址尋址;基址+變址尋址;I/O端口尋址108086的尋址方式說(shuō)明尋址方式:是尋找操作數(shù)或操作數(shù)地址的方式。存放位置:8086指令中的操作數(shù)有三種可能的存放位置。①操作數(shù)在指令中,即指令的操作數(shù)部分就是操作數(shù)本身,這種操作數(shù)叫立即操作數(shù)。
如:MOVAX,1234H
11②操作數(shù)包含在CPU的某個(gè)內(nèi)部寄存器中,這種操作數(shù)叫寄存器操作數(shù),這時(shí)指令的操作數(shù)部分是CPU內(nèi)部寄存器的一個(gè)編碼。
如:MOVAX,BX
12③操作數(shù)在內(nèi)存的數(shù)據(jù)區(qū)中,這種操作數(shù)叫存儲(chǔ)器操作數(shù),這時(shí)指令的操作數(shù)部分包含此操作數(shù)所在的內(nèi)存地址。
如:MOVAX,[1234H]
此外,操作數(shù)在端口中。
如:INAL,20
13
邏輯地址:8086CPU中,內(nèi)存中任何存儲(chǔ)單元的實(shí)際地址都由兩部分組成:段基址和段內(nèi)偏移地址,用段基址:段內(nèi)偏移地址來(lái)表示。有效地址EA
:在存儲(chǔ)器尋址時(shí),指令的操作數(shù)部分給出的地址是段內(nèi)偏移地址。段內(nèi)偏移量由幾個(gè)基本部分組合而成,所以也稱為有效地址EA。
★★14
組成有效地址EA的基本部分包括:基址寄存器內(nèi)容、變址寄存器內(nèi)容、位移量等。其中,基址、變址寄存器中通常為某局部存儲(chǔ)區(qū)的起點(diǎn)。有效地址EA的計(jì)算公式如下:
EA=[基址寄存器BX、BP]+[變址寄存器SI、DI]
+位移量
有效偏移地址15立即尋址操作數(shù)就在指令中提供——立即數(shù)尋址方式。即操作數(shù)直接包含在指令中,它緊跟在操作碼的后面,與操作碼一起放在代碼段區(qū)域中。尋址方式介紹
立即數(shù)總是和操作碼一起被取入CPU的指令隊(duì)列,在指令執(zhí)行時(shí),不再需要訪問(wèn)存儲(chǔ)器。16立即尋址MOVAX,34EAH
;將34EAH送AX,AH中為
34H,AL中為EAHMOV BL,20
;將十進(jìn)制數(shù)20送入BL寄存器AX17
立即數(shù)可以是8位、16位操作數(shù)。若是16位,低位字節(jié)存放在相鄰兩個(gè)字節(jié)存儲(chǔ)單元的低地址單元中。立即數(shù)可以用二進(jìn)制數(shù)、八進(jìn)制數(shù)、十進(jìn)制數(shù)以及十六進(jìn)制數(shù)來(lái)表示。如:
MOVAL,10;十進(jìn)制數(shù)(D) MOVAL,00100101B;二進(jìn)制數(shù)(B) MOVAL,0AH ;十六進(jìn)制(H)
18寄存器尋址操作數(shù)在CPU內(nèi)部寄存器中——寄存器尋址方式。如:
MOVBP,SP;其過(guò)程如圖所示:
寄存器尋址圖示SPBP19寄存器可以是AX、BX、CX、DX、SI、DI、SP、BP(通用寄存器)。
寄存器可用來(lái)存放源操作數(shù),也可用來(lái)存放目的操作數(shù)。寄存器尋址方式是CPU內(nèi)部的操作,不需要使用訪問(wèn)總線周期,因此指令的執(zhí)行速度比較快。MOVAX,1234H;AX的內(nèi)容為1234HMOVAL,AH;AH的內(nèi)容12H送AL如20直接尋址
操作數(shù)在內(nèi)存單元中,指令中[]給出被訪問(wèn)單元的邏輯偏移地址,即有效地址(EA),再轉(zhuǎn)換為物理地址,選中內(nèi)存單元,讀出操作數(shù)——直接尋址如: MOV AX,[3E4CH]
EA21MOV AX,[3E4CH];段基址(DS)×10H+3E4CH(偏移地址EA)源操作數(shù)物理地址:段基址(DS)×10H+1234H段基址(ES)×10H+1234HMOV [1234H],BL;MOV ES:[1234H],BL目的操作數(shù)物理地址:;目的操作數(shù)物理地址:在對(duì)內(nèi)存進(jìn)行尋址時(shí),需計(jì)算物理地址。物理地址=段基址×10H+偏移地址有效地址(EA)
22
在默認(rèn)方式下,操作數(shù)存放在數(shù)據(jù)段(DS)。如果要對(duì)除DS段之外的其他段(CS、ES、SS)中的數(shù)據(jù)尋址,應(yīng)在指令中增加前綴,指出段寄存器名,這就是段跨越。23MOV AX,[1070H],假設(shè)(DS)=3000H,問(wèn)存放源操作數(shù)的物理地址及其AX的內(nèi)容。
物理地址=段基址(DS)×10H+(EA)
=30000H+1070H=31070H
指令的執(zhí)行情況如圖指令的執(zhí)行結(jié)果是:(AX)=2520H,即內(nèi)存31070H單元的內(nèi)容傳送到寄存器AX中.練習(xí):24寄存器間接尋址
操作數(shù)在內(nèi)存單元中,操作數(shù)的有效偏移地址(EA)不是直接給出的,EA在指定的寄存器中,即EA[寄存器]。如:MOV SI,61A8H
;被訪問(wèn)內(nèi)存單元邏輯偏移地址61A8H,送SIMOV DX,[SI];SI寄存器給出被訪問(wèn)內(nèi)存單元邏輯偏移地址圖解252000H61A8H物理地址=(DS)×10H
+(SI)若(DS)
=2000H×10H
DHDLDSSI261A8H34H12H12H34H261A9H26BX、SI、DI以DS作為默認(rèn)段寄存器,BP、SP以SS作為默認(rèn)段寄存器BP、BX為基址寄存器SI、DI為變址尋址寄存器EA可放在寄存器BX、SI、DI、BP、SP中。默認(rèn)下,可用段寄存器DS,SS。27邏輯地址的隱式用法:
DS:BX;SI;DISS:BP;SP。操作數(shù)的物理地址計(jì)算公式有以下幾個(gè):物理地址=(DS)×10H+(BX)
物理地址=(DS)×10H
+(DI)
物理地址=(DS)×10H
+(SI)
物理地址=(SS)×10H
+(BP)
物理地址=(SS)×10H
+(SP)若指令中指定了跨越前綴(段跨越),則可以從指定的段中獲得操作數(shù)。28基址/變址尋址(相對(duì)尋址)
操作數(shù)在內(nèi)存單元中,在寄存器間接尋址給出的偏移量(EA)基礎(chǔ)上,加一個(gè)相對(duì)位移量,位移量是帶符號(hào)的16位十六進(jìn)制數(shù)。當(dāng)使用BX或BP時(shí)--基址尋址當(dāng)使用SI或DI時(shí)--變址尋址29
如:MOV CX,36H[BX]EA=36H+(BX)段基址(DS)×10H+36H+(BX)源操作數(shù)的物理地址:再如:MOV -20[BP]
,ALEA=-14H+(BP)目的操作數(shù)物理地址:段基址(SS)×10H-14H+(BP)30基址+變址尋址
操作數(shù)在內(nèi)存單元中,EA由三部分組成:基址寄存器BX或BP的內(nèi)容+變址寄存器的內(nèi)容+位移量。如:MOV AX,8AH[BX][SI];EA=8AH+(BX)+(SI)物理地址為(DS)X10H+8AH+(BX)+(SI)。31
在基址加變址尋址方式中,基址寄存器、變址寄存器的使用規(guī)定以及段寄存器的默認(rèn)規(guī)定與基址/變址尋址方式相同。
在尋址方式中,當(dāng)基址寄存器和變址寄存器的默認(rèn)段寄存器不同時(shí),一般由基址寄存器來(lái)決定默認(rèn)用哪一個(gè)段寄存器作為段基址。若在指令中規(guī)定了段跨越,則可以用其他寄存器作為段基址。32
物理地址=(DS)×10H+(BX)+(SI)+位移量或物理地址=(SS)×
10H+(BP)+(DI)+位移量
如:MOVAX,20HES:[BX][DI]則物理地址=(ES)×10H+(BX)+(DI)+20H邏輯地址的隱式用法:段跨越寫(xiě)法:33I/O端口尋址8086采用獨(dú)立編址,因此,尋址通過(guò)I/O指令,見(jiàn)I/O指令。34三、
8086的指令集8086指令系統(tǒng)按功能分6類:數(shù)據(jù)傳送類算術(shù)運(yùn)算類位操作類(邏輯運(yùn)算與移位指令)串操作類程序控制類處理機(jī)控制類常用的符號(hào)累加器ax,al寄存器r:ax,bx,cx,dx,si,di,sp,bp,….段寄存器seg:ds,es,ss,cs內(nèi)存mem:[nn],[bx],[si],[di],[bp][bx/bp+count],[si/di+count][bx+si/di+count],[bp+si/di+count]立即數(shù)im368086指令集-數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令累加器專用(I/O)傳送指令目標(biāo)地址傳送指令標(biāo)志寄存器傳送指令數(shù)據(jù)傳送指令37數(shù)據(jù)傳送類指令
目標(biāo)指令的共同特點(diǎn)是:1、除POP和SAHF指令外,這類指令的操作結(jié)果不會(huì)影響FR寄存器中的標(biāo)志。2、指令中有兩個(gè)操作數(shù),目的操作數(shù)和源操作數(shù),其執(zhí)行過(guò)程為:目的操作數(shù)源操作數(shù),當(dāng)指令中僅列出一個(gè)操作數(shù)時(shí),另一操作數(shù)為隱含。39傳送指令(MOV)
指令格式:MOV目的操作數(shù),源操作數(shù)8086指令集
-數(shù)據(jù)傳送指令-通用傳送指令40
MOV的數(shù)據(jù)傳送方向示意圖不包括IP41使用中需要注意的是:①M(fèi)OV指令不能在兩個(gè)存貯器單元之間進(jìn)行數(shù)據(jù)直接傳送。②MOV指令不能在兩個(gè)段寄存器之間進(jìn)行數(shù)據(jù)直接傳送。③立即數(shù)不能直接傳送給段寄存器。④目的操作數(shù)不能為立即數(shù)、CS。⑤源操作數(shù)和目的操作數(shù)數(shù)據(jù)類型相同。42(2)堆棧操作指令進(jìn)棧指令PUSH
出棧指令POP指令格式:
PUSH源操作數(shù)
POP目的操作數(shù)源操作數(shù)可以是通用寄存器、段寄存器和存儲(chǔ)器。目的操作數(shù)可以是通用寄存器、段寄存器(CS除外)或存儲(chǔ)器。43
操作過(guò)程:
PUSH進(jìn)棧指令使SP-2→SP,然后將16位的源操作數(shù)壓入堆棧,先高位后低位。
POP出棧指令的執(zhí)行過(guò)程與PUSH相反。它從當(dāng)前棧頂彈出16位操作數(shù)到目的操作數(shù),同時(shí)SP+2→SP,使SP指向新的棧頂。44說(shuō)明:①堆棧操作總是以字為單位進(jìn)行。②PUSH和POP指令不影響標(biāo)志位。③允許PUSHCS,但不允許POPCS。④堆棧的“后進(jìn)先出”。指令格式為:XCHG目的操作數(shù),源操作數(shù)XCHGR,OPRDOPRD:R,MEM
操作數(shù)不能為立即數(shù);
源和目的不能同時(shí)為存儲(chǔ)單元;
段寄存器不能作為操作數(shù)。(3)XCHG交換指令
468086指令集
-數(shù)據(jù)傳送指令-累加器專用傳送指令(1)輸入輸出指令輸入指令格式:
INAL,nINAX,nINAL,DXINAX,DX輸出指令格式:
OUTn,ALOUTn,AXOUTDX,
ALOUTDX,
AXn表示8位端口地址(00H~FFH)47
在計(jì)算機(jī)中,輸入/輸出操作是由CPU利用輸入、輸出指令并通過(guò)累加器AL或AX進(jìn)行的。輸入指令完成由輸入端口到CPU的信息傳送,輸出指令完成從CPU到輸出端口的信息傳送。指令功能:在AL或AX寄存器與I/O端口之間傳送數(shù)據(jù)。
說(shuō)明:48由指令直接提供端口號(hào),如:IN AL,50H ;將50H端口的字節(jié)讀入ALIN AX,70H ;分別將70H/71H端口的內(nèi)容讀入AL、AHOUT44H,AL ;將AL中的內(nèi)容輸出到44H端口OUT80H,AX ;將AL、AH中的內(nèi)容分別輸出到80H、81H兩端口
例子49端口號(hào)由DX間接給出如:INAL,DX;從DX所指的端口中讀取INAX,DX;從DX和DX+1所指出的兩個(gè)端口中讀取OUTDX,AL;將AL中的字節(jié)輸出到DX所指的端口中OUTDX,AX;將AL中的字節(jié)輸出到DX所指的端口中,將AH中的字節(jié)輸出到DX+1所指端口中的例子50INAL,21H返回51OUT43H,AL返回 指令格式為:XLAT
功能[bx+al]->al
例:查表求n的平方。n:[0-9]1、將0-9的平方表建立在偏移地址為2000H的內(nèi)存中,如圖。2、查表
3)XLAT換碼指令完成求5的平方指令序列為:MOVBX,2000H;指向平方表的首地址MOVAL,5;將5換碼成5的平方值XLAT ;查表,平方值在AL中3、目標(biāo)地址傳送指令1)LEA有效地址傳送到寄存器2)LDS裝入一個(gè)新的物理地址3)LES裝入一個(gè)新的物理地址4、標(biāo)志寄存器傳送指令1)LAHFAH送FR寄存器的低8位2)SAHFFR寄存器的低8位送AH3)PUSHFFR寄存器推入堆棧4)POPF從棧頂中彈出存入FR寄存器56數(shù)據(jù)傳送類指令
目標(biāo)指令中的數(shù)據(jù)類型無(wú)符號(hào)數(shù)
帶符號(hào)數(shù)
ASCII碼
BCD數(shù)(壓縮BCD和非壓縮BCD)
588086指令系統(tǒng)
-算術(shù)運(yùn)算指令
算術(shù)運(yùn)算指令主要涉及兩種類型的數(shù)據(jù)無(wú)符號(hào)數(shù)8位無(wú)符號(hào)數(shù)的范圍為0~25516位無(wú)符號(hào)數(shù)的范圍為0~65535有符號(hào)數(shù)
8位有符號(hào)數(shù)的范圍為-128~+12716位有符號(hào)數(shù)的范圍為-32768~+32767所有算術(shù)運(yùn)算指令均影響狀態(tài)標(biāo)志(PF,SF,ZF,CF,OF)59算術(shù)運(yùn)算類指令表。
60
(1)算術(shù)加法指令A(yù)DD
指令格式:ADD目的操作數(shù),源操作數(shù)
指令功能:將源操作數(shù)與目的操作數(shù)相加,結(jié)果存放于目的操作數(shù)。即目的操作數(shù)+源操作數(shù)→目的操作數(shù)。
8086指令系統(tǒng)
–算術(shù)運(yùn)算指令-加法指令61不帶進(jìn)位的加法指令,如:
ADD AL,50H ;AL和50H相加,結(jié)果放在AL中
ADD DI,SI ;DI和SI的內(nèi)容相加,結(jié)果在DI中 ADD[BX+DI],AX;BX+DI和BX+DI+12個(gè)單元和AX相加,結(jié)果在BX+DI和BX+DI+1所指單元ADDAX,[BX+2000H];BX+2000H和BX+2001H
所指單元內(nèi)容和AX的內(nèi)容相加,結(jié)果在AX中。62
(2)帶進(jìn)位算術(shù)加法指令A(yù)DC
指令格式:ADC目的操作數(shù),源操作數(shù)指令功能:將源操作數(shù)與目的操作數(shù)以及進(jìn)位標(biāo)志位CF的值相加,并將結(jié)果存放于目的操作數(shù),即:目的操作數(shù)+源操作數(shù)+CF→目的操作數(shù)。
8086指令系統(tǒng)
–算術(shù)運(yùn)算指令-加法指令63如:ADCAX,SI;AX和SI中的內(nèi)容以及
CF的值相加,結(jié)果在AXADCDX,[SI];SI和SI+1所指的單元的內(nèi)容和DX的內(nèi)容以及CF
的值相加,結(jié)果在DX64例:實(shí)現(xiàn)32位加法
MOVAX,0F271H;加數(shù)的低16位
ADDAX,5698H;與被加數(shù)的低16位相加,并影響CFMOVDX,5B68H;加數(shù)的高16位
ADCAX,0AC6DH;與被加數(shù)的高16位相和CF相加
65
(3)加1指令I(lǐng)NC
指令格式:INC目的操作數(shù)
指令功能:將指定目的操作數(shù)內(nèi)容加1INC指令不影響進(jìn)位標(biāo)志CF。
8086指令系統(tǒng)
–算術(shù)運(yùn)算指令-加法指令66如:INCAX ;將AX中的內(nèi)容加1INCBL ;將BL中的內(nèi)容加1INCBYTEPTR[BX]
;將BX所指單元的內(nèi)容加1具體指令形式:
INCmem;mem←mem+1INCreg;reg←reg+1操作數(shù)是內(nèi)存尋址,需使用偽指令(4)DAA對(duì)壓縮BCD數(shù)加法操作的結(jié)果進(jìn)行校正指令功能:對(duì)AL寄存器的內(nèi)容進(jìn)行十進(jìn)制調(diào)整(5)
AAA對(duì)非壓縮BCD數(shù)加法操作的結(jié)果進(jìn)行校正指令功能:對(duì)AL寄存器的內(nèi)容進(jìn)行十進(jìn)制調(diào)整8086指令系統(tǒng)
–算術(shù)運(yùn)算指令-加法指令68
減法指令有算術(shù)減法SUB
帶借位算術(shù)減法指令SBB
減1指令DEC
比較CMP等指令求補(bǔ)NEG
8086指令系統(tǒng)
–算術(shù)運(yùn)算指令-減法指令69MOVAL,86HSUBAL,54H;(AL)=32H(1)指令格式:SUB目的操作數(shù),源操作數(shù)8086指令系統(tǒng)
–算術(shù)運(yùn)算指令-算術(shù)減法指令70SUBBX,CX;將BX中的內(nèi)容減去CX中的內(nèi)容,結(jié)果在BX中SUB[BP+2],CL;將BP+2所指堆棧單元中的值減去CL中的值,結(jié)果放在BP+2所指的堆棧單元中SUBAL,20 ;AL中的數(shù)減去20,結(jié)果在AL中SUBSI,5010H;SI中的數(shù)減去5010H,結(jié)果在SI中71
如:DECAX ;將AX的內(nèi)容減1,再送回AX中DECBL ;將BL的內(nèi)容減1,結(jié)果送回BL中DECBYTEPTR
[DI+2]
;將DI+2所指單元的內(nèi)容減1,結(jié)果送回此單元
(2)減1指令DEC
指令格式:DEC目的操作數(shù)
指令功能:將指定目的操作數(shù)內(nèi)容減1。8086指令系統(tǒng)
–算術(shù)運(yùn)算指令-算術(shù)減法指令72
(3)比較指令CMP。
指令格式:CMP目的操作數(shù),源操作數(shù)指令功能:將目的操作數(shù)減去源操作數(shù)。與SUB不同的是,結(jié)果不予保存,僅影響標(biāo)志位。CMPAX,2000H ;將AX的內(nèi)容和
2000H相比較,結(jié)果影響標(biāo)志位CMPAL,50H;將AL中的數(shù)和50H比較,結(jié)果影響標(biāo)志位8086指令系統(tǒng)
–算術(shù)運(yùn)算指令-算術(shù)減法指令73比較指令通常用于比較兩個(gè)操作數(shù)的大小。由受影響的標(biāo)志位狀態(tài)來(lái)判斷兩個(gè)操作數(shù)比較的結(jié)果。不論是無(wú)符號(hào)數(shù)比較還是有符號(hào)數(shù)比較,若在比較指令后,ZF=1,則兩者相等,否則不相等。若兩者不相等,則可在比較兩個(gè)數(shù)之后,利用其他標(biāo)志位的狀態(tài)來(lái)確定兩者中哪個(gè)大。
74
如果是兩個(gè)無(wú)符號(hào)數(shù)比較,則可根據(jù)進(jìn)位標(biāo)志
CF的狀態(tài)來(lái)判斷:若CF=1,則目的操作數(shù)<源操作數(shù);若CF=0,則目的操作數(shù)>源操作數(shù)。如果是兩個(gè)有符號(hào)數(shù)比較,則要根據(jù)SF和OF兩個(gè)標(biāo)志的關(guān)系來(lái)判斷:若SF、OF為0,則目的操作數(shù)>=源操作數(shù);若SF為1、OF為0,則目的操作數(shù)<源操作數(shù)。
在程序中,比較指令常用于條件轉(zhuǎn)移之前,條件轉(zhuǎn)移指令根據(jù)CMP操作之后的狀態(tài)標(biāo)志決定程序轉(zhuǎn)移或不轉(zhuǎn)移。
75
乘法指令包括無(wú)符號(hào)數(shù)乘法、帶符號(hào)數(shù)乘法兩種。無(wú)符號(hào)數(shù)乘法指令MUL。
指令格式:MUL源操作數(shù)
指令功能:完成兩個(gè)無(wú)符號(hào)操作數(shù)的相乘。要求被乘數(shù)放在AL或AX累加器中,用于字節(jié)運(yùn)算和字運(yùn)算,另一乘數(shù)可通過(guò)指令中的源操作數(shù)(除立即數(shù)方式以外的尋址方式)獲得。8086指令系統(tǒng)
–算術(shù)運(yùn)算指令-算術(shù)乘法指令76
說(shuō)明:
8位×8位=16位,16位×16位=32位;被乘數(shù)必須放AX或AL中,指令中隱含;
16位運(yùn)算結(jié)果放AX中,32位運(yùn)算結(jié)果放DX和
AX中;乘法指令的執(zhí)行結(jié)果會(huì)使標(biāo)志位發(fā)生變化。只有進(jìn)位標(biāo)志CF、溢出標(biāo)志OF有意義,其它標(biāo)志位無(wú)定義。77無(wú)符號(hào)數(shù)的乘法指令例MULBL;AL中無(wú)符號(hào)數(shù)與BL中無(wú)符號(hào)數(shù)相乘,結(jié)果在AX中MULBX;AX和BX中的無(wú)符號(hào)數(shù)相乘,結(jié)果在DX和AX中指令規(guī)定的DIV無(wú)符號(hào)數(shù)除法
指令功能:完成兩個(gè)操作數(shù)相除
DIVOPRDAX/OPRDAL:商,AH:余數(shù)
DXAX/OPRDAX:商,DX:余數(shù)IDIV帶符號(hào)數(shù)除法
指令功能:完成兩個(gè)操作數(shù)相除
另外還有:CBW帶符號(hào)數(shù)字節(jié)擴(kuò)展CWD帶符號(hào)數(shù)字?jǐn)U展AAD非壓縮BCD數(shù)除法校正
8086指令系統(tǒng)
–算術(shù)運(yùn)算指令-算術(shù)除法指令79(1)邏輯運(yùn)算指令A(yù)ND目的操作數(shù),源操作數(shù);OR目的操作數(shù),源操作數(shù)NOT目的操作數(shù)XOR目的操作數(shù),源操作數(shù)TEST(測(cè)試)8086指令系統(tǒng)
–位操作指令邏輯運(yùn)算指令邏輯移位指令
AND可以使指定位為0OR可以使指定位為1XOR可以使指定位為非81比如:ANDAL,11H;AL中內(nèi)容和11H相與,結(jié)果在
AL;OR AX,00F0H;AX和00F0H相或,結(jié)果在
AXXORAX,AX;AX內(nèi)容本身進(jìn)行異或,結(jié)果AX清零
NOT AL ;AL中內(nèi)容求反碼,結(jié)果AL中對(duì)某位進(jìn)行屏蔽(0)或保留(1)對(duì)某位進(jìn)行置(1)或保留(0)對(duì)某位求反(1)或保留(0)828086指令系統(tǒng)
–位操作指令
測(cè)試指令TEST
指令格式:TEST目的操作數(shù),源操作數(shù)
指令功能:將8位、16位寄存器或存儲(chǔ)器中的內(nèi)容和源操作數(shù)“與”
。
83說(shuō)明目的操作數(shù)不能為立即數(shù)TEST指令和AND指令的運(yùn)算規(guī)則相同,但它不產(chǎn)生運(yùn)算結(jié)果,僅影響標(biāo)志位,常用于對(duì)某位是“1”或“0”的檢測(cè)。如:判斷AX寄存器中D1位是否為“1”。
TESTAX,0002H
執(zhí)行后,檢測(cè)ZF標(biāo)志,若為0,則D1位為1。2、邏輯移位指令
1)SHL邏輯左移 指令功能:將8位、16位寄存器或存儲(chǔ)器內(nèi)容左移,移空的位補(bǔ)0SHLOPRD,1ORSHLOPRD,CL
2)SAL算術(shù)左移
指令功能:將8位、16位寄存器或存儲(chǔ)器內(nèi)容左移,移空的位補(bǔ)0
舉例:擴(kuò)展BCD碼BCD碼2、邏輯移位指令3)SHR邏輯右移
指令功能:將8位、16位寄存器或存儲(chǔ)器內(nèi)容右移,移空的位補(bǔ)0
4)SAR算術(shù)右移
指令功能:將8位、16位寄存器或存儲(chǔ)器內(nèi)容右移,移空的位由最高位補(bǔ)充。舉例:BCD碼擴(kuò)展BCD碼5)ROL不帶進(jìn)位循環(huán)左移 指令功能:將8位、16位寄存器或存儲(chǔ)器內(nèi)容左移,移空的位由移出位補(bǔ)充。6)ROR不帶進(jìn)位循環(huán)右移 指令功能:將8位、16位寄存器或存儲(chǔ)器內(nèi)容右移,移空的位由移出位補(bǔ)充。7)RCL帶進(jìn)位循環(huán)左移 指令功能:將8位、16位寄存器或存儲(chǔ)器內(nèi)容左移,移空的位由CF位補(bǔ)充。
8)RCR帶進(jìn)位循環(huán)右移
指令功能:將8位、16位寄存器或存儲(chǔ)器內(nèi)容右移,移空的位由CF位補(bǔ)充。舉例:倒序程序四、串處理指令源操作數(shù)指針DS:SI,目的操作數(shù)指針ES:DI每操作一次SI,DI修改一次,方向由DF控制重復(fù)操作的退出cx控制條件控制(ZF標(biāo)志)四、串處理指令1、串傳送指令
MOVSB/MOVSW2、串比較指令CMPSB/COMPSW3、串搜索指令
SCASB/SCASW4、串裝入指令LODSB/LODSW5、串存儲(chǔ)指令STOSB/STOSB6、指令前綴
REP、REPZ/REPE、REPNZ/REPNE
控制轉(zhuǎn)移類指令控制轉(zhuǎn)移類指令用于實(shí)現(xiàn)分支、循環(huán)、過(guò)程等程序結(jié)構(gòu),是僅次于傳送指令的最常用指令
控制轉(zhuǎn)移類指令通過(guò)改變IP(和CS)值,實(shí)現(xiàn)程序執(zhí)行順序的改變918086指令系統(tǒng)
–控制轉(zhuǎn)移指令控制轉(zhuǎn)移指令中包括5類指令,即無(wú)條件轉(zhuǎn)移和條件轉(zhuǎn)移指令循環(huán)控制指令子程序調(diào)用和返回指令中斷指令和中斷返回指令處理器控制指令控制轉(zhuǎn)移類指令用來(lái)控制程序執(zhí)行的順序,通過(guò)控制轉(zhuǎn)移指令可實(shí)現(xiàn)各種結(jié)構(gòu)化程序設(shè)計(jì),如分支結(jié)構(gòu)程序、循環(huán)結(jié)構(gòu)程序等。一、無(wú)條件轉(zhuǎn)移指令使程序轉(zhuǎn)到指定的目標(biāo)地址處,從目標(biāo)地址處開(kāi)始執(zhí)行指令label:要轉(zhuǎn)移到的目標(biāo)地址(目的地址、轉(zhuǎn)移地址)JMP指令分成4種類型:⑴段內(nèi)轉(zhuǎn)移、直接尋址⑵段內(nèi)轉(zhuǎn)移、間接尋址⑶段間轉(zhuǎn)移、直接尋址⑷段間轉(zhuǎn)移、間接尋址JMPlabel
;程序轉(zhuǎn)向label標(biāo)號(hào)指定的地址目標(biāo)地址的尋址方式直接尋址方式轉(zhuǎn)移地址直接在指令的機(jī)器代碼中間接尋址方式轉(zhuǎn)移地址在寄存器或主存單元中用標(biāo)號(hào)表達(dá)用寄存器或存儲(chǔ)器操作數(shù)表達(dá)目標(biāo)地址的范圍:段內(nèi)段內(nèi)轉(zhuǎn)移——近轉(zhuǎn)移(near)在當(dāng)前代碼段64KB范圍內(nèi)轉(zhuǎn)移(±32KB范圍)不需要更改CS段地址,只要改變IP偏移地址段內(nèi)轉(zhuǎn)移——短轉(zhuǎn)移(short)轉(zhuǎn)移范圍可以用一個(gè)字節(jié)表達(dá),在段內(nèi)-128~+127范圍的轉(zhuǎn)移代碼段代碼段目標(biāo)地址的范圍:段間段間轉(zhuǎn)移——遠(yuǎn)轉(zhuǎn)移(far)從當(dāng)前代碼段跳轉(zhuǎn)到另一個(gè)代碼段,可以在1MB范圍需要更改CS段地址和IP偏移地址目標(biāo)地址必須用一個(gè)32位數(shù)表達(dá),叫做32位遠(yuǎn)指針,它就是邏輯地址代碼段代碼段
實(shí)際編程時(shí),匯編程序會(huì)根據(jù)目標(biāo)地址的距離,自動(dòng)處理成短轉(zhuǎn)移、近轉(zhuǎn)移或遠(yuǎn)轉(zhuǎn)移
程序員可用操作符short、nearptr或farptr強(qiáng)制段內(nèi)轉(zhuǎn)移、直接尋址JMPlabel ;IP←IP+位移量位移量是緊接著JMP指令后的那條指令的偏移地址,到目標(biāo)指令的偏移地址的地址位移當(dāng)向地址增大方向轉(zhuǎn)移時(shí),位移量為正;向地址減小方向轉(zhuǎn)移時(shí),位移量為負(fù)
jmpagain
;轉(zhuǎn)移到again處繼續(xù)執(zhí)行
……again:
deccx
;標(biāo)號(hào)again的指令
……
jmpoutput
;轉(zhuǎn)向output
……output:
movresult,al
;標(biāo)號(hào)output的指令實(shí)際為相對(duì)尋址段內(nèi)間接轉(zhuǎn)移無(wú)條件轉(zhuǎn)移指令的格式:
JMPREG16/MEM16;(IP)+DISP(16位)IP實(shí)例
JMPSIJMP[BX]JMPWORDPTR[BP][DI]段內(nèi)轉(zhuǎn)移、間接尋址JMPr16/m16 ;IP←r16/m16將一個(gè)16位寄存器或主存字單元內(nèi)容送入IP寄存器,作為新的指令指針,但不修改CS寄存器的內(nèi)容jmpax ;IP←AXjmpwordptr[2000h]
;IP←[2000h]
段間直接轉(zhuǎn)移無(wú)條件轉(zhuǎn)移指令的格式:
JMPFARPTRLABEl標(biāo)號(hào)是一個(gè)遠(yuǎn)標(biāo)號(hào),該標(biāo)號(hào)在另一個(gè)代碼段內(nèi)段間轉(zhuǎn)移、直接尋址JMPfarptrlabel
;IP←label的偏移地址 ;CS←label的段地址將標(biāo)號(hào)所在段的段地址作為新的CS值,標(biāo)號(hào)在該段內(nèi)的偏移地址作為新的IP值,程序跳轉(zhuǎn)到新的代碼段執(zhí)行jmpfarptrotherseg
;遠(yuǎn)轉(zhuǎn)移到代碼段2的otherseg段間轉(zhuǎn)移、間接尋址JMPfarptrmem
;IP←[mem],CS←[mem+2]用一個(gè)雙字存儲(chǔ)單元表示要跳轉(zhuǎn)的目標(biāo)地址。這個(gè)目標(biāo)地址存放在主存中連續(xù)的兩個(gè)字單元中的,低位字送IP寄存器,高位字送CS寄存器movwordptr[bx],0movwordptr[bx+2],1500hJMPfarptr[bx];轉(zhuǎn)移到1500h:0實(shí)例CODESEGMENT……MOVAX,1MOVBX,2ADDBX,AX
JMPLOOP1ADDBX,4ADDBX,5……LOOP1:……CODEENDS程序中每條指令的尋址是由CS
和IP決定的。讓程序轉(zhuǎn)移到另一個(gè)位置需要修改IP(段內(nèi)轉(zhuǎn)移/NEAR)或
CS:IP(段間轉(zhuǎn)移/FAR)如段內(nèi)轉(zhuǎn)移(-128-+127)則稱為短轉(zhuǎn)移,用SHORT來(lái)表示。實(shí)例MOVAX,0JMPNEXTMOVBX,0MOVCX,0NEXT:MOVAH,4CHINT21HMOVAX,0NEXT:MOVBX,0MOVCX,0JMPNEXTMOVAH,4CHINT21H說(shuō)明:目標(biāo)地址的計(jì)算以當(dāng)前IP的值為中心,前移或者后移,稱為相對(duì)轉(zhuǎn)移。以新的值完全代替當(dāng)前的IP值,稱為絕對(duì)轉(zhuǎn)移。
在86系列中,所有的段內(nèi)直接轉(zhuǎn)移都是相對(duì)轉(zhuǎn)移,所有的段內(nèi)間接轉(zhuǎn)移和段間間接轉(zhuǎn)移都是絕對(duì)轉(zhuǎn)移。2、條件轉(zhuǎn)移指令
1)
單條件轉(zhuǎn)移指令 ①
JC ;CF標(biāo)志為1,則轉(zhuǎn)移 ②
JNC ;CF標(biāo)志為0,則轉(zhuǎn)移 ③
JE/JZ ;ZF標(biāo)志為1,則轉(zhuǎn)移 ④
JNE/JNZ;ZF標(biāo)志為0,則轉(zhuǎn)移 ⑤
JS ;SF標(biāo)志為1,則轉(zhuǎn)移 ⑥
JNS ;SF標(biāo)志為0,則轉(zhuǎn)移 ⑦
JO ;OF標(biāo)志為1,則轉(zhuǎn)移 ⑧
JNO ;OF標(biāo)志為0,則轉(zhuǎn)移 ⑨
JP/JPE;PF標(biāo)志為1,則轉(zhuǎn)移 ⑩
JNP/JPO;PF標(biāo)志為0,則轉(zhuǎn)移
105類別指令名稱指令格式條件轉(zhuǎn)移進(jìn)位位為1轉(zhuǎn)移JC目標(biāo)標(biāo)號(hào)進(jìn)位位為0轉(zhuǎn)移JNC目標(biāo)標(biāo)號(hào)等于/結(jié)果為0轉(zhuǎn)移JE/JZ目標(biāo)標(biāo)號(hào)不等于/結(jié)果不為0轉(zhuǎn)移JNE/JNZ目標(biāo)標(biāo)號(hào)大于/不小于也不等于轉(zhuǎn)移JG/JNLE目標(biāo)標(biāo)號(hào)大于或等于/不小于轉(zhuǎn)移JGE/JNL目標(biāo)標(biāo)號(hào)小于/不大于也不等于轉(zhuǎn)移JL/JNGE目標(biāo)標(biāo)號(hào)106類別指令名稱指令格式條件轉(zhuǎn)移小于或等于/不大于轉(zhuǎn)移JLE/JNG目標(biāo)標(biāo)號(hào)溢出轉(zhuǎn)移JO目標(biāo)標(biāo)號(hào)不溢出轉(zhuǎn)移JNO目標(biāo)標(biāo)號(hào)奇偶位為0/奇偶性為奇轉(zhuǎn)移JNP/JPO目標(biāo)標(biāo)號(hào)奇偶位為1/奇偶性為偶轉(zhuǎn)移JP/JPE目標(biāo)標(biāo)號(hào)符號(hào)標(biāo)志位為0轉(zhuǎn)移JNS目標(biāo)標(biāo)號(hào)符號(hào)標(biāo)志位為1轉(zhuǎn)移JS目標(biāo)標(biāo)號(hào)107類別指令名稱指令格式循環(huán)控制循環(huán)LOOP目標(biāo)標(biāo)號(hào)等于/結(jié)果為0循環(huán)LOOPE/LOOPZ目標(biāo)標(biāo)號(hào)不等于/結(jié)果不為0循環(huán)LOOPNE/LOOPNZ目標(biāo)標(biāo)號(hào)CX內(nèi)容為0轉(zhuǎn)移JCXZ目標(biāo)標(biāo)號(hào)中斷中斷INT中斷類型溢出時(shí)中斷INTO中斷返回IRET108
2)條件轉(zhuǎn)移指令
條件轉(zhuǎn)移指令以某些標(biāo)志位的狀態(tài)或有關(guān)標(biāo)志位的邏輯運(yùn)算結(jié)果作為依據(jù),以此決定是否轉(zhuǎn)移。這些標(biāo)志位通常由條件轉(zhuǎn)移指令的上一條指令所設(shè)置。條件轉(zhuǎn)移指令將根據(jù)這些標(biāo)志位的狀態(tài),判斷是否滿足對(duì)應(yīng)的測(cè)試條件。若滿足條件,則轉(zhuǎn)移到指令指定的地方,否則繼續(xù)執(zhí)行條件轉(zhuǎn)移指令之后的指令。執(zhí)行條件轉(zhuǎn)移指令不影響標(biāo)志位。109
單條件轉(zhuǎn)移指令(1)指令格式:JZ操作數(shù)或JE操作數(shù)指令功能:轉(zhuǎn)移條件:ZF=1,
ZF標(biāo)志位為1,則轉(zhuǎn)移
(2)指令格式:JNZ/JNE操作數(shù)指令功能:ZF標(biāo)志位為0,
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年教育機(jī)構(gòu)校園宣傳欄設(shè)施采購(gòu)及安裝合同3篇
- 二零二五年度木材防腐處理木工班組承包合同樣本4篇
- 2025年食堂食材安全認(rèn)證與采購(gòu)合同3篇
- 2025版家居建材行紀(jì)合同范本2篇
- 第八章生命體征的評(píng)估與護(hù)理護(hù)理學(xué)基礎(chǔ)88課件講解
- 2025年保潔防疫服務(wù)協(xié)議
- 2025年加盟連鎖店經(jīng)銷合作協(xié)議范例
- 2025年大型綜合市場(chǎng)用水電合同
- 2025年專利知識(shí)產(chǎn)權(quán)技術(shù)權(quán)利使用許可轉(zhuǎn)讓合同
- 二零二五版閉門會(huì)議知識(shí)產(chǎn)權(quán)授權(quán)與保密條款合同3篇
- 2024年萍鄉(xiāng)衛(wèi)生職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)標(biāo)準(zhǔn)卷
- 2024年高考數(shù)學(xué)(理)試卷(全國(guó)甲卷)(空白卷)
- DB32-T 4444-2023 單位消防安全管理規(guī)范
- 臨床三基考試題庫(kù)(附答案)
- 合同簽訂執(zhí)行風(fēng)險(xiǎn)管控培訓(xùn)
- 九宮數(shù)獨(dú)200題(附答案全)
- 人員密集場(chǎng)所消防安全管理培訓(xùn)
- JCT587-2012 玻璃纖維纏繞增強(qiáng)熱固性樹(shù)脂耐腐蝕立式貯罐
- 典范英語(yǔ)2b課文電子書(shū)
- 員工信息登記表(標(biāo)準(zhǔn)版)
- 春節(jié)工地停工復(fù)工計(jì)劃安排( 共10篇)
評(píng)論
0/150
提交評(píng)論