第四章8086指令系統(tǒng)_第1頁
第四章8086指令系統(tǒng)_第2頁
第四章8086指令系統(tǒng)_第3頁
第四章8086指令系統(tǒng)_第4頁
第四章8086指令系統(tǒng)_第5頁
已閱讀5頁,還剩362頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第四章

8086指令系統(tǒng)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》2主要內(nèi)容指令系統(tǒng)的一般概念對操作數(shù)的尋址方式六大類指令的操作原理

操作碼的格式及功能指令對操作數(shù)的要求指令對標(biāo)志位的響應(yīng)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》3第4章8086指令系統(tǒng)主要內(nèi)容:4.18086的尋址方式4.28086的指令系統(tǒng)學(xué)時分配:8學(xué)時第一節(jié)

8086的尋址方式movax,12hcalldisplayJmp1234h02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》54.18086的尋址方式主要內(nèi)容:4.1.1尋址方式概述4.1.2尋址方式02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》64.1.1尋址方式概述尋址方式:尋找操作數(shù)的方法目的:

尋找要執(zhí)行的下一條指令的地址

尋找操作數(shù)的地址(一般指源操作數(shù))02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》7

1.指令和指令系統(tǒng)指令:控制計算機(jī)完成某種操作的命令指令系統(tǒng):處理器所能識別的所有指令的集合指令的兼容性:同一系列機(jī)的指令都是兼容的。02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》8指令有兩種書寫格式:機(jī)器指令和符號指令。機(jī)器指令——指令的二進(jìn)制數(shù)代碼形式硬件只能識別機(jī)器指令,用機(jī)器指令書寫的程序可以直接運行符號指令——用規(guī)定的助記符和規(guī)定的書寫格式書寫的指令與機(jī)器指令一一對應(yīng),需要翻譯成機(jī)器指令才能運行

1011000000000001MOVAL,1

1.指令和指令系統(tǒng)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》9程序是為解決某一問題而編寫在一起的指令序列機(jī)器語言程序:由機(jī)器指令書寫的程序匯編語言程序:由符號指令書寫的程序高級語言程序:由高級語言書寫的程序

1.指令和指令系統(tǒng)高級語言的基礎(chǔ)是語句,而不是處理器的指令系統(tǒng),匯編語言程序和高級語言程序必須先翻譯成機(jī)器語言程序才能執(zhí)行。這一翻譯過程對匯編語言程序叫做匯編(assemble),對高級語言程序叫做編譯(compilation)或解釋(interpretation)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》10指令中應(yīng)包含的信息:運算數(shù)據(jù)的來源(源操作數(shù))運算結(jié)果保存到何處(目的操作數(shù))執(zhí)行的操作(操作碼)例如:Z=X+Y目的操作數(shù)源操作數(shù)1操作源操作數(shù)2想一想:指令應(yīng)該包括幾個部分?2.指令格式02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》11操作碼操作數(shù),操作數(shù)執(zhí)行何種操作目的操作數(shù)源操作數(shù)參加操作的數(shù)據(jù)或數(shù)據(jù)存放的地址2.指令格式02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》12指令舉例:ADDAX,[SI+6]MOVAX,BX操作碼操作數(shù)INC[BX]HLT02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》132.指令格式指令的長度與操作碼及操作數(shù)的多少和類型有關(guān)零操作數(shù)指令:操作碼

單操作數(shù)指令:操作碼操作數(shù)雙操作數(shù)指令:操作碼操作數(shù)1,操作數(shù)2源/目的操作數(shù)源/目的操作數(shù)源操作數(shù)注:兩個操作數(shù)時,操作數(shù)類型要一致。如都是8位或都是16位。02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》14部分8086/8088常用指令指令類型助記符數(shù)據(jù)傳送數(shù)據(jù)傳送MOV,PUSH/POP,XCHG等地址傳送LEA,LDS,LES輸入輸出IN,OUT算術(shù)運算加法ADD,ADC,INC減法SUB,SBB,DEC,NEG,CMP乘/除法MUL,IMUL,DIV,IDIV邏輯AND,OR,NOT,XOR,TEST移位SHL/SHR/SAR,ROL/ROR,RCL/RCR串操作MOVS,CMPS,SCAS,LODS,STOS控制轉(zhuǎn)移JMP,JXX,LOOP,CALL/RET,INT/IRET02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》153.指令中的操作數(shù)立即數(shù):表征參加操作的數(shù)據(jù)本身存儲器操作數(shù):表征數(shù)據(jù)存放的地址寄存器操作數(shù):表征數(shù)據(jù)存放在哪個寄存器中隱含操作數(shù):表征數(shù)據(jù)隱含存放在某個寄存器中02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》161)立即數(shù)操作數(shù)(常數(shù))源操作數(shù)就是參加操作的數(shù)據(jù)本身,它們可以是8位或16位。例:MOVAX,1234HMOVBL,22H立即數(shù)可以是無符號或帶符號數(shù),其值應(yīng)在允許范圍內(nèi)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》17取值范圍如下表:立即數(shù)只能用作源操作數(shù),如8位16位無符號數(shù)00H-FFH(0-255)0000H-FFFFH(0-65535)帶符號數(shù)80H-7FH(-128~127)8000H-7FFFH(-32768~32767)MOV AX,0FA00H ;正確MOV 8000H,DX ;錯誤1)立即數(shù)操作數(shù)(常數(shù))02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》182)寄存器操作數(shù)表示參加運算的數(shù)存放在指令給出的寄存器中,可以是16位或8位。例:MOVAX,BXMOVDL,CH想一想:以下指令正確否?

MOVAX,BLMOVDL,CX02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》19

