微型計(jì)算機(jī)原理與接口技術(shù)(馮博琴第2版)第3章1_第1頁(yè)
微型計(jì)算機(jī)原理與接口技術(shù)(馮博琴第2版)第3章1_第2頁(yè)
微型計(jì)算機(jī)原理與接口技術(shù)(馮博琴第2版)第3章1_第3頁(yè)
微型計(jì)算機(jī)原理與接口技術(shù)(馮博琴第2版)第3章1_第4頁(yè)
微型計(jì)算機(jī)原理與接口技術(shù)(馮博琴第2版)第3章1_第5頁(yè)
已閱讀5頁(yè),還剩113頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第3章

指令系統(tǒng)1主要內(nèi)容:指令系統(tǒng)的一般概念對(duì)作數(shù)的尋址方式六大類(lèi)指令的操作原理:23.1概述指令:控制計(jì)算機(jī)完成某種操作,并被識(shí)別的命令指令系統(tǒng):處理器所能識(shí)別的所有指令的集合指令的兼容性:同一系列機(jī)的指令都是兼容的。38088/8086的指令系統(tǒng)(表3-1,92條指令):傳數(shù)據(jù)傳送指令算術(shù)運(yùn)算指令邏輯運(yùn)算和移位指令串操作指令控制轉(zhuǎn)移指令處理器控制指令3.1概述43.1.1

指令的基本構(gòu)成指令中應(yīng)包含的信息:運(yùn)算數(shù)據(jù)的來(lái)源運(yùn)算結(jié)果的去向執(zhí)行的操作51.指令格式執(zhí)行何種操作目標(biāo)操作數(shù)源操作數(shù)參加操作的數(shù)據(jù)或數(shù)據(jù)存放的地址操作碼[操作數(shù)],[操作數(shù)]61.指令格式:

零操作數(shù)指令:操作碼單操作數(shù)指令:操作碼操作數(shù)雙操作數(shù)指令:操作碼操作數(shù),操作數(shù)72、指令中的操作數(shù)1)立即數(shù)2)寄存器3)存儲(chǔ)器參加操作的數(shù)據(jù)本身數(shù)據(jù)存放的地址81)立即數(shù)操作數(shù)立即數(shù)只能作為源操作數(shù)。其本身是參加操作的數(shù)據(jù),可以是8位或16位。例:

MOVAX,1234HMOVBL,22H【注意】:立即數(shù)無(wú)法作為目標(biāo)操作數(shù)(P93)立即數(shù)相當(dāng)于高級(jí)語(yǔ)言的常數(shù),可以是無(wú)符號(hào)或帶符號(hào)數(shù),其數(shù)值應(yīng)在可取值范圍內(nèi)。92)寄存器操作數(shù):參加運(yùn)算的數(shù)存放在指令給出的寄存器中,可以是16位或8位。例:MOVAX,BXMOVDL,CH注意

:范圍8位:0~255/-128~+12716位:0~35535/-32768~+32767103)存儲(chǔ)器操作數(shù)參加運(yùn)算的數(shù)存放在存儲(chǔ)器的某一個(gè)或某兩個(gè)單元中表現(xiàn)形式:[]立即數(shù)或寄存器11例:

MOVAX,[1200H]MOVAL,[1200H]1200H偏移地址AHAL22H11H┇

12段地址默認(rèn)段DS,BP(SS)

,指定段有效地址:操作數(shù)的偏移地址也稱(chēng)有效地址EA多種尋找方式3)存儲(chǔ)器操作數(shù)133.1.2指令的執(zhí)行時(shí)間指令的字長(zhǎng)影響指令的執(zhí)行速度(常用指令的執(zhí)行時(shí)間見(jiàn)附錄C)對(duì)不同的操作數(shù),指令執(zhí)行的時(shí)間不同:

快!立即數(shù)寄存器存儲(chǔ)器143.1.2指令的執(zhí)行時(shí)間例:若CPU的時(shí)鐘頻率5MHz,即一個(gè)時(shí)鐘周期0.2us,MOV指令寄存器到寄存器T=2×0.2=0.4us立即數(shù)到寄存器T=4×0.2=0.8us存儲(chǔ)器到寄存器,采用基址、變址尋址T=(8+EA)×0.2=(8+8)×0.2

=3.2us153.1.3、CISC和RISC指令系統(tǒng)(了解)CISC指令系統(tǒng)(P95)優(yōu)點(diǎn)指令的功能強(qiáng),種類(lèi)多,高級(jí)語(yǔ)言和機(jī)器語(yǔ)言間的距離縮?。蝗秉c(diǎn)80-20定律指令系統(tǒng)復(fù)雜,控制邏輯不規(guī)整,給VLSI工藝造成困難。指令功能變強(qiáng),但硬件復(fù)雜度增加,程序總的執(zhí)行時(shí)間變長(zhǎng)8088指令屬于CISC163.1.3、CISC和RISC指令系統(tǒng)(了解)RISC指令系統(tǒng)盡量采用寄存器與寄存器之間的操作,以提高速度指令功能較弱,種類(lèi)少,格式簡(jiǎn)單例如指令長(zhǎng)度相等便于采用流水線,多數(shù)指令在1個(gè)計(jì)算機(jī)周期內(nèi)完成CISC與RISC對(duì)比

用CISC編寫(xiě)的程序代碼量小,總執(zhí)行時(shí)間慢用RISC編寫(xiě)的程序代碼量大,總執(zhí)行時(shí)間快173.2尋址方式

尋找操作數(shù)所在地址的方法尋找指令轉(zhuǎn)移地址的方法

本節(jié)尋址包括:18AHAL3.2.1立即尋址指令中的源操作數(shù)是立即數(shù),即源操作數(shù)是參加操作的數(shù)據(jù)本身例:MOVAX,1200H代碼段12H00HMOV┇

注意:低字節(jié)在低地址193.2.2直接尋址指令中直接給出操作數(shù)的偏移地址例:MOVAX,[1200H]設(shè)DS=20000H物理地址22H11H┇

數(shù)據(jù)段AHALDS:20000H1200H21200H203.2.2直接尋址與立即尋址區(qū)別:立即尋址的數(shù)在代碼段,直接尋址的數(shù)在數(shù)據(jù)段直接尋址的16位操作數(shù)是地址,用[],P97直接尋址方式下,操作數(shù)的段地址默認(rèn)為數(shù)據(jù)段,但允許段重設(shè),即由指令定義段。例:MOVAX,ES:[1200H]注意:不能漏方括號(hào)[]213.2.3寄存器尋址參加操作的操作數(shù)在CPU的通用寄存器中。例:MOVAX,BX

AX

BX223.2.4寄存器間接尋址由寄存器間接給出操作數(shù)的偏移地址;存放偏移地址的寄存器稱(chēng)為間址寄存器,它們是:BX,BP,SI,DI操作數(shù)的段地址(數(shù)據(jù)處于哪個(gè)段)取決于選擇哪一個(gè)間址寄存器:P99

BX,SI,DIBP默認(rèn)在數(shù)據(jù)段DS默認(rèn)在堆棧段SS233.2.4寄存器間接尋址例例3-5:MOVAX,[SI]設(shè)DS=6000H,SI=1200H61200H物理地址AHAL1122數(shù)據(jù)段代碼段22H11H┇

MOV參與操作的操作數(shù)存放在內(nèi)存中,其偏移地址為指令中的寄存器的內(nèi)容。243.2.5寄存器相對(duì)尋址操作數(shù)的偏移地址為:寄存器的內(nèi)容加上一個(gè)位移量例3-7:MOVAX,DATA[BX]設(shè):DS=6000H,BX=1000H,DATA=0008H則:物理地址=60000H+1000H+8H=61008HAX=AHAL=[61009H][61008H]P100圖3-6253.2.5寄存器相對(duì)尋址例3-8,將TABLE表中第10項(xiàng)放入AL

MOVSI,9;第10項(xiàng),位移量9MOVAL,[TABLE+SI]以下寫(xiě)法等價(jià)MOVAL,DATA[SI]MOVAL,[SI]DATAMOVAL,[SI]+DATAMOVAL,DATA+[SI]MOVAL,[DATA+SI]聯(lián)想:C語(yǔ)言中的數(shù)組下標(biāo)為什么從0開(kāi)始?263.2.6基址-變址尋址