放在8個通用寄存器或4個段寄存器中的操作數(shù)2)寄存器操作數(shù)16位

AX

AH

AL

16位BXBHBL16位CXCHCL16位DXDHDL02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》20只能存放字操作數(shù)段寄存器存放當(dāng)前操作數(shù)的段基地址不允許將立即數(shù)傳送到段寄存器SIDIBPSPCSDSESSS2)寄存器操作數(shù)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》213)存儲器操作數(shù)表示當(dāng)前參加運算的數(shù)存放在存儲器的某一個或某兩個單元中表示形式:[]地址值或寄存器如:[1234H]表示操作數(shù)在地址為1234H的存儲器單元中

[BX]表示操作數(shù)在以BX的內(nèi)容為地址的存儲器單元中指令例:MOVAX,[1234H]MOV[BX],SI02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》22存儲器操作數(shù)字節(jié)字雙字124類型存儲單元個數(shù)一般不允許兩個操作數(shù)同時為存儲器操作數(shù)3)存儲器操作數(shù)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》23存儲單元的物理地址=段基地址+偏移地址

若指令中沒有指明所涉及的段寄存器,CPU就采用默認(rèn)的段寄存器來確定操作數(shù)所在的段。

存儲器操作數(shù)的偏移地址(也稱有效地址)可以通過不同的尋址方式由指令給出。3)存儲器操作數(shù)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》24例如,若(BX)=2000H,(SI)=0A00H,(DI)=2A00H,則以下指令的結(jié)果是一樣的:

MOVAL,[2A00H] MOVAL,[BX+0A00H] MOVAL,[BX][SI] MOVAL,[DI]3)存儲器操作數(shù)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》254.指令字長及執(zhí)行速度指令字長:由操作碼的長度、操作數(shù)地址長度、操作數(shù)個數(shù)決定;指令的字長影響指令的執(zhí)行速度對不同的操作數(shù),指令執(zhí)行的時間不同:存儲器立即數(shù)寄存器快!02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》26一條指令的執(zhí)行時間=∑取指令取操作數(shù)執(zhí)行指令傳送結(jié)果單位用時鐘周期數(shù)表示結(jié)論:

1)盡量使用寄存器作為操作數(shù)

2)若有可能,用移位代替乘除法

3)盡量使用簡單的尋址方式4.指令字長及執(zhí)行速度02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》275.指令按功能分為六大類(92種)1)數(shù)據(jù)傳送類;2)算術(shù)運算類;3)邏輯運算和移位;4)串操作;5)控制轉(zhuǎn)移類;6)處理器控制02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》28類型:尋找操作數(shù)所在地址(與數(shù)據(jù)有關(guān)的尋址方式)尋找程序轉(zhuǎn)移的目標(biāo)地址(與轉(zhuǎn)移地址有關(guān)的尋址方式)4.1.2尋址方式02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》29在8086指令系統(tǒng)中,說明操作數(shù)所在地址的尋址方式可分為8種:

①立即尋址⑤寄存器相對尋址

②直接尋址⑥基址-變址尋址

③寄存器尋址⑦相對的基址-變址尋址

④寄存器間接尋址⑧隱含尋址一、與數(shù)據(jù)有關(guān)的尋址方式02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》301.立即尋址操作數(shù)(為一常數(shù))直接由指令給出,(此操作數(shù)稱為立即數(shù)),立即尋址只能用于源操作數(shù)例:MOVAX,1234HMOV1234H,AX;錯誤!12H34HAHALMOV代碼段┇

02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》31立即數(shù)操作碼低8位高8位存儲器MOV操作碼02H31HAHAL代碼段代碼段立即尋址指令在存儲器中的存放形式AX指令操作例:MOVAX,3102H;AX3102H執(zhí)行后,(AH)=31H,(AL)=02H1.立即尋址02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》322.直接尋址指令中直接給出操作數(shù)的16位偏移地址(也稱有效地址)例:MOVAX,[1200H]22H11H1200H偏移地址┇

數(shù)據(jù)段AHAL02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》33

偏移地址也可用符號地址來表示,如ADR、VAR、WQT

例:

MOVAX,[2A00H]MOVDX,ES:[2A00H]MOVSI,TABLE_PTR2.直接尋址02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》342.直接尋址直接尋址方式下,操作數(shù)的段地址默認(rèn)為數(shù)據(jù)段,但允許段重設(shè),即由指令定義段。(段超越前綴)例:MOVAX,ES:[1200H]02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》35指令操作例:MOVAX,[3100H]AL[3100H],AH[3101H]如果(DS)=6000H,[63010H]=CDH,[63011H]=ABH則操作數(shù)的物理地址為:60000H+3100H=63100H指令執(zhí)行后:(AX)=ABCDHMOV操作碼00H31HAHAL63100HCDHABH存儲器代碼段數(shù)據(jù)段..63101H2.直接尋址02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》36

操作數(shù)放在CPU某個寄存器中源操作數(shù)與目的操作數(shù)字長要相同寄存器尋址與段地址無關(guān)例:MOVAX,BXMOV[3F00H],AXMOVCL,AL

錯誤例:

×MOVAX,BL;字長不同

×MOVES:AX,DX;寄存器與段無關(guān)3.寄存器尋址02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》37AXSI2233H2233H指令操作例:MOVSI,AX;SI(AX)

指令執(zhí)行前:(AX)=2233H

指令執(zhí)行后:(AX)=2233H,(SI)=2233H3.寄存器尋址02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》384.寄存器間接尋址參與操作的操作數(shù)存放在內(nèi)存中,其偏移地址為指令中的寄存器的內(nèi)容。例:MOVAX,[BX]02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》394.寄存器間接尋址由寄存器間接給出操作數(shù)的偏移地址;存放偏移地址的寄存器稱為間址寄存器,它們是:BX,BP,SI,DI操作數(shù)的段地址(數(shù)據(jù)處于哪個段)取決于選擇哪一個間址寄存器:

BX,SI,DI默認(rèn)在數(shù)據(jù)段

BP默認(rèn)在堆棧段02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》40只有SI、DI、BX和BP可作間址寄存器例:MOVAX,[BX]MOVCL,CS:[DI]

錯誤例:

×MOVAX,[DX]×

MOVCL,[AX]4.寄存器間接尋址02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》414.寄存器間接尋址例:

設(shè)(BX)=1200H

則執(zhí)行MOVAX,[BX]后22H11H1200H偏移地址AHAL┇

1122數(shù)據(jù)段代碼段MOV02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》424.寄存器間接尋址寄存器間接尋址基址尋址(間址寄存器為基址寄存器BX,BP)變址尋址(間址寄存器為變址寄存器SI,DI)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》43指令操作例:MOVAX,[SI]若(DS)=6000H,

(SI)=1200H,(61200H)=44H,(61201H)=33H則指令執(zhí)行后,(AX)=3344H。44H33H60001200DSSI6000061200

61200HAX存儲器數(shù)據(jù)段

+)120044H33H02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》445.寄存器相對尋址操作數(shù)的偏移地址=寄存器的內(nèi)容+8/16位的位移量EA=

(BX)(BP)(SI)(DI)+

8位16位位移量

02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》455.寄存器相對尋址

寄存器相對尋址常用于存取表格或一維數(shù)組中的元素——把表格的起始地址作為位移量,元素的下標(biāo)值放在間址寄存器中(或反之)。

MOVAX,[BX+8]MOVCX,TABLE[SI]MOVAX,[BX+DATA]MOVAX,[BP+1000H];默認(rèn)段寄存器為SS02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》465.寄存器相對尋址例:MOVAX,[BX+DATA]若:(DS)=6000H,(BX)=1000H,DATA=2A00H,(63A00H)=66H(63A01H)=55H則:物理地址=60000H+1000H+2A00H=63A00H指令執(zhí)行后:(AX)=5566H02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》47操作碼00偏移量低2A偏移量高DS6000BX1000+DATA2A0063A0063A00HAHALAX代碼段數(shù)據(jù)段.........66H55HMOVAX,DATA[BX]02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》486.基址加變址尋址操作數(shù)的偏移地址為一個基址寄存器的內(nèi)容加上一個變址寄存器的內(nèi)容,操作數(shù)的段地址由選擇的基址寄存器決定例:MOVAX,[SI+BX]EA=

(BX)(BP)+(SI)(DI)同一組內(nèi)的寄存器不能同時出現(xiàn)。02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》49例:

MOVAX,[BX][SI]MOVAX,[BX+SI]MOVAX,DS:[BP][DI]錯誤例:

×

MOVAX,[BX][BP]

×

MOVAX,[DI][SI]6.基址加變址尋址02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》50

83000操作碼DS8000BX2000

+SI100083000HAHALAX代碼段數(shù)據(jù)段.........YYXX指令操作例:MOVAX,[BX][SI]假定:(DS)=8000H,(BX)=2000H,SI=1000H則物理地址=80000H+2000H+1000H=83000H指令執(zhí)行后:(AL)=[83000H](AH)=[83001H]02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》517.基址、變址、相對尋址操作數(shù)的偏移地址為一個基址寄存器的內(nèi)容加上一個變址寄存器的內(nèi)容,再加上一個位移量。操作數(shù)的段地址由選擇的基址寄存器決定例:MOVAX,[BP+SI+DATA]EA=

(BX)(BP)+(SI)(DI)+8位16位位移量

02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》527.基址、變址、相對尋址MOVAX,BASE[SI][BX]MOVAX,[BX+BASE][SI]MOVAX,[BX+SI+BASE]MOVAX,[BX]BASE[SI]MOVAX,[BX+SI]BASE

例:02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》53指令操作例:MOVAX,DATA[DI][BX]若(DS)=8000H,(BX)=2000H,(DI)=1000H,DATA=200H則指令執(zhí)行后(AH)=[83021H],(AL)=[83020H]8320083200HAHALAX+DATA

0200操作碼代碼段數(shù)據(jù)段.........YYXXDS

8000BX

2000

DI

100002二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》54使用相對的基址-變址尋址方式可以很方便地訪問二維數(shù)組基址寄存器數(shù)組首地址變址寄存器數(shù)組元素行址位移量數(shù)組元素列址(偏移地址)二維數(shù)組例:內(nèi)存圖示(按行存儲)(行位移地址)(行內(nèi)元素下標(biāo))183252409A=02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》55位移量可用符號表示在寄存器相對尋址或相對基址變址尋址方式中,位移量可用符號表示:MOVAX,[SI+COUNT];COUNT事先定義有數(shù)值MOVAX,[BX+SI+WNUM];WNUM事先定義有數(shù)值02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》56同一尋址方式有多種表示形式MOVAX,[BX][SI]

MOVAX,[BX+SI]MOVAX,COUNT[SI]

MOVAX,[SI+COUNT]MOVAX,WNUM[BX][SI]MOV

AX,WNUM[BX+SI]

MOVAX,[BX+SI+WNUM]COUNT和WNUM是事先定義的標(biāo)識符(數(shù)值)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》578.隱含尋址指令隱含了的一個或兩個操作數(shù)的地址,即操作數(shù)在默認(rèn)的地址中例:MULBL