寄存器間接尋址基址尋址(間址寄存器為基址寄存器BX,BP)變址尋址(間址寄存器為變址寄存器SI,DI)273.2.6基址-變址尋址操作數(shù)的偏移地址為:一個(gè)基址寄存器的內(nèi)容加上一個(gè)變址寄存器的內(nèi)容,操作數(shù)的段地址由選擇的基址寄存器決定例3-9:MOVAX,[BX][SI]DS=8000H,BX=2000H,SI=1000H物理地址=80000H+2000H+1000H=83000HP100圖3-7283.2.6基址-變址尋址MOVAX,[BX][BP];同時(shí)出現(xiàn)兩個(gè)基址寄存器MOVAX,[SI][DI];同時(shí)出現(xiàn)兩個(gè)變址寄存器特別注意:(P101)不允許兩個(gè)基址寄存器(BX/BP)或兩個(gè)變址寄存器(SI/DI)組合在一起尋址293.2.7基址-變址-相對(duì)尋址操作數(shù)的偏移地址為:一個(gè)基址寄存器的內(nèi)容加上一個(gè)變址寄存器的內(nèi)容,再加上一個(gè)位移量。操作數(shù)的段地址由選擇的基址寄存器決定303.2.7基址-變址-相對(duì)尋址例3-10:MOVAX,DATA[BX][SI]物理地址:(DS)×16+(BP)+(SI)+DATAP101圖3-8等價(jià)

MOVAX,DATA[SI][BX]MOVAX,[BX+DATA][SI]MOVAX,[BX+SI+DATA]MOVAX,[BX]DATA[SI]MOVAX,[BX+SI]DATA313.2.7基址-變址-相對(duì)尋址同樣,基址-變址-相對(duì)尋址也不允許指令同時(shí)出現(xiàn)兩個(gè)基址或兩個(gè)變址寄存器下面兩條指令是非法的

MOVAX,DATA[SI][DI]MOVAX,[BX][BP]DATA323.2.8隱含尋址指令隱含了的一個(gè)或兩個(gè)操作數(shù)的地址,即操作數(shù)在默認(rèn)的地址中例:MULBL

指令的執(zhí)行:(AL)×(BL)AX33實(shí)例例:設(shè)BX=0158H,DI=10A5H,位移量DIS=1B57H,DS=2100H,各種尋址方式下,有效地址和物理地址如下:34實(shí)例-直接、寄存器間接①直接尋址:MOVAL,DIS有效地址=1B57H物理地址=21000H+1B57H=22B57H

②寄存器間接尋址(寄存器為BX):

MOVAL,[BX]有效地址=0158H物理地址=21000H+0158H=21158HBX=0158H,DI=10A5H,

DIS=1B57H,DS=2100H35實(shí)例-寄存器相對(duì)變址尋址③BX寄存器相對(duì)間接尋址:MOVAL,[BX]+DIS有效地址=0158H+1B57H=1CAFH物理地址=21000H+1CAFH=22CAFH④變址尋址(寄存器為DI):MOVAL,[DI]有效地址=10A5H物理地址=21000H+10A5H=220A5HBX=0158H,DI=10A5H,

DIS=1B57H,DS=2100H36實(shí)例-寄存器相對(duì)變址、基址加編址⑤DI寄存器相對(duì)變址尋址:MOVAL,[DI]+DIS有效地址=10A5H+1B57H=2BFCH物理地址=21000H+2BFCH=23BFCH⑥基址加變址的尋址(BX為基址寄存器,DI為變址寄存器):MOVAL,[BX]+[DI]有效地址=0158H+10A5H=11FDH物理地址=21000H+11FDH=221FDHBX=0158H,DI=10A5H,

DIS=1B57H,DS=2100H37實(shí)例-相對(duì)基址加變址⑦相對(duì)的基址加變址的尋址(BX為基址寄存器,DI為變址寄存器):MOVAL,[BX][DI]+DIS有效地址=

0158H+10A5H+1B57H=2D54H物理地址=21000H+2D54H=23D54HBX=0158H,DI=10A5H,

DIS=1B57H,DS=2100H383.38086指令系統(tǒng)主要內(nèi)容:指令碼的含義指令對(duì)操作數(shù)的要求指令的對(duì)標(biāo)志位的影響指令的功能注意:P105的常用符號(hào)含義393.3.1數(shù)據(jù)傳送指令從功能上包括六大類(lèi):數(shù)據(jù)傳送算術(shù)運(yùn)算邏輯運(yùn)算和移位串操作程序控制處理器控制403.3.1數(shù)據(jù)傳送指令數(shù)據(jù)傳送指令按功能分為4類(lèi):通用數(shù)據(jù)傳送輸入輸出地址傳送標(biāo)志位操作返回411、通用數(shù)據(jù)傳送一般數(shù)據(jù)傳送指令堆棧操作指令交換指令查表轉(zhuǎn)換指令字位擴(kuò)展指令特點(diǎn):該類(lèi)指令的執(zhí)行對(duì)標(biāo)志位不產(chǎn)生影響返回421)

一般數(shù)據(jù)傳送指令一般數(shù)據(jù)傳送指令MOV格式:MOVdest,src操作:(dest)

<---(src)例:MOVAL,BL431)

一般數(shù)據(jù)傳送指令(1)指令特點(diǎn)

最普通、最常用操作數(shù)可以是8/16位,具體取決于寄存器的位數(shù)(2)功能①寄存器之間數(shù)據(jù)傳送

MOVBX,SIMOVAL,BL②寄存器與存儲(chǔ)器傳送

MOV[BX],AXMOVAX,[6000H]441)

一般數(shù)據(jù)傳送指令(2)功能③立即數(shù)到寄存器的傳送MOVAL,5MOVBX,3078H④立即數(shù)到存儲(chǔ)器傳送MOVBYTEPTR[BP+SI],5MOVWORDPTR[BX],1005H⑤存儲(chǔ)器到段寄存器

MOVDS,[1000H]MOV[6000H],ES451)

一般數(shù)據(jù)傳送指令(3)指令對(duì)操作數(shù)的要求兩操作數(shù)字長(zhǎng)必須相同;兩操作數(shù)不允許同時(shí)為存儲(chǔ)器操作數(shù);兩操作數(shù)不允許同時(shí)為段寄存器;不能用立即數(shù)給段寄存器賦值;IP和CS不作為目標(biāo)操作數(shù),F(xiàn)LAGS一般也不作為操作數(shù)在指令中出現(xiàn)。46判斷下列指令的正確性:MOVAL,BXMOVAX,[BX]05HMOV[BX][BP],BXMOVDS,1000HMOVDX,09HMOV[1200],[SI]1)

一般數(shù)據(jù)傳送指令47一般數(shù)據(jù)傳送指令應(yīng)用例例3-12:將MEM1開(kāi)始200個(gè)字節(jié)送到MEM2開(kāi)始的區(qū)域中MOVSI,OFFSETMEME1MOVDI,OFFSETMEME2MOVCX,200MOVAL,[SI]MOV[DI],ALINCSIINCDIDECCXJNZNETHLTNEXT:返回482)堆棧操作指令內(nèi)存特定區(qū)域,其地址存放在SS中,棧頂SP每次存取一個(gè)字(16)先進(jìn)后出壓棧時(shí),SP=SP-2,出棧SP=SP+2。主要用于子程序調(diào)用中斷響應(yīng)參數(shù)傳遞11H┇

棧底SSSP22H棧頂高地址低地址492)堆棧操作指令壓棧指令PUSH

格式:PUSHOPRD出棧指令POP

格式:POPOPRD注意操作數(shù)可用是通用寄存器和段寄存器(CS除外)

PUSHCS合法

POPCS非法50PUSH指令指令執(zhí)行過(guò)程:SP←SP-2

[SP-1]←操作數(shù)高字節(jié)

[SP-2]←操作數(shù)低字節(jié)SP┇