指令的執(zhí)行:AL×BLAX指令隱含了被乘數(shù)AL及乘積AX類似的指令還有:DIV、CBW、MOVS等02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》58尋址方式可分為立即尋址直接尋址寄存器相對尋址寄存器尋址基址-變址尋址基址-變址相對尋址寄存器間接尋址小結(jié)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》59

寄存器間接、寄存器相對、基址變址、相對基址變址四種尋址方式的比較:

尋址方式指令操作數(shù)形式

寄存器間接只有一個寄存器(BX/BP/SI/DI之一)

寄存器相對一個寄存器加上位移量基址—變址兩個不同類別的寄存器相對基址-變址兩個不同類別的寄存器加上位移量小結(jié)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》60立即數(shù)尋址與直接尋址區(qū)分

MOVAX,3100H

MOVAX,[3100H]

將立即數(shù)送入AX將3100H單元的內(nèi)容送入AX02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》61寄存器尋址與寄存器間接尋址區(qū)分

MOVAX,BX

MOVAX,[BX]

將BX的內(nèi)容送AX

將BX指示地址中內(nèi)容送AX02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》62二、與轉(zhuǎn)移地址有關(guān)的尋址方式

1.段內(nèi)直接尋址2.段內(nèi)間接方式3.段間直接尋址4.段間間接方式

02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》631.段內(nèi)直接尋址段內(nèi)直接尋址方式也稱為相對尋址方式,轉(zhuǎn)移的目標(biāo)地址是當(dāng)前IP內(nèi)容和一個8位或16位的位移量之和,這個位移量才是指令代碼的一部分,所以叫相對尋址。如圖所示02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》64

段內(nèi)直接尋址方式既可用在條件轉(zhuǎn)移指令,也可用無條件轉(zhuǎn)移指令或調(diào)用指令中。例:JMPNEARPTRPROGIA;

JMPSHORTPROGIAPROGIA為轉(zhuǎn)向的符號地址,在機(jī)器指令中,用位移量來表示。位移量為16位,則在前加操作符NEARPTR位移量為8位,則在符號地址前加SHORT

1.段內(nèi)直接尋址02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》652.段內(nèi)間接方式這種方式也是在段內(nèi),其轉(zhuǎn)移的目標(biāo)地址是寄存器或存儲單元的內(nèi)容,即以寄存器或存儲器單元內(nèi)容來更新IP的內(nèi)容,所以是絕對偏移量,注意和段內(nèi)直接方式的相對偏移量的區(qū)別。若目標(biāo)地址為存儲單元內(nèi)容,則該存儲單元本身可由上述與存儲器操作數(shù)有關(guān)的任何尋址方式尋址,只是它里面的內(nèi)容為新的IP值。如圖所示。02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》66

段內(nèi)間接尋址方式可適用于無條件轉(zhuǎn)移指令和調(diào)用指令中。例:JMPBX;

JMPWORDPTR[BP+TABLE]

WORDPTR為操作符,用以指出其后的尋址方式所取得的轉(zhuǎn)向地址是一個字的有效地址,即段內(nèi)轉(zhuǎn)移。

2.段內(nèi)間接尋址02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》673.段間直接尋址這種方式用于段間轉(zhuǎn)移,目標(biāo)地址的段基值(CS)和偏移地址(IP)都是指令碼的組成部分,用來更新當(dāng)前CS和IP。如圖所示。02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》68

例:JMPFARPTRNEXTR;

FARPTR表示段間轉(zhuǎn)移操作符;NEXTR為轉(zhuǎn)向符號地址;

3.段間直接尋址02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》694.段間間接方式這種方式用于段間轉(zhuǎn)移,當(dāng)前CS和IP由存儲器中連續(xù)的兩個字更新,低位地址的字更新IP,高位地址的字更新CS,存放新IP和CS的存儲單元地址由前述存儲器操作數(shù)的尋址方式?jīng)Q定。例:JMPDWORDPTR[INTER+BX]

;取DS段中偏移為[INTER+BX]處的雙字作為新的CS和IP。第二節(jié)

8086的指令系統(tǒng)movax,12hcalldisplayJmp1234h02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》71從功能上包括六大類:數(shù)據(jù)傳送指令算術(shù)運算指令邏輯運算和移位指令串操作指令程序控制指令處理器控制指令4.28086指令系統(tǒng)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》72

mem

存儲器操作數(shù)

acc

累加器操作數(shù)

dest

目標(biāo)操作數(shù)

src

源操作數(shù)

disp

8位或16位偏移量,可用符號地址表示

DATA

8位或16位數(shù)據(jù)

port

輸入輸出端口

()

表示寄存器的內(nèi)容

[]

表示存儲器的內(nèi)容或偏移地址指令介紹中采用符號的含義02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》73主要內(nèi)容:4.2.1數(shù)據(jù)傳送指令4.2.2算術(shù)運算指令4.2.3邏輯運算和移位指令4.2.4串操作指令4.2.5程序控制指令4.2.6處理器控制指令4.28086指令系統(tǒng)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》74

可實現(xiàn)

存儲器寄存器I/O4.2.1數(shù)據(jù)傳送指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》754.2.1數(shù)據(jù)傳送指令通用傳送指令累加器專用傳送指令(輸入輸出指令)地址傳送指令標(biāo)志傳送指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》76最基本的傳送指令(MOV)堆棧操作指令(PUSH,POP)數(shù)據(jù)交換指令(XCHG)換碼指令(XLAT)字位擴(kuò)展指令(CBW/CWD)特點:所有通用傳送指令都不影響標(biāo)志位1.通用數(shù)據(jù)傳送指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》77通用數(shù)據(jù)傳送指令格式表1.通用數(shù)據(jù)傳送指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》781)最基本的傳送指令一般數(shù)據(jù)傳送指令MOV格式:MOVdest,src操作:srcdest例:MOVAL,BLMOV[DI],AXMOVCX,[1000H]MOVBL,4002二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》79例:

MOVWORD

PTR[SI],01H;

WORDPTR字長度標(biāo)記

BYTEPTR字節(jié)長度標(biāo)記

DWORDPTR雙字長度標(biāo)記(偽指令)1)最基本的傳送指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》80

傳送的是字節(jié)還是字取決于指令中涉及的寄存器是8位還是16位。具體來說可實現(xiàn):①MOVmem/reg1,mem/reg2

指令中兩操作數(shù)中至少有一個為寄存器例:MOV CL,DLMOV AX,BX MOV [SI],CX MOV CL,[BX+5]1)最基本的傳送指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》81②MOVreg,data;立即數(shù)送寄存器③MOVmem,data;立即數(shù)送存儲單元④MOVacc,mem;存儲單元送累加器⑤MOVmem,acc;累加器送存儲單元⑥MOVsegreg,mem/reg;

存儲單元/寄存器送段寄存器⑦M(jìn)OVmem/reg,segreg;

段寄存器送存儲單元/寄存器1)最基本的傳送指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》82MOV指令使用規(guī)則:IP不能作目的寄存器;不允許mem2←mem1(存儲器);不允許segreg←segreg(段寄存器);立即數(shù)不允許作為目的操作數(shù);不允許segreg←立即數(shù);源操作數(shù)與目的操作數(shù)類型要一致;IP和CS不作為目標(biāo)操作數(shù),F(xiàn)LAGS一般也不作為操作數(shù)在指令中出現(xiàn)。1)最基本的傳送指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》83幾種不允許傳送的解決辦法: 用寄存器如AX作橋梁。存儲器←存儲器: MOVAX,MEM1 MOVMEM2,AX段寄存器←段寄存器: MOVAX,DS MOVES,AX段寄存器←立即數(shù): MOVAX,DATA MOVDS,AX02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》841)最基本的傳送指令判斷下列指令的正確性:MOVAL,BXMOVAX,[SI]05HMOV[BX][BP],BXMOVDS,1000HMOVDX,09HMOV[1200H],[SI]02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》852)堆棧操作指令掌握:有關(guān)堆棧的概念(棧頂、棧首、棧底)堆棧指令的操作原理(執(zhí)行過程、執(zhí)行結(jié)果)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》86堆棧操作的原則先進(jìn)后出以字為單位02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》87什么是堆棧?按“后進(jìn)先出(LIFO)”方式工作的存儲區(qū)域。堆棧以字為單位進(jìn)行壓入/彈出操作。為什么要設(shè)置堆棧?為什么要按“后進(jìn)先出”方式工作?2)堆棧操作指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》88由SS指示堆棧段的段基址;堆棧指針SP始終指向堆棧的頂部;SP的初值規(guī)定了所用堆棧區(qū)的大小;堆棧的最高地址叫棧底。SPSS堆棧段進(jìn)棧方向退棧方向棧底棧頂02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》89子程序調(diào)用示意圖(a)主程序調(diào)子程序;(b)子程序嵌套示意圖(a)主程序IP繼續(xù)執(zhí)行主程序執(zhí)行子程序轉(zhuǎn)子程序壓棧彈出返回主程序IP(下)主程序IPIP(下)繼續(xù)執(zhí)行主程序轉(zhuǎn)子程序1返回主程序IP’執(zhí)行子程序2轉(zhuǎn)子程序2返回子程序1IP’(下)執(zhí)行子程序1繼續(xù)執(zhí)行子程序1(b)壓棧1彈出1壓棧2彈出202二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》90壓棧指令PUSH格式:PUSH SRC(src為16位操作數(shù))指令執(zhí)行過程:(SP)(SP)-2

(SP)-1操作數(shù)高字節(jié)(SP)-2操作數(shù)低字節(jié)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》91

PUSHAX ;將AX內(nèi)容壓棧執(zhí)行操作:(SP)←(SP)-2

[(SP)-1]←高字節(jié)(AH)[(SP)-2]←低字節(jié)(AL)PUSHreg

;

PUSHAXPUSHmem/reg

;PUSH[BX]PUSHsegreg

PUSHDS壓棧指令PUSH02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》92設(shè)(AX)=1020HPUSHAX指令執(zhí)行示意圖10(AH)20(AL)存儲區(qū)(SS段)進(jìn)棧方向PUSH后低地址高地址低地址存儲區(qū)(SS段)PUSH前(AX)=1020H(SP)-2(SP)高地址(SP)-1(SP)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》93壓棧指令PUSH設(shè)AX=1020H,SP=1200H執(zhí)行PUSHAX指令后堆棧區(qū)的狀態(tài):1200H┇

堆棧段SP-2=11FEH10H20H1200H┇

堆棧段12H34HAX入棧后入棧前SP02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》94出棧指令POP格式:POPdest指令執(zhí)行過程:

(SP)操作數(shù)低字節(jié)(SP)+1操作數(shù)高字節(jié)(SP)←(SP)+202二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》95執(zhí)行POPAX堆棧區(qū)的狀態(tài):10H20H11FEH┇

堆棧段代碼段PUSH

10H20H

AX

SP+2出棧指令POP02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》96例:POP BX ;將棧頂內(nèi)容彈至BX

執(zhí)行操作:(BL)←[SP](BH)←[(SP)+1](SP)←(SP)+2出棧指令POP02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》97POPBX的執(zhí)行示意圖(SP)出棧方向存儲區(qū)(SS段)POP后(BX)=1020H低地址高地址低地址存儲區(qū)(SS段)POP前2010(SP)(SP)+1(SP)+2高地址BX201002二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》98