堆棧段SP高8位低8位2)堆棧操作指令51設(shè)AX=1234H,SP=1200H執(zhí)行PUSHAX指令后堆棧區(qū)的狀態(tài):SP1200H┇

堆棧段入棧前12H34HSP-2=11FEHAX12H34H1200H┇

堆棧段入棧后(1)壓棧指令的操作2)堆棧操作指令52POP指令執(zhí)行過(guò)程:

[SP]->操作數(shù)低字節(jié)

[SP+1]->操作數(shù)高字節(jié)SP+2->SPSP┇

堆棧段SP高8位低8位2)堆棧操作指令(2)出棧指令的操作532)堆棧操作指令執(zhí)行POPAXAXSP=SP+21200H12H34H11FEH┇

堆棧段代碼段PUSH(2)出棧指令的操作1234SP542)堆棧操作指令指令的操作數(shù)必須是16位的;操作數(shù)可以是寄存器或存儲(chǔ)器兩單元,但不能是立即數(shù);不能從棧頂彈出一個(gè)字給CS;PUSH和POP指令在程序中一般成對(duì)出現(xiàn);PUSH和POP執(zhí)行順序相反,以維持原來(lái)狀態(tài)。(3)堆棧操作指令說(shuō)明:55堆棧操作指令例例3-13MOVAX,9000HMOVDX,38FFHPUSHAXPUSHBXPOPAXPOPBX┇

PUSH和POP執(zhí)行次序相同返回否則,會(huì)使AX和BX的內(nèi)容互換,可用于逆序排列563)交換指令格式:XCHGREG,MEM/REG注:兩操作數(shù)必須有一個(gè)是寄存器操作數(shù)不允許使用段寄存器。例:XCHG AX,BXXCHG [2000],CL返回574)查表指令格式:

XLAT說(shuō)明:用BX的內(nèi)容代表表格首地址,AL內(nèi)容為表內(nèi)位移量,BX+AL得到要查找元素的偏移地址操作:將BX+AL所指單元的內(nèi)容送AL584)查表指令換碼指令為XLAT,使累加器中的一個(gè)值變換為內(nèi)存表格中的某一個(gè)值BX表基址,AL為索引值等價(jià)C語(yǔ)言解釋?zhuān)簎nsignedchar*BX,Buffer;BX=Buffer;AL=BX[AL];59數(shù)據(jù)段中存放有一張ASCII碼轉(zhuǎn)換表,設(shè)首地址為2000H,現(xiàn)欲查出表中第11個(gè)代碼的ASCII碼303132...394142...45462000H+02000H+11‘0’‘1’‘2’‘9’‘A’‘B’‘E’‘F’查表指令例可用如下指令實(shí)現(xiàn):MOVBX,2000H;BX←表首地址MOVAL,0BH;AL←序號(hào)XALT

;查表轉(zhuǎn)換執(zhí)行后得到:AL=42H60查表指令例(a)典型的七段式LED器件(b)共陽(yáng)極LED(c)共陰極LED

共陽(yáng)極結(jié)構(gòu):數(shù)碼顯示端低電平有效共陰極結(jié)構(gòu):數(shù)碼顯示端高電平有效

例如共陰極接法中,數(shù)字7需要a、b、c三段為高電平對(duì)應(yīng)段碼00000111即07Hefg*abcdD4D5D6D7D0D1D2D3返回615)字位擴(kuò)展指令(P113)將有符號(hào)數(shù)的符號(hào)位擴(kuò)展到高位;無(wú)符號(hào)數(shù)的擴(kuò)展規(guī)則為在高位補(bǔ)0指令為零操作數(shù)指令,采用隱含尋址,隱含的操作數(shù)為AX及DX,AX除法時(shí),要預(yù)先執(zhí)行CBW(CWD)指令,以產(chǎn)生一個(gè)雙倍長(zhǎng)度的被除數(shù),否則不能進(jìn)行除法運(yùn)算。62字節(jié)到字的擴(kuò)展指令格式:

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

如果AL<80H,執(zhí)行CBW后AH=00H如果AL>=80H,執(zhí)行CBW后AH=FFH63字到雙字的擴(kuò)展指令格式:

CWD操作:將AX內(nèi)容擴(kuò)展到DXAX規(guī)則:若最高位=1,則執(zhí)行后DX=FFFFH若最高位=0,則執(zhí)行后DX=0000H64字位擴(kuò)展指令例判斷以下指令執(zhí)行結(jié)果:MOVAL,44HCBWMOVAX,0AFDEHCWDMOVAL,86HCBW返回65專(zhuān)門(mén)面向I/O端口操作的指令也稱(chēng)累加器傳送指令指令格式:輸入指令:INacc,PORT輸出指令:OUTPORT,acc端口地址2、輸入輸出指令66指令尋址方式2、輸入輸出指令直接尋址直接給出8位端口地址,范圍(0~FFH)間接尋址16位端口地址由DX指定,范圍(0~FFFFH)間接尋址只能用DX寄存器做間址寄存器P11267例:從3FH端口讀取一個(gè)字

INAX,3FH例:將23H寫(xiě)到端口03B0

MOVDX,03B0HMOVAL,23HOUTDX,AL2、輸入輸出指令68判斷下列指令的正誤:2、輸入輸出指令I(lǐng)NAX,80HINAL,1200HOUT35H,ALOUTAL,35H返回693、地址傳送指令取偏移地址指令LEALDS指令*LES指令*70操作:將變量的16位偏移地址取出送目標(biāo)寄存器格式:

LEAREG,MEM

指令要求:源操作數(shù)必須是一個(gè)存儲(chǔ)器操作數(shù),目標(biāo)操作數(shù)通常是間址寄存器。取偏移地址指令LEA3、地址傳送指令71LEA指令例3-18:

LEABX,BUFFERMOVAL,[BX]MOVAH,[BX+1]解釋?zhuān)簝?nèi)存單元BUFFER的偏移地址送BXBUFFER+1單元的數(shù)據(jù)送ALBUFFER+2單元的數(shù)據(jù)送AH

72LEA指令例3-19:

若BX=1000H,DS=6000H,[6150H]=33H,[6150H]=44H,執(zhí)行下列指令的結(jié)果MOVBX,[BX+50]

61050H44H33H61051HMOV指令后44H33HBXLEA指令后1050BXLEABX,[BX+50H]73LEA指令比較下列指令:MOVAX,DATA1LEASI,DATA1

符號(hào)地址例如:DATA1偏移地址1200則,SI=1200┇

DATA112H34H數(shù)據(jù)段74LEA指令在程序中的應(yīng)用例題:將數(shù)據(jù)段中首地址為MEM1的50個(gè)字節(jié)的數(shù)據(jù)傳送到同一邏輯段首地址為MEM2的區(qū)域存放。編寫(xiě)相應(yīng)的程序段

。

75

開(kāi)始計(jì)數(shù)值=0?LEA指令在程序中的應(yīng)用取源地址取目標(biāo)地址送數(shù)據(jù)塊長(zhǎng)度到CL傳送一個(gè)字節(jié)修改地址指針修改計(jì)數(shù)值NY結(jié)束76LEA指令在程序中的應(yīng)用

LEASI,MEM1LEADI,MEM2MOVCL,50NEXT:MOVAL,[SI]MOV[DI],ALINCSIINCDIDECCLJNZNEXTHLTP107例題3-12返回774、標(biāo)志位操作指令LAHFSAHFPUSHFPOPF隱含操作數(shù)AH隱含操作數(shù)FLAGS781)LAHF,SAHF指令格式:LAHF操作:將FLAGS(P48)的低8位裝入AHSFPFAFZFCF….AHFLAGSD15D0D7D0SAHF執(zhí)行與LAHF相反的操作792)PUSHF,POPF將FLAGS壓入堆棧將當(dāng)前堆棧頂?shù)?B內(nèi)容彈出到FLAGS返回803.3.2算術(shù)運(yùn)算類(lèi)指令算術(shù)運(yùn)算指令涉及兩種類(lèi)型的數(shù)據(jù)1.無(wú)符號(hào)數(shù)2.有符號(hào)數(shù)

8位無(wú)符號(hào)數(shù)的范圍為0~25516位無(wú)符號(hào)數(shù)的范圍為0~655358位有符號(hào)數(shù)的范圍為-128~+12716位有符號(hào)數(shù)的范圍為-32768~+32767813.3.2算術(shù)運(yùn)算類(lèi)指令加法運(yùn)算指令減法運(yùn)算指令乘法指令除法指令823.3.2算術(shù)運(yùn)算類(lèi)指令規(guī)則:如運(yùn)算結(jié)果為0,則ZF=1;運(yùn)算中出現(xiàn)進(jìn)位/借位時(shí),CF=1;當(dāng)無(wú)符號(hào)數(shù)運(yùn)算產(chǎn)生溢出時(shí),CF=1;當(dāng)有符號(hào)數(shù)運(yùn)算產(chǎn)生溢出時(shí),OF=1;如運(yùn)算結(jié)果為負(fù)數(shù),則SF=1;如運(yùn)算結(jié)果中有偶數(shù)個(gè)1,則PF=1。所有算術(shù)運(yùn)算指令均影響狀態(tài)標(biāo)志。833.3.2算術(shù)運(yùn)算類(lèi)指令841、加法指令普通加法指令A(yù)DD

帶進(jìn)位位的加法指令A(yù)DC加1指令I(lǐng)NC加法指令對(duì)操作數(shù)的要求與MOV指令相同851)ADD指令格式:

ADDOPRD1,OPRD2操作:

OPRD1+OPRD2ADD指令的執(zhí)行對(duì)全部6個(gè)狀態(tài)標(biāo)志位都產(chǎn)生影響OPRD186ADD指令例MOVAL,78HADDAL,99H指令執(zhí)行后6個(gè)狀態(tài)標(biāo)志位的狀態(tài)87ADD指令例01111000+10011001000100011標(biāo)志位狀態(tài):CF=SF=AF=ZF=PF=OF=101010882)

ADC指令指令格式、對(duì)操作數(shù)的要求、對(duì)標(biāo)志位的影響與ADD指令完全一樣指令的操作:

OPRD1+OPRD2+CFOPRD1ADC指令多用于多字節(jié)數(shù)相加,使用前要先將CF清零892)

ADC指令例3-22:求兩個(gè)4字節(jié)無(wú)符號(hào)數(shù)01017A379H+10067E4FH的和MOVAX,A379HADDAX,7E4FHMOVBX,0107HADCBX,1006H903)

INC指令格式:

INCOPRD操作:

OPRD+1OPRD不影響CF標(biāo)志,常用于在程序中循環(huán)計(jì)數(shù)不能是段寄存器或立即數(shù)912、減法指令普通減法指令SUB考慮借位的減法指令SBB減1指令DEC比較指令CMP求補(bǔ)指令NEG減法指令對(duì)操作數(shù)的要求與對(duì)應(yīng)的加法指令相同921)SUB指令格式:

SUBOPRD1,OPRD2操作:

OPRD1-OPRD2OPRD1對(duì)標(biāo)志位的影響與ADD指令同93指令格式、對(duì)操作數(shù)的要求、對(duì)標(biāo)志位的影響與SUB指令完全一樣指令的操作:

OPRD1-OPRD2-CFOPRD12)SBB指令943)DEC指令格式:

DECOPRD操作:

OPRD-1OPRD指令對(duì)操作數(shù)的要求與INC相同指令常用于在程序中修改計(jì)數(shù)值953)DEC指令例3-23延時(shí)子程序:Delay:MOVCX,0FFFFHNEXT:DECCXJNZNEXT;ZF≠0,轉(zhuǎn)NEXT

RET;子程序返回

C語(yǔ)言for(CX=FFFFH,CX>0,CX--){空循環(huán);}964)

NEG指令格式:

NEGOPRD操作:0-OPRDOPRD8/16位寄存器或存儲(chǔ)器操作數(shù)對(duì)于負(fù)數(shù):用0減去操作數(shù)(補(bǔ)碼形式),相當(dāng)于對(duì)該操作數(shù)求“補(bǔ)碼”,得到該操作數(shù)的絕對(duì)值(P31)974)

NEG指令98格式:

CMPOPRD1,OPRD2操作:

OPRD1-OPRD25)

CMP指令指令執(zhí)行的結(jié)果不影響目標(biāo)操作數(shù),僅影響標(biāo)志位!99CMP指令用途:用于比較兩個(gè)數(shù)的大小,可作為條件轉(zhuǎn)移指令轉(zhuǎn)移的條件操作數(shù)的要求和對(duì)標(biāo)志位的影響與SUB指令相同100CMP指令1.兩個(gè)無(wú)符號(hào)數(shù):

2.兩個(gè)有符號(hào)數(shù):OF⊕SF=0:被減數(shù)>減數(shù)1:被減數(shù)<減數(shù)ZF=1:被減數(shù)=減數(shù)CF=0:被減數(shù)>減數(shù)1:被減數(shù)<減數(shù)ZF=1:被減數(shù)=減數(shù)101CMP指令例例3-24

在內(nèi)存數(shù)據(jù)段從DATA開(kāi)始單元存放兩個(gè)8位無(wú)符號(hào)數(shù),比較它們大大小,并將大的送MAX單元LEABX,DATAMOVAL,[BX];取第1個(gè)數(shù)INCBX;BX指向第2個(gè)數(shù)CMPAL,[BX];第1個(gè)數(shù)和第2個(gè)數(shù)比較JNCDONE;CF=0表示第1個(gè)數(shù)大于第2個(gè)數(shù)MOVAL,[BX];DONE:MOVMAX,AL HLT1023、乘法指令無(wú)符號(hào)的乘法指令MUL帶符號(hào)的乘法指令I(lǐng)MUL注意:乘法指令采用隱含尋址,隱含的是存放被乘數(shù)的累加器AL或AX及存放結(jié)果的AX,DX;1033、乘法指令A(yù)L操作數(shù)×ALAH乘積:A.字節(jié)操作AX操作數(shù)×AXDX乘積:B.字操作MUL

操作數(shù)IMUL

操作數(shù)

×乘=積8×8=AH:AL16×16=DX:AX32×32=EDX:EAX1041)無(wú)符號(hào)數(shù)乘法指令格式:

MULOPRD(不能是立即數(shù))

操作:

OPRD為字節(jié)數(shù)

OPRD為16位數(shù)

AL×OPRDAX×OPRDDXAXAX105無(wú)符號(hào)數(shù)乘法指令例MULBYTEPTR[BX]BXAL乘

XXHAX┇

XXH1062)帶符號(hào)數(shù)乘法指令格式:

IMULOPRD說(shuō)明:IMUL指令將OPRD視為帶符號(hào)數(shù),OPRD為補(bǔ)碼形式107兩條乘法指令的比較例:設(shè):AL=FEH,CL=11H,求AL與CL的乘積。執(zhí)行:MULCL結(jié)果:AX=10DEH執(zhí)行:IMULCL結(jié)果:AX=FFDEH=-34。若設(shè)為無(wú)符號(hào)數(shù)若將兩操作數(shù)看作有符號(hào)數(shù)108兩條乘法指令的區(qū)別無(wú)符號(hào)數(shù)CF=OF=0,說(shuō)明運(yùn)算結(jié)果沒(méi)有超出低位(AL/AX),高位(AH/DX)為無(wú)效數(shù)據(jù)CF=OF=1,說(shuō)明運(yùn)算結(jié)構(gòu)超出低位(AL/AX),高位(AH/DX)為有效數(shù)據(jù)

有符號(hào)數(shù)CF=OF=0,說(shuō)明運(yùn)算結(jié)果沒(méi)有超出低位(AL/AX),高位為地位的符號(hào)擴(kuò)展(CF=OF=1,說(shuō)明運(yùn)算結(jié)構(gòu)超出低位(AL/AX),高位(AH/DX)為有效數(shù)據(jù)1094、除法指令規(guī)則:

當(dāng)被除數(shù)為16位,除數(shù)為8位時(shí),8位的商放在AL,8位的余數(shù)放在AH當(dāng)被除數(shù)為32位,除數(shù)為16位,16位的商放在AX中,16位的余數(shù)放在DX

AL操作數(shù)16位A

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論