堆棧操作總是按字進(jìn)行;不能從棧頂彈出一個字給CS;堆棧指針為SS:SP,SP永遠(yuǎn)指向棧頂;

SP自動進(jìn)行增減量(-2,+2)操作數(shù)可以是寄存器或存儲器兩單元,但不能是立即數(shù);

PUSH指令的操作方向是從高地址向低地址,而POP指令的操作正好相反堆棧操作指令說明02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》99堆棧操作指令例PUSHAXPUSHBXPUSHWORDPTR[BX]POPWORDPTR[BX]POPBXPOPAX02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》100格式:XCHG

reg,mem/reg功能:交換源操作數(shù)與目的操作數(shù)的內(nèi)容。要求:兩操作數(shù)中必須至少有一個在寄存器中;操作數(shù)不能為段寄存器和立即數(shù);源和目地操作數(shù)類型要一致。(3)交換指令XCHG舉例:

XCHGAX,BX

XCHG

[2000],CL02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》101例:交換指令XCHGAL,CL;字節(jié)交換XCHGBX,SI;字交換XCHGAX,[BX+SI]

;寄存器和存儲器之間交換數(shù)據(jù)(3)交換指令XCHG02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》102下列指令是非法的XCHGAX,6234H

;寄存器與立即數(shù)之間不能交換XCHGBUF1,BUF2

;存儲器單元與存儲器單元之間不能交換XCHGADDR,4234H

;存儲器單元與立即數(shù)之間不能交換XCHGCS,DAT[BX]

;不能與CS(或IP)寄存器進(jìn)行交換(3)交換指令XCHG02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》103格式:

XLAT說明:又叫查表轉(zhuǎn)換指令,它可根據(jù)表項序號查出表中對應(yīng)代碼的內(nèi)容。執(zhí)行時先將表的首地址(偏移地址)送到BX中,表項序號存于AL中。BX+AL得到要查找元素的偏移地址操作:[BX+AL]AL(4)換碼指令XLAT02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》104303132...394142...4546...42000H+042000H+11‘0’‘1’‘2’‘9’‘A’‘B’‘E’‘F’十六進(jìn)制數(shù)ASCII碼表存儲器例:內(nèi)存數(shù)據(jù)段有一張16進(jìn)制數(shù)的ASCII碼表,設(shè)其首地址為2000H,如欲查出表中第11個代碼(代碼序號從0開始)即十六進(jìn)制數(shù)B的ASCII碼。ASCII表在DS段中,并假設(shè)(DS)=4000H。(4)換碼指令XLAT02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》105則可用如下幾條指令實現(xiàn):

MOVBX,2000H

;(BX)←表首地址

MOVAL,0BH

;(AL)←序號

XLAT

;查表轉(zhuǎn)換 ;AL←[(BX)+(AL)]執(zhí)行后得到:(AL)=42H=’B’注意:轉(zhuǎn)換表長度最大為256個表項(1字節(jié))(4)換碼指令XLAT02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》106將符號數(shù)的符號位擴(kuò)展到高位;指令為零操作數(shù)指令,采用隱含尋址,隱含的操作數(shù)為AX及AX,DX無符號數(shù)的擴(kuò)展規(guī)則為在高位補(bǔ)0字節(jié)到字的擴(kuò)展字到雙字的擴(kuò)展(5)字位擴(kuò)展指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》107字節(jié)到字的擴(kuò)展指令格式:

CBW操作:將AL內(nèi)容擴(kuò)展到AH規(guī)則:若最高位=1,則執(zhí)行后AH=FFH

若最高位=0,則執(zhí)行后AH=00H02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》108字到雙字的擴(kuò)展指令格式:

CWD操作:將AX內(nèi)容擴(kuò)展到DX規(guī)則:若最高位=1,則執(zhí)行后DX=FFFFH

若最高位=0,則執(zhí)行后DX=0000H02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》109(5)字位擴(kuò)展指令用途:用于有符號數(shù)的除法。例如:(AL)=A7H,則執(zhí)行CBW后,AX的內(nèi)容為FFA7H。

MOVAL,44HCBWMOVAX,0AFDEHCWD執(zhí)行結(jié)果?02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》1102.輸入輸出指令(累加器專用傳送)專門面向I/O端口操作的指令掌握:指令的格式及操作指令的兩種尋址方式指令對操作數(shù)的要求只限于用累加器AL或AX來傳送信息。功能:(累加器)←→I/O端口02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》111指令格式:輸入指令I(lǐng)Nacc,PORT輸出指令OUTPORT,acc端口地址累加器2.輸入輸出指令(累加器專用傳送)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》112輸入輸出指令按其尋址方式可以分為兩大類:一類是直接尋址的輸入輸出指令;另一類是間接尋址的輸入輸出指令。直接尋址直接給出8位端口地址,可尋址256個端口間接尋址

16位端口地址由DX指定,可尋址64K個端口2.輸入輸出指令(累加器專用傳送)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》113(1)輸入指令I(lǐng)N格式:INAL,port;port端口號00H~FFH功能:把來自端口port的一個字節(jié)送入AL寄存器格式:INAX,port;功能:把來自端口port和port+1兩個端口的數(shù)據(jù)構(gòu)成一個字送入AX寄存器,port端口的數(shù)據(jù)送入AL,port+1端口的數(shù)據(jù)送入AH。2.

輸入輸出指令(累加器專用傳送)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》114例:

INAL,80H;(AL)←(80H端口)

INAX,70H;(AL)←(70H端口)(AH)←(71H端口)

2.

輸入輸出指令(累加器專用傳送)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》115(2)輸出指令OUT格式:OUTport,AL;port端口號00H~255H功能:把AL寄存器中的一個字節(jié)送入端口port格式:OUTport,AX;功能:把AX寄存器中的一個字送入port和port+1AL的數(shù)據(jù)送入port端口,

AH的數(shù)據(jù)送入port+1端口。2.

輸入輸出指令(累加器專用傳送)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》116例:

OUT44H,AL;

(AL)(44H端口)

;將AL中的1個字節(jié)輸出到44H端口

OUT80H,AX;

(AL)(80H端口)

(AH)(81H端口)

;將AX中的內(nèi)容輸出到80H、81H兩端口,AL中的內(nèi)容輸出到80H,AH中的內(nèi)容輸出到81H2.

輸入輸出指令(累加器專用傳送)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》117

在間接尋址的IN/OUT指令執(zhí)行前,在DX寄存器中事先用傳送指令設(shè)置好I/O端口號。

IN

AL,DX;從DX所指的端口中讀取1個字節(jié)

IN

AX,DX;從DX和DX+1所指出的兩個端口中讀取1個字,(AL)←((DX));(AH)←((DX+1)OUTDX,AL;將AL的字節(jié)輸出到DX所指端口

OUTDX,AX;(AL)((DX));

(AH)((DX+1)2.

輸入輸出指令(累加器專用傳送)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》118

在使用間接尋址的IN/OUT指令時,要事先用傳送指令把I/O端口號設(shè)置到DX寄存器,如:

MOVDX,220H

INAL,DX;將220H端口內(nèi)容讀入AL例1:把端口30H的內(nèi)容經(jīng)過AL送到存儲器單元DAT中,程序片斷為:

INAL,30H

MOVDAT,AL2.

輸入輸出指令(累加器專用傳送)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》119例2:從端口2000H送一個字到AL寄存器中,程序片斷為:

MOVDX,2000HINAX,DX例3:將AX中的數(shù)據(jù)通過端口地址3000H送出的程序片斷為:

MOVDX,3000HOUTDX,AX2.

輸入輸出指令(累加器專用傳送)02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》1203.地址傳送指令取偏移地址指令LEALDS指令LES指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》121目標(biāo)地址傳送指令格式表3.地址傳送指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》122用途:用于傳送操作數(shù)的地址格式:LEA

reg,mem

;將指定內(nèi)存單元的偏移地址送到指定寄存器要求:

1)

源操作數(shù)必須是一個存儲器操作數(shù);

2)目的操作數(shù)必須是一個16位的通用寄存器。1)取有效地址指令LEA02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》123例:LEA BX,[SI+10H]

設(shè):(SI)=1000H

則執(zhí)行該指令后,(BX)=1010H注意以下指令差別:

LEABX,[2000H]

;將存儲單元的偏移地址取到BX

MOVBX,[2000H];將存儲單元中的內(nèi)容取到BX1)取有效地址指令LEA02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》124BX4030低地址存儲區(qū)高地址BX4030 h…………002042000H42001H(DS)=4000H執(zhí)行LEA指令時執(zhí)行MOV指令時1)取有效地址指令LEA02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》125下面兩條指令等效:

LEABX,BUFFERMOVBX,OFFSETBUFFER

其中,OFFSETBUFFER表示存儲器單元BUFFER的偏移地址。二者都可用于取存儲器單元的偏移地址。1)取有效地址指令LEA02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》126LEA指令比較下列指令:LEASI,DATA1MOVSI,DATA1MOVBX,[BX]LEABX,[BX]符號地址02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》127┇

DATA112H34H1100H88H77HBX=1100HLEA指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》128LEA指令在程序中的應(yīng)用將數(shù)據(jù)段中首地址為MEM1的50個字節(jié)的數(shù)據(jù)傳送到同一邏輯段首地址為MEM2的區(qū)域存放。編寫相應(yīng)的程序段。02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》129LEA指令在程序中的應(yīng)用

開始取源地址取目標(biāo)地址送數(shù)據(jù)塊長度到CL傳送一個字節(jié)修改地址指針修改計數(shù)值計數(shù)值=0?結(jié)束NY02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》130LEA指令在程序中的應(yīng)用

LEASI,MEM1LEADI,MEM2

MOVCL,50NEXT:MOVAL,[SI]MOV[DI],ALINCSIINCDIDECCLJNZNEXTHLT02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》1312)取遠(yuǎn)地址指針指令LDSreg,srcLESreg,src指令中源操作數(shù)是存儲器某4個連續(xù)單元的偏移地址,目標(biāo)操作數(shù)是間址寄存器。02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》132LDSREG,SRC操作:reg[src]

DS[src+2]指令功能: 將地址指針(共4個字節(jié))裝入DS和另一個間址寄存器(BX/BP/SI/DI)2)取遠(yuǎn)地址指針指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》133例:

LDSDI,[2130H];設(shè)(DS)=3000H低地址存儲區(qū)高地址4030…………32130H0050DI4030DS005002二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》134LDS指令例例:

LDSDI,[1200H]MOVAX,[DI]指令執(zhí)行后:02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》135LDS指令例DS=6000HDI=1234HAX=2233H┇

12H34H00H60H1200H數(shù)據(jù)段1┇

DSDI數(shù)據(jù)段233H22H61234H02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》136LESREG,SRC操作:reg[src]

ES[src+2]指令功能: 將地址指針(共4個字節(jié))裝入ES和另一個間址寄存器(BX/BP/SI/DI)LDS和LES指令為切換數(shù)據(jù)段提供了方便。2)取遠(yuǎn)地址指針指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》137LES指令例LESDI,[1200H]MOVAX,[DI]┇

12H34H00H60H1200H數(shù)據(jù)段┇

ESDI附加段33H22H61234H02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》1384.標(biāo)志位傳送指令LAHF(讀取標(biāo)志指令)SAHF(設(shè)置標(biāo)志指令)PUSHF(對標(biāo)志寄存器的推入堆棧指令)POPF(對標(biāo)志寄存器的彈出堆棧指令)隱含操作數(shù)AH隱含操作數(shù)FLAGS02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》139LAHF

;將FLAGS的低8位裝入AHSAHF;執(zhí)行與LAHF相反的操作CFPFAFZFCF….AHFLAGSD15D0D7D04.標(biāo)志位傳送指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》140OFDFIFTFSFZFAFPFCFAHLAHF指令的功能FLAGS(1)讀標(biāo)志指令LAHFLAHF把標(biāo)志寄存器低8位中的5個標(biāo)志位傳送到AH中的指定位,如下圖所示:4.標(biāo)志位傳送指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》141(2)設(shè)置標(biāo)志指令SAHF

SAHF的功能與LAHF的功能正好相反,用圖來示意,只要將上圖中5個箭頭方向反一下即可。OFDFIFTFSFZFAFPFCFAHSAHF指令的功能FLAG4.標(biāo)志位傳送指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》142PUSHF,POPF

針對FLAGS的堆棧操作指令將標(biāo)志寄存器壓?;驈亩褩棾?/p>

PUSHF和POPF指令用于保護(hù)和恢復(fù)標(biāo)志寄存器內(nèi)容,也即一般用于在子程序和中斷處理程序的首尾,起保存主程序標(biāo)志和恢復(fù)主程序標(biāo)志的作用。4.標(biāo)志位傳送指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》143

(3)把標(biāo)志寄存器推入棧頂指令PUSHF執(zhí)行的操作:(SP)-1←標(biāo)志寄存器高8位

(SP)-2←標(biāo)志寄存器低8位

(SP)←(SP)-24.標(biāo)志位傳送指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》144

(4)從棧頂彈出標(biāo)志寄存器指令POPF

執(zhí)行的操作:標(biāo)志寄存器低8位←(SP)

標(biāo)志寄存器高8位←(SP)+1 (SP)←(SP)+24.標(biāo)志位傳送指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》145例如:

PUSH AXPUSH CX

PUSHF

;保護(hù)標(biāo)志寄存器內(nèi)容

;這段程序要用到AX,CX以及標(biāo)志位

POPF ;恢復(fù)標(biāo)志寄存器內(nèi)容

POP CXPOP AX...數(shù)據(jù)傳送指令中,除SAHF和POPF這兩條指令外,其余所有指令均不影響標(biāo)志位。02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》146二、算術(shù)運算類指令加法運算指令減法運算指令乘法指令除法指令BCD碼運算指令算術(shù)運算指令的執(zhí)行大多對狀態(tài)標(biāo)志位會產(chǎn)生影響02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》1471.加法指令不帶進(jìn)位的加法指令A(yù)DD帶進(jìn)位位的加法指令A(yù)DC增量指令(加1指令)INC加法指令對操作數(shù)的要求與MOV指令相同02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》1481)不帶進(jìn)位的加法指令A(yù)DD指令格式:

ADDOPRD1,OPRD2操作:

OPRD1OPRD1+OPRD2ADD指令的執(zhí)行對全部6個狀態(tài)標(biāo)志位都產(chǎn)生影響02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》149

格式:ADD acc,data

ADD mem/reg,data

ADDmem/reg1,mem/reg2

實例:

ADD AL,30H

ADD SI,[BX+20H]

ADD CX,SI

ADD [DI],200H1)不帶進(jìn)位的加法指令A(yù)DD指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》150

例:已知(BX)=E75FH,指令A(yù)DDBX,8046H

執(zhí)行后,狀態(tài)標(biāo)志各是多少?

E75FH=11100111010111118046H=10000000010001101

1

1

1

1

10110011110100101結(jié)果:CF=1,ZF=0,PF=1,

AF=1,OF=1,SF=0PF:低8位中1的個數(shù)是否為偶數(shù)!1)不帶進(jìn)位的加法指令A(yù)DD指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》1512)帶進(jìn)位位的加法指令A(yù)DC指令指令格式、對操作數(shù)的要求、對標(biāo)志位的影響與ADD指令完全一樣指令的操作:

OPRD1OPRD1+OPRD2+CF

ADC指令多用于多字節(jié)數(shù)相加運算02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》152

ADC指令在形式上和功能上與ADD類似,只是相加時還要包括進(jìn)位標(biāo)志CF的內(nèi)容,例如:

ADCAL,68H;AL←(AL)+68H+(CF) ADCAX,CX;AX←(AX)+(CX)+(CF)ADCBX,[DI]

;BX←(BX)+[DI+1][DI]+(CF)2)帶進(jìn)位位的加法指令A(yù)DC指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》153

例:有兩個4字節(jié)的無符號數(shù)相加:

2C56F8ACH+309E47BEH=?設(shè)被加數(shù)、加數(shù)分別存放在BUFFER1及BUFFER2開始的兩個存儲區(qū)內(nèi),結(jié)果放回BUFFER1存儲區(qū)。(見下頁圖)

因CPU只能進(jìn)行8位或16位的加法運算,為此可將兩數(shù)分成低字和高字分別相加。2)帶進(jìn)位位的加法指令A(yù)DC指令02二月2023中北大學(xué)《微機(jī)原理及接口技術(shù)》15456H2CHBEH47HBUFFER1BUFFER2ACHF8H9EH30H被加數(shù)加數(shù)數(shù)據(jù)段多字節(jié)加法示意圖.

溫馨提示

  • 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

提交評論