微機(jī)原理第四章 指令系統(tǒng)_第1頁
微機(jī)原理第四章 指令系統(tǒng)_第2頁
微機(jī)原理第四章 指令系統(tǒng)_第3頁
微機(jī)原理第四章 指令系統(tǒng)_第4頁
微機(jī)原理第四章 指令系統(tǒng)_第5頁
已閱讀5頁,還剩121頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章指令系統(tǒng)

4.18086/8088指令系統(tǒng)概述4.28086/8088指令系統(tǒng)4.3從80286到Pentium系列微處理器的指令系統(tǒng)4.18086/8088指令系統(tǒng)概述

4.1.18086/8088指令系統(tǒng)的特點指令系統(tǒng)的兼容性特點指令格式的靈活性

可構(gòu)成多處理機(jī)系統(tǒng)尋址方式的多樣性

多類型數(shù)據(jù)處理

4.1.28086/8088指令的格式指令操作碼(描述指令的操作功能)操作數(shù)(指明指令的操作對象)立即數(shù)寄存器操作數(shù)存儲器操作數(shù)例如:MOVAX,BX

操作碼

操作數(shù)

4.1.28086/8088指令的格式

操作數(shù)在內(nèi)存數(shù)據(jù)區(qū)中,由指令中的操作數(shù)部分給出此操作數(shù)地址的計算方法。

大部分操作數(shù)的段基址由數(shù)據(jù)段寄存器DS的內(nèi)容來確定;段內(nèi)偏移量由指令的操作數(shù)部分規(guī)定,通常稱它為有效地址,用EA表示。物理地址=段基址+段內(nèi)偏移量

=段寄存器×16+段內(nèi)偏移量

4.1.28086/8088指令的格式8086/8088的指令長度可在1~6B之間變化,格式如下:

操作碼隱含操作數(shù)的單字節(jié)指令操作碼寄存器尋址的單字節(jié)指令

操作碼二字節(jié)指令

操作碼三字節(jié)指令

操作碼四字節(jié)指令

操作碼五字節(jié)指令REG

MOD

MOD

MOD

MOD

D/O

D/OL

OL

D/OH

OH

D

操作碼

OL

DL

MOD

OH

DH六字節(jié)指令其中:REG---寄存器

D-------數(shù)據(jù)

O-------偏移量

L--------低8位

H--------高8位后續(xù)字節(jié)可以根據(jù)指令的不同而取舍。

4.1.28086/8088指令的格式

通常來說指令的第1個字節(jié)為操作碼,第2個字節(jié)規(guī)定操作數(shù)的尋址方式,后續(xù)字節(jié)指出的是存儲器操作數(shù)的8/16位偏移量或8/16位立即數(shù)。注意其中操作碼和MOD字節(jié)的格式如下:7654321076543210操作碼MODDWREGR/M

通常操作碼占用第一個字節(jié)的7~2位,但有些指令的操作碼占用第一字節(jié)的7~1位,甚至增加第二字節(jié)的5~3位作為擴(kuò)展操作碼。D指示操作方向。D=1,REG為目的操作數(shù);D=0,R/M為目的操作數(shù),其中R代表寄存器,M代表存儲器。即目的操作數(shù)在格式中有兩個選擇,由D決定。W指示操作數(shù)寬度。W=1,操作數(shù)是16位;W=0,操作數(shù)是8位。MOD用來區(qū)分是寄存器尋址,還是存儲器尋址。MOD=00,則說明指令為存儲器尋址方式,無偏移量;MOD=01,為存儲器尋址方式,8位偏移量;MOD=10,為存儲器尋址方式,16位偏移量;MOD=11,為寄存器尋址方式。

REG指示參加操作的寄存器編碼,R/M受模式字段的控制,指出如何計算指令的有效地址EA。7654321076543210

操作碼

MODD

W

REG

R/M

4.1.28086/8088指令的格式

4.1.28086/8088指令的格式【例4-2】ADD[BX+SI+0100H],AX;該指令生成的機(jī)器;碼是01800001H

4.1.28086/8088指令的格式

下面是根據(jù)上述指令格式生成計算機(jī)指令代碼的兩個例子:【例4-1】MOVAL,[BP];該指令生成的機(jī)器碼是8A4600H操作碼MODDWREGR/M

1000100110000

110

8b偏移量

00000000操作碼MODDWREGR/M

0000001001000000偏移量低

00000000偏移量高

00000001AX(AH,AL)編碼是000計算有效地址的方式練習(xí)1:MOVSP,BX1000101111100011如果將BX的編碼送到REG,則D=0,表示數(shù)據(jù)從BX傳出,R/M填入另一個寄存器SP的編碼100,結(jié)果為:1000100111011100

1.立即尋址立即尋址的操作數(shù)是一個立即數(shù),它直接包含在指令中。立即尋址主要用于給存儲器或寄存器賦初值?!僮鞔a立即數(shù)低字節(jié)立即數(shù)高字節(jié)…高址0AH08HAHALAX4.1.3尋址方式【例4-3】MOVAX,080AH,其尋址如圖4-2所示。圖4-2立即尋址示意圖

字(16位)(無論是數(shù)據(jù)還是指令)在內(nèi)存中存放順序:低字節(jié)在前,高字節(jié)在后?!妥止?jié)高字節(jié)…高址寄存器尋址操作數(shù)在內(nèi)部寄存器中。對16位操作數(shù),寄存器可以是AX、BX、CX、DX、SI、DI、SP或BP,而對8位操作數(shù),寄存器可以是AH、AL、BH、BL、CH、CL、DH、DL。AXBX圖4-3寄存器尋址示意圖2.【例4-4】MOVAX,BX執(zhí)行過程如圖4-3所示。直接尋址操作數(shù)的有效地址(EA)直接包含在指令中,它與操作碼一起存放在代碼段中。操作數(shù)存放的物理地址=DS×16+16位地址偏移量。【例4-5】MOVAX,[22A0H],設(shè)DS=3000H,執(zhí)行過程如圖4-4所示。322A0H322A1H32H48H…操作碼偏移量A0H偏移量22H……代碼段數(shù)據(jù)段AX圖4-5直接尋址方式示意圖

3000+)22A0

322A0HDS3.

48

32

寄存器間接尋址寄存器間接尋址情況一若以SI、DI、BX間接尋址,操作數(shù)通常在現(xiàn)行數(shù)據(jù)段中,即DS中的值左移四位加上SI、DI或BX中的有效地址即為操作數(shù)的物理地址?!纠?-7】MOVAX,[SI]執(zhí)行過程如圖4-5所示。4.31000H31001H50HA0H

3000+)SI

1000

31000HDS

A0

50

………代碼段數(shù)據(jù)段AX圖4-5寄存器間接尋址方式示意圖操作碼寄存器間接尋址寄存器間接尋址情況二若以BP間接尋址,則操作數(shù)在堆棧段中,即操作數(shù)的物理地址位堆棧段寄存器SS中的值左移四位與BP相加。【例4-8】MOVAX,[BP]執(zhí)行過程如圖4-6所示。4.42000H42001HB0H62H

4000+)BP

2000

42000HSS

62

B0

………代碼段堆棧段AX圖4-6以BP間接尋址方式示意圖操作碼5.基址尋址【例4-9】MOVAX,COUNT[BP]執(zhí)行過程如圖4-7所示。30H20H44100H44101HEA=BXBP+8位偏移量16位偏移量

4000+)BP2000

44100HSS+)COUNT2100

20

30

…操作碼偏移量00偏移量21……代碼段堆棧段圖4-7基址尋址方式示意圖AX6.變址尋址【例4-10】MOVAX,COUNT[SI]執(zhí)行過程如圖4-8所示。30H20H35000H35001HEA=SIDI+8位偏移量16位偏移量

3000+)SI2000

35000HDS+)COUNT3000

20

30

…操作碼偏移量00偏移量30……代碼段數(shù)據(jù)段圖4-8變址尋址方式示意圖AX7.基址加變址尋址【例4-11】MOVAX,[BX+SI+250H]執(zhí)行過程如圖4-9所示。30H20H33250H33251HEA=BXBP+8位偏移量16位偏移量SIDI+

3000+)BX1000

33250HDS+)SI2000+)0250

20

30

…操作碼偏移量50偏移量02……代碼段數(shù)據(jù)段圖4-9基址加變址尋址方式示意圖操作碼AX8.數(shù)據(jù)串尋址●數(shù)據(jù)串尋址用于數(shù)據(jù)串操作指令?!纠?-12】MOVSB執(zhí)行后:[DI]←[SI]SI←SI±1DI←DI±19.I/O端口尋址端口尋址I/O直接端口尋址間接端口尋址由指令直接給出輸入輸出設(shè)備的端口地址。規(guī)定端口地址為8位,能尋址256個端口。由寄存器DX給出輸入輸出設(shè)備的端口地址。由于DX是16位,因此能尋址64K個端口?!纠?-13】INAL,20H;將地址為20H的外設(shè)的內(nèi)容讀入AL中

OUTDX,AL;將AL中內(nèi)容輸出給以DX的內(nèi)容為地址的外設(shè)10.隱含尋址●這種尋址方式中,操作數(shù)是隱含的。指令中沒有明顯給出操作數(shù)?!纠?-14】AAA即對AL中的內(nèi)容進(jìn)行十進(jìn)制加法調(diào)整,并把調(diào)整后的結(jié)果放入AH和AL中。這條指令的隱含操作數(shù)是AH和AL。8086指令系統(tǒng)4.2.1數(shù)據(jù)傳送指令指令類型指令功能指令書寫格式通用數(shù)據(jù)傳送字節(jié)或字傳送字壓入堆棧字彈出堆棧字節(jié)或字交換換碼指令MOV目標(biāo),源PUSH源POP目標(biāo)XCHG目標(biāo),源XLAT目標(biāo)地址傳送裝入有效地址裝入DS寄存器裝入ES寄存器LEA目標(biāo),源LDS目標(biāo),源LES目標(biāo),源標(biāo)志位傳送將FR低字節(jié)裝入AH寄存器將AH內(nèi)容裝入FR低字節(jié)將FR內(nèi)容壓棧從堆棧中彈出一個字給FRLAHFSAHFPUSHFPOPF數(shù)據(jù)傳送指令4.2通用數(shù)據(jù)傳送指令通用數(shù)據(jù)傳送指令MOV指令堆棧操作指令數(shù)據(jù)交換指令換碼指令壓棧指令出棧指令1.(1)MOV指令段寄存器DSESSS

存儲器

立即數(shù)通用寄存器AXBXCXDXSIDIBXBP圖4-10數(shù)據(jù)傳送方向示意圖指令格式:MOVOP目,OP源指令功能:將源操作數(shù)傳送到目的操作數(shù)中。OP目表示目的操作數(shù),可以是寄存器、存儲器。OP源表示源操作數(shù),可以是寄存器、存儲器和立即數(shù)。

①壓棧指令指令格式:PUSHOP指令功能:將寄存器或存儲器單元的內(nèi)容送入堆棧OP為16位的寄存器或存儲器操作數(shù)。操作過程:1)SP←SP-1;[SP]←OPH(操作數(shù)高字節(jié))

2)SP←SP-1;[SP]←OPL(操作數(shù)低字節(jié))(2)堆棧操作指令指令格式:POPOP指令功能:將SP所指向的堆棧棧頂?shù)囊粋€字彈到寄存器或存儲單元中。OP為16位操作,可以是寄存器或存儲器操作數(shù)。操作過程:1)OPL←[SP];SP←SP+12)OPH←[SP];SP←SP+1

②出棧指令(2)堆棧操作指令例:假設(shè)(AX)=2107H,執(zhí)行

PUSHAX********(SP)

PUSHAX執(zhí)行前(SP)

********07H21H低地址

高地址PUSHAX執(zhí)行后進(jìn)棧方向(SP)

********07H21HPOPBX執(zhí)行前(SP)

********07H21H低地址

高地址

POPBX執(zhí)行后

(BX)=2107H例:POPBX出棧方向例:PUSHDSSUBAX,AXPUSHAX…………RET例:PUSHAXPUSHBXPUSHCX……;其間用到AX、BX、CXPOPCX;后進(jìn)先出

POPBXPOPAX指令格式:XCHGOP1,OP2指令功能:實現(xiàn)OP1和OP2內(nèi)容的相互交換。操作數(shù)為通用寄存器或存儲器?!纠?-20】XCHGAL,BL;AL與BL進(jìn)行字節(jié)互換

XCHGBX,CX;BX與CX進(jìn)行字互換⑶數(shù)據(jù)交換指令●交換可在通用寄存器之間、通用寄存器和存儲器之間進(jìn)行。段寄存器不能作為本指令的操作數(shù),而且兩個存儲單元之間不能直接交換數(shù)據(jù)。注意指令格式:XLAT指令功能:將BX的內(nèi)容和AL的內(nèi)容相加作為有效地址EA,

在一個表格中找出此單元中的內(nèi)容并傳送至AL中。⑷換碼指令●使用此指令時,應(yīng)首先在數(shù)據(jù)段中預(yù)置一個表格。該表格的最大長度不能超過256字節(jié)。表的起始地址的偏移量應(yīng)事先裝入BX寄存器,AL中存放查找對象在表中地址與表的起始地址相差的字節(jié)數(shù)。目標(biāo)地址傳送指令(1)LEA指令指令格式:LEAOP目,OP源指令功能:將源操作數(shù)的有效地址EA送到目的操作數(shù)?!纠?-22】LEABX,[BP+SI];BP+SI→BXLEADI,TABLE;取TABLE的有效地址送入DI●本指令處理的是變量的地址(偏移量),不是變量的值。它等效于傳送有效地址的MOV指令,但MOV指令必須在變量名前使用OFFSET操作符。2.注意2.目標(biāo)地址傳送指令【例4-24】LDSDI,[2130H];將2130H和2131H單元的內(nèi)容送DI

將2132H和2133H單元的內(nèi)容送DS指令格式:●

LDSOP目,OP源指令功能:●把4個字節(jié)地址指針(包括一個段地址和一個偏移地址)從源操作數(shù)指定的4個存儲單元取出,低地址的兩字節(jié)送目的操作數(shù),高地址的兩字節(jié)送

DS段寄存器。LDS指令(2)LES指令指令格式:●

LESOP目,OP源指令功能:●本指令與LDS指令的操作基本相同,所不同的是將源操作數(shù)4個字節(jié)中高地址的兩字節(jié)傳送到ES段寄存器而不是DS段寄存器。(3)標(biāo)志寄存器傳送指令3.●讀標(biāo)志指令指令格式:LAHF指令功能:將標(biāo)志寄存器低8位→AH。●設(shè)置標(biāo)志指令指令格式:SAHF指令功能:將AH→標(biāo)志寄存器低8位。●

PUSHF指令指令格式:PUSHF指令功能:將16位標(biāo)志寄存器入棧,同時修改棧指針?!馪OPF指令指令格式:POPF指令功能:將棧頂?shù)囊粋€字送標(biāo)志寄存器,同時修改棧指針SP。1.4.2.2算術(shù)運(yùn)算指令加法指令(2)帶進(jìn)位的加法指令指令格式:ADCOP目,OP源指令功能:●將源操作數(shù)、目的操作數(shù)及CF的值相加,結(jié)果保留在目的操作數(shù)中,并根據(jù)結(jié)果設(shè)置標(biāo)志。(1)不帶進(jìn)位的加法指令指令格式:ADDOP目,OP源指令功能:●將源操作數(shù)和目的操作數(shù)相加,結(jié)果保留在目的操作數(shù)中,并根據(jù)結(jié)果設(shè)置標(biāo)志。(3)加1指令指令格式:INCOP指令功能:●將操作數(shù)加1,再送回該操作數(shù)。這條指令一般用于循環(huán)程序的指針修改。操作數(shù)可以是8位/16位通過寄存器或存儲器,不能為立即數(shù)。減法指令2.(2)帶借位的減法指令指令格式:SBBOP目,OP源指令功能:●將目的操作數(shù)減去源操作數(shù)再減去借位標(biāo)志CF的現(xiàn)行值,結(jié)果送回到目的操作數(shù)中,并根據(jù)結(jié)果設(shè)置標(biāo)志。

(1)不帶借位的減法指令指令格式:SUBOP目,OP源指令功能:●將目的操作數(shù)減去源操作數(shù),結(jié)果送回到目的操作數(shù)中,并根據(jù)結(jié)果設(shè)置標(biāo)志。(3)減1指令指令格式:DECOP指令功能:●將操作數(shù)的值減1后送回源操作數(shù)中,根據(jù)結(jié)果置標(biāo)志位。操作數(shù)可以是8位/16位通過寄存器和存儲器操作數(shù),不能為立即數(shù)。2.減法指令(4)取補(bǔ)指令指令格式:NEGOP指令功能:●將操作數(shù)取補(bǔ)后送回原操作數(shù)。操作數(shù)可以是8位/16位通用寄存器或存儲器操作數(shù),不能為立即數(shù)。(5)比較指令指令格式:CMPOP目,OP源指令功能:●將目標(biāo)操作數(shù)與源操作數(shù)相減,不回送結(jié)果,

只根據(jù)結(jié)果置標(biāo)志位。(1)無符號數(shù)乘法指令指令格式:MULOP指令功能:●完成兩個不帶符號的8位/16位二進(jìn)制數(shù)的乘法運(yùn)算。乘法指令●指令中給出的操作數(shù)是乘數(shù),它可以是8位/16位通用寄存器及存儲器;另一操作數(shù)被乘數(shù)隱含在AL/AX中,乘積存放在AH:AL或DX:AX中,如圖4-14所示。AL8位操作數(shù)AHAL×AX16位操作數(shù)DXAX×圖4-14乘法運(yùn)算示意圖3.對于字節(jié)乘法,當(dāng)AH為AL的符號擴(kuò)展時,CF=OF=0,否則CF=OF=1;對于字乘法,當(dāng)DX為AX的符號擴(kuò)展時,CF=OF=0,否則CF=OF=1。(2)帶符號數(shù)乘法指令指令格式:IMULOP指令功能:●完成兩個帶符號的8位/16位二進(jìn)制數(shù)的乘法運(yùn)算。有關(guān)IMUL的其它約定與MUL相同。3.注意乘法指令除法指令(1)無符號數(shù)除法指令指令格式:DIVOP指令功能:●完成兩個不帶符號的二進(jìn)制數(shù)的除法運(yùn)算。指令中給出的操作數(shù)是除數(shù),它可以是8位/16位通用寄存器及存儲器;被除數(shù)隱含在AX(字節(jié)除)或

DX、AX(字除法)中。操作過程:●字節(jié)除法AX/OP→ALAXMODOP→AH

●字除法(DX、AX)/OP→AX

(DX、AX)MODOP→DX4.4.(2)帶符號數(shù)除法指令●本指令在完成字節(jié)相除時最大的商為+127(7FH),最小的商為-128(80H);在完成字相除時最大的商為+32767(7FFFH),最小的商為-32768(8000H)。若商超出此范圍,則將產(chǎn)生一個類型0的中斷。除法指令指令格式:IDIVOP指令功能:●完成兩個帶符號的二進(jìn)制數(shù)的除法運(yùn)算。商的符號根據(jù)代數(shù)規(guī)則確定,余數(shù)的符號與被除數(shù)相同。操作數(shù)的規(guī)定同DIV指令。注意這兩條符號擴(kuò)展指令常常放在IDIV指令之前,對標(biāo)志位沒有影響。4.(3)符號擴(kuò)展指令2)字?jǐn)U展指令指令格式:CWD指令功能:●將AX中的數(shù)的符號擴(kuò)展到DX中。若AX<8000H,則0→DX;若AX≥8000H,則OFFFFH→DX。注意除法指令(3)符號擴(kuò)展指令指令格式:CBW指令功能:●將AL中的單字節(jié)數(shù)的符號擴(kuò)展到AH中。若AL<80H,則0→AH;若AL≥80H,則OFFH→AH。1)字節(jié)擴(kuò)展指令例:x、y、z均為雙精度數(shù),分別存放在地址為X,X+2;

Y,Y+2;Z,Z+2的存儲單元中,用指令序列實現(xiàn)

w

x+y+24-z,并用W,W+2單元存放wMOVAX,XMOVDX,X+2ADDAX,YADCDX,Y+2;x+yADDAX,24ADCDX,0;x+y+24SUBAX,ZSBBDX,Z+2;x+y+24-zMOVW,AXMOVW+2,DX;結(jié)果存入W,W+2單元練習(xí):x,y,z,v均為16位帶符號數(shù),計算

(v-(x*y+z–540))/xMOVAX,XIMULY;x*y→(DX,AX)MOVCX,AXMOVBX,DXMOVAX,ZCWD;Z→(DX,AX)ADDCX,AXADCBX,DX;x*y+z→(BX,CX)SUBCX,540SBBBX,0;x*y+z-540MOVAX,VCWD;V→(DX,AX)SUBAX,CXSBBDX,BX;v-(x*y+z-540)IDIVX;(v-(x*y+z-540))/x→(AX)

余數(shù)→(DX)5.十進(jìn)制運(yùn)算調(diào)整指令問題的提出:19壓縮BCD:00011001

2700100001+110

+08+00001000

(00100111)BCDAF=1數(shù)字的ASCII碼是一種壓縮的BCD碼DIGITASCII BCD0 30H 001100001 31H 001100012 32H 00110010… … …9 39H 00111001非壓縮BCD碼如何轉(zhuǎn)換為ASCII碼?如果AL中是非壓縮BCD,則ORAL,30H(ADDAL,30H),將AL中非壓縮BCD轉(zhuǎn)換為ASCII。(1)指令格式:AAA指令功能:對AL中的由兩個非組合BCD碼相加所得的結(jié)果進(jìn)行調(diào)整,并將調(diào)整后的結(jié)果存于AX中。操作過程:如果AL的低4位表示的數(shù)大于9或者AF=1,則將AL加6,AH加1,將AF和CF置1,清除AL的高四位;否則清除AL的高4位以及AF和CF標(biāo)志。非組合BCD碼的加法調(diào)整指令5.十進(jìn)制運(yùn)算調(diào)整指令(2)指令格式:DAA指令功能:對AL中的由兩個組合BCD碼相加所得的結(jié)果進(jìn)行調(diào)整,并將調(diào)整后的結(jié)果存于AL中。操作過程:如果AL的低4位大于9或者AF=1,則AL+6→AL,

并置AF=1;如果AL的高4位大于9或者CF=1,

則AL+60H→AL,并置CF=1。以上這兩條指令使用時必須緊跟在ADD或ADC指令之后。而且,這兩條指令只能對AL中的結(jié)果進(jìn)行調(diào)整,因此對多字節(jié)的十進(jìn)制數(shù)運(yùn)算,只能從低字節(jié)開始逐個字節(jié)的進(jìn)行運(yùn)算和調(diào)整。組合BCD碼的加法調(diào)整指令注意(3)指令格式:AAS指令功能:對AL中的由兩個非組合BCD碼相減所得的結(jié)果進(jìn)行調(diào)整,并將調(diào)整后的結(jié)果存于AL中。操作過程:調(diào)整方法與AAA類似,不同的只是當(dāng)AL的低

4位表示的數(shù)大于9或者AF=1時,將AL-6→AL,

AH-1→AH,并將AF和CF置1,清除AL的高四位。5.十進(jìn)制運(yùn)算調(diào)整指令非組合BCD碼的減法調(diào)整指令使用AAS、DAS指令必須緊跟在SUB或SBB指令之后。(4)指令格式:DAS指令功能:對AL中的由兩個組合BCD碼相減所得的結(jié)果進(jìn)行調(diào)整,并將調(diào)整后的結(jié)果存于AL中。操作過程:調(diào)整方法與DAA類似,不同的只是當(dāng)AL的低4位大于9或者AF=1,則AL-6→AL,并置AF=1;而當(dāng)AL的高4位大于9或者CF=1時,則AL-60H→AL,并置CF=1。5.十進(jìn)制運(yùn)算調(diào)整指令注意組合BCD碼的減法調(diào)整指令(5)指令格式:AAM指令功能:對AX中的由兩個非組合BCD碼相乘所得的結(jié)果進(jìn)行調(diào)整,并將調(diào)整后的結(jié)果存于AX中。操作過程:將AL中的內(nèi)容除以10,并將除得的商和余數(shù)分別送AH和AL。5.十進(jìn)制運(yùn)算調(diào)整指令本指令必須緊跟在MUL指令之后使用。非組合BCD碼的乘法調(diào)整指令注意本指令必須在DIV運(yùn)算前使用。(6)指令格式:AAD指令功能:把AX中的由兩個非組合BCD碼進(jìn)行調(diào)整,然后可按DIV指令實現(xiàn)兩個非組合BCD碼的除法運(yùn)算。操作過程:將AH中的內(nèi)容乘以10與AL中的內(nèi)容相加,結(jié)果送AL中,再將AH清零。5.十進(jìn)制運(yùn)算調(diào)整指令注意非組合BCD碼的除法調(diào)整指令壓縮BCD運(yùn)算舉例:(1)MOVAL,BCD1;BCD1=34H

ADDAL,BCD2;BCD2=59H,(AL)=8DH

DAA;8DH+06H=93H

MOVBCD3,AL;BCD3=93H(2)MOVAL,BCD1;BCD1=34H

SUBAL,BCD2;BCD2=59H,(AL)=0DBH

DAS;0DBH-60H-06H=75H

MOVBCD3,AL;BCD3=75=-25(10n’補(bǔ)碼)非壓縮BCD運(yùn)算舉例:(1)MULBL;(AX)=(AL)×(BL)=08×09

AAM;(AL)/0AH=48H/0AH→0702(2)AAD;(AX)→(AH)×0AH+(AL)=48H

DIVBL;(AL)=(AX)/(BL)=48H/4=12HAAM;(AL)/0AH=12H/0AH=0108課堂練習(xí):已知DCB1DB34H,12HDCB2DB78H,56H DCB3DB2DUP(?)是壓縮BCD碼數(shù),求BCD1+BCD2,結(jié)果送DCB3。MOVAL,DCB1ADDAL,DCB2DAAMOVDCB3,ALMOVAL,DCB1+1ADCAL,DCB2+1DAAMOVDCB3+1,AL邏輯運(yùn)算指令1.邏輯與運(yùn)算指令指令格式:ANDOP目,OP源指令功能:對兩個操作數(shù)按位進(jìn)行與操作,結(jié)果回送到目標(biāo)操作數(shù)。2.邏輯或運(yùn)算指令指令格式:OROP目,OP源指令功能:對兩個操作數(shù)進(jìn)行邏輯或運(yùn)算,結(jié)果回送到目標(biāo)操作數(shù)。4.2.34.邏輯非運(yùn)算指令指令格式:NOTOP指令功能:對操作數(shù)逐位取反后回送到原處。5.測試指令指令格式:TESTOP目,OP源指令功能:將目標(biāo)操作數(shù)與源操作數(shù)進(jìn)行邏輯與運(yùn)算,不回送結(jié)果,只根據(jù)結(jié)果置標(biāo)志位。指令格式:XOROP目,OP源指令功能:對兩個操作數(shù)進(jìn)行邏輯異或運(yùn)算,結(jié)果回送到目標(biāo)操作數(shù)。3.邏輯異或運(yùn)算指令例:屏蔽AL的第0、1兩位

ANDAL,0FCH例:置AL的第5位為1

ORAL,20H

例:使AL的第0、1位變反

XORAL,3例:測試某些位是0是1

TESTAL,1JZEVEN

********

OR00100000**1*****

******01XOR00000011

******10

********

AND11111100******00

********

AND000000010000000*移位指令1.一般移位指令(1)邏輯左移指令指令格式:SHLOP目,計數(shù)值指令功能:將操作數(shù)的內(nèi)容左移,每移一次,最低位補(bǔ)0,最高位→CF。(2)邏輯右移指令指令格式:SHROP目,計數(shù)值指令功能:將操作數(shù)的內(nèi)容右移,每移一次,最高位補(bǔ)0,

最低位→CF。4.2.41.

(3)算術(shù)左移指令指令格式:SALOP目,計數(shù)值指令功能:同SHL(邏輯左移指令)(4)算術(shù)右移指令指令格式:SAROP目,計數(shù)值指令功能:將操作數(shù)的內(nèi)容右移,每移一次,最高位的值不變,最低位CF→。一般移位指令(1)循環(huán)左移指令指令格式:ROLOP目,計數(shù)值指令功能:將操作數(shù)的內(nèi)容循環(huán)左移,每移一次,最高位移入CF,同時移入最低位。(2)循環(huán)右移指令指令格式:ROROP目,計數(shù)值指令功能:將操作數(shù)的內(nèi)容循環(huán)右移,每移一次,最低位移入CF,同時移入最高位。循環(huán)移位指令2.(4)帶進(jìn)位的循環(huán)右移指令指令格式:RCROP目,計數(shù)值指令功能:包括進(jìn)位位在內(nèi),一起循環(huán)右移,每移一次,最低位移入CF,原CF移入最高位。2.循環(huán)移位指令(3)帶進(jìn)位的循環(huán)左移指令指令格式:RCLOP目,計數(shù)值指令功能:包括進(jìn)位位在內(nèi),一起循環(huán)左移,每移一次,最高位移入CF,原CF移入最低位。注意:

*OPR可用除立即數(shù)以外的任何尋址方式

*CNT=1,SHLOPR,1CNT>1,MOVCL,CNTSHLOPR,CL;以SHL為例*條件標(biāo)志位:

CF=移入的數(shù)值

OF=1

CNT=1時,最高有效位的值發(fā)生變化

OF=0

CNT=1時,最高有效位的值不變對于移位指令:

SF、ZF、PF根據(jù)移位結(jié)果設(shè)置,AF無定義

對于循環(huán)移位指令:

不影響

SF、ZF、PF、AF邏輯左移SHLOPR,CNT邏輯右移SHROPR,CNT算術(shù)左移SALOPR,CNT(同邏輯左移)算術(shù)右移SAROPR,CNT

CF

0

0

CFCF循環(huán)左移ROLOPR,CNT循環(huán)右移ROROPR,CNT帶進(jìn)位循環(huán)左移RCLOPR,CNT帶進(jìn)位循環(huán)右移RCROPR,CNTCF

CFCFCF例:(AX)=0012H,(BX)=0034H,把它們裝配成(AX)=1234H

例:(BX)=84F0H(1)(BX)為無符號數(shù),求

(BX)/2

SHRBX,1

;(BX)=4278H(2)(BX)為帶符號數(shù),求

(BX)×2

SALBX,1

;(BX)=09E0H,OF=1(3)(BX)為帶符號數(shù),求

(BX)/4MOVCL,2 SARBX,CL;(BX)=0E13CHMOVCL,8ROLAX,CLADDAX,BXMOVCH,4;循環(huán)次數(shù)MOVCL,4;移位次數(shù)NEXT:ROLBX,CLMOVAX,BXANDAX,0FHPUSHAXDECCHJNZNEXT00080004000F

0000

(SP)(3)(BX)=84F0H,把

(BX)

中的16位數(shù)每4位壓入堆棧字符串操作指令

串是存儲區(qū)中的一個數(shù)據(jù)序列。串操作是指對串中的每個字或字節(jié)數(shù)據(jù)做相同的操作。串操作分為串傳送、串搜索、串比較及串存取等。所有基本的串操作有如下共同點:4.2.5(1)用寄存器SI尋址源操作數(shù),且假定源操作數(shù)是在現(xiàn)行的數(shù)據(jù)段區(qū)域中,用寄存器DI尋址目標(biāo)操作數(shù),且假定目標(biāo)操作數(shù)是在現(xiàn)行的附加段區(qū)域中。(2)每執(zhí)行一次串操作后自動修改指針SI、DI。若方向標(biāo)志DF=0,則每次操作后SI和DI自動加1或加2;若DF=1,則每次操作后SI和DI自動減1或減2。(3)串長存放在CX中。字符串傳送指令指令格式:MOVSOP目,OP源

MOVSBMOVSW指令功能:從源串中取一個字節(jié)/字,傳送到目標(biāo)串中,并自動修改SI/DI,使之指向下一元素。字符串傳送指令前可以加重復(fù)前綴REP,表示每傳送完

一個元素使CX減1,直到CX=0。使用MOVS指令時,必須說明操作數(shù)的數(shù)據(jù)類型,這樣才能確定是字節(jié)傳送,還是字傳送。1.注意指令格式:CMPSOP目,OP源

CMPSBCMPSW指令功能:取源串一個字節(jié)/字,與目標(biāo)串的一個字節(jié)/字相減,不回送結(jié)果,根據(jù)結(jié)果置標(biāo)志位,并修改串地址指針,使之指向下一個字節(jié)/字單元。字符串比較指令2.指令格式:SCASOPSCASBSCASW指令功能:將AL/AX寄存器中的關(guān)鍵字,減去由DI所指向的目標(biāo)串中的元素,不回送結(jié)果,根據(jù)結(jié)果置標(biāo)志位,并修改DI寄存器內(nèi)容,指向下一元素。執(zhí)行這類指令前,必須先將要查找的關(guān)鍵字送AL/AX中,串的首偏移地址送DI,串長送CX。字符串搜索指令3.注意指令格式:LODSOPLODSBLODSW指令功能:將源串中SI所指向的存儲單元中的一個字節(jié)/字取到AL/AX寄存器中,并修改SI的內(nèi)容,指向下一字節(jié)/字單元。取字符串和存字符串指令(1)取字符串指令4.指令格式:STOSOPSTOSBSTOSW指令功能:將AL/AX中的一個字節(jié)/字,存到由DI所指向的目標(biāo)串的存儲單元,并修改DI的內(nèi)容,指向下一個字節(jié)/字的存放單元。4.取字符串和存字符串指令(2)LODS指令一般不使用重復(fù)前綴,STOS指令常使用REP前綴。存字符串指令注意1.

(1)JMP指令指令格式:JMPSHORT,OP指令操作:IP←IP+8位偏移量。1)段內(nèi)直接短轉(zhuǎn)移指令格式:JMPNEARPTROP指令操作:IP←IP+16位偏移量.2)段內(nèi)直接近轉(zhuǎn)移4.2.6轉(zhuǎn)移指令無條件轉(zhuǎn)移指令

NEAR??墒÷?,使用場合最多OP一般是語句標(biāo)號也即是目的地址,故稱直接轉(zhuǎn)移OP目標(biāo)地址距離現(xiàn)在IP在-128至+127之間。關(guān)鍵字SHORT。(1)指令格式:JMPWORDPTROP或JMPOP4)段內(nèi)間接轉(zhuǎn)移指令格式:JMPFARPTROP3)段間直接轉(zhuǎn)移JMP指令目標(biāo)段地址不同于現(xiàn)段,同時修改CS和IP。其中FAR是關(guān)鍵字。例如:JMPWORDPTR[BX][SI]

或JMPBX。目標(biāo)地址在存儲器和寄存器中,故稱間接轉(zhuǎn)移。常用于多分支程序,事先將多個目標(biāo)地址存入存儲指定位置,根據(jù)條件改變間接轉(zhuǎn)移指令中的變址寄存器的值即可實現(xiàn)多分支。指令格式:JMPDWORDPTROP5)段間間接轉(zhuǎn)移使用同前,注意目標(biāo)地址為32位,和DWORD關(guān)鍵字。(2)調(diào)用和返回指令1)指令格式:CALLOP指令功能:將CALL指令的下一條指令的地址IP或

IP與CS壓棧,新的目標(biāo)地址裝入IP或IP

與CS中,控制程序轉(zhuǎn)移到由OP指明入口的子程序。操作過程:A.當(dāng)前CS壓棧,OP所在段地址→CS,SP-2→SPB.當(dāng)前SP壓棧,OP的偏移地址→IP,SP-2→SP調(diào)用指令(2)調(diào)用和返回指令2)返回指令指令格式:RET指令功能:通常作為一個子程序的最后一條指令,用以返回到調(diào)用子程序的斷點處,即從堆棧彈出斷點送IP

和CS。操作過程:A.從棧頂彈出一個字給IP,SP+2→SPB.從棧頂彈出一個字給CS,SP+2→SP條件轉(zhuǎn)移指令

高于/不低于也不等于轉(zhuǎn)移JA/JNBE目標(biāo)標(biāo)號高于或等于/不低于轉(zhuǎn)移JAE/JNB目標(biāo)標(biāo)號低于/不高于也不等于轉(zhuǎn)移JB/JNAE目標(biāo)標(biāo)號低于或等于/不高于轉(zhuǎn)移JBE/JNA目標(biāo)標(biāo)號大于/不小于也不等于轉(zhuǎn)移JG/JNLE目標(biāo)標(biāo)號大于或等于/不小于轉(zhuǎn)移JGE/JNL目標(biāo)標(biāo)號小于/不大于也不等于轉(zhuǎn)移JL/JNGE目標(biāo)標(biāo)號小于或等于/不大于轉(zhuǎn)移JLE/JNG目標(biāo)標(biāo)號

2.其中,A表示“高于”,B表示“低于”,G表示“大于”,L表示“小于”,N表示“不”,E表示“等于”。注意進(jìn)位為1轉(zhuǎn)移JC目標(biāo)標(biāo)號進(jìn)位為0轉(zhuǎn)移JNC目標(biāo)標(biāo)號等于/結(jié)果為0轉(zhuǎn)移JZ/JE目標(biāo)標(biāo)號不等于/結(jié)果不為0轉(zhuǎn)移JNZ/JNE目標(biāo)標(biāo)號溢出轉(zhuǎn)移JO目標(biāo)標(biāo)號不溢出轉(zhuǎn)移JNO目標(biāo)標(biāo)號奇偶位為0/奇偶性為奇轉(zhuǎn)移JNP/JPO目標(biāo)標(biāo)號奇偶位為1/奇偶性為偶轉(zhuǎn)移JP/JPE目標(biāo)標(biāo)號符號標(biāo)志位為0轉(zhuǎn)移JNS目標(biāo)標(biāo)號符號標(biāo)志位為1轉(zhuǎn)移JS目標(biāo)標(biāo)號2.條件轉(zhuǎn)移指令比較兩個無符號數(shù),并根據(jù)比較結(jié)果轉(zhuǎn)移*

格式測試條件<

JB(JNAE,JC)OPRCF=1≥JNB(JAE,JNC)OPRCF=0≤

JBE(JNA)OPRCF∨ZF=1

>JNBE(JA)OPRCF∨ZF=0*

適用于地址或雙精度數(shù)低位字的比較

比較兩個帶符號數(shù),并根據(jù)比較結(jié)果轉(zhuǎn)移*

格式測試條件<

JL(JNGE)OPRSF

OF=1

≥JNL(JGE)OPRSF

OF=0

≤JLE(JNG)OPR(SF

OF)∨ZF=1

>JNLE(JG)OPR(SF

OF)∨ZF=0*

適用于帶符號數(shù)的比較循環(huán)控制指令(1)計數(shù)循環(huán)指令格式:LOOP目標(biāo)標(biāo)號指令功能:CX-1→CX,若CX≠0,循環(huán)轉(zhuǎn)移到目標(biāo)標(biāo)號,直到CX=0退出循環(huán)。(2)結(jié)果為0/相等循環(huán)指令格式:LOOPZ/LOOPE目標(biāo)標(biāo)號指令功能:CX-1→CX,若CX≠0且ZF=1時,循環(huán)轉(zhuǎn)移到目標(biāo)標(biāo)號,直到CX=0或ZF=0退出循環(huán)。3.3.(3)結(jié)果不為0/不相等循環(huán)指令格式:LOOPNZ/LOOPNE目標(biāo)標(biāo)號指令功能:CX-1→CX,若CX≠0且ZF=0時,循環(huán)轉(zhuǎn)移到目標(biāo)標(biāo)號,直到CX=0或ZF=1時退出循環(huán)。(4)計數(shù)為0轉(zhuǎn)移指令格式:JCXZ目標(biāo)標(biāo)號指令功能:若CX=0時,則控制轉(zhuǎn)向目標(biāo)標(biāo)號,否則順序執(zhí)行。循環(huán)控制指令例DATA開始的存儲區(qū)中有100個無符字節(jié)數(shù),求出其中最大者,并存入MAX單元

MOVBX,OFFSETDATAMOVAL,[BX]MOVCX,63H; 為何?P1:INCBXCMPAL,[BX]J_ENEXTMOVAL,[BX]NEXT:DECCX JNZ_____ MOVMAX,AL HLT

例BUF開始的存儲區(qū)中有10個字節(jié)數(shù),找出該區(qū)域中‘$’,然后將該字符之前的數(shù)相加。

MOVSI,OFFSETBUFDECSI;為何?

MOVCX,10; 為何?LL1:INCSICMPBYTEPTR[SI],‘$’LOOP___LL1MOVAX,0SUBSI,OFFSETBUF JZLL3

MOVCX,SI MOVSI,OFFSETBUFLL2: ADDAL,[SI] ADCAH,0;為何?

INCSI LOOP_______LL3: HLT1.標(biāo)志操作指令完成對標(biāo)志位的置位、復(fù)位等操作,這些指令只影響與其相關(guān)的標(biāo)志位。4.2.7處理器控制指令標(biāo)志操作指令指令格式:CLC;置CF=0STC;置CF=1CMC;置CF=CFCLD;置DF=0STD;置DF=1CLI;置IF=0STI;置IF=1注意(1)處理器暫停指令指令格式:HLT指令操作:使處理器處于暫時停機(jī)狀態(tài)。CPU控制指令2.指令格式:WAIT指令操作:執(zhí)行WAIT指令后,處理器處于等待狀態(tài),直到檢測到TEST引腳信號有效后,才退出等待狀態(tài),繼續(xù)執(zhí)行后續(xù)指令。(2)處理器等待指令2.

(3)處理器交權(quán)指令指令格式:ESCEXTOPCD,OP源指令操作:用來為協(xié)處理器提供一個操作碼和操作數(shù),以便完成主機(jī)對協(xié)處理器的某種操作要求。指令格式:NOP指令操作:在執(zhí)行本指令期間,CPU不完成任何操作,只是每執(zhí)行一條NOP指令,耗費3個時鐘周期的時間。(4)空操作指令CPU控制指令2.CPU控制指令此類指令均不影響標(biāo)志位。(5)總線封鎖前綴注意指令格式:LOCK指令操作:當(dāng)CPU執(zhí)行帶有LOCK前綴的指令時,不允許其他設(shè)備對總線進(jìn)行訪問。LOCK可作為任意指令前綴使用。2.輸出指令指令格式:OUT端口,累加器指令功能:把AX中的16位數(shù)或AL中的8位數(shù)輸出到指定端口。4.2.8輸入輸出指令指令格式:IN累加器,端口指令功能:把一個字節(jié)/字由輸入端口傳送到AL/AX中。1.輸入指令1.溢出中斷指令指令格式:INTO指令功能:檢測OF標(biāo)志位。當(dāng)OF=1時,產(chǎn)生一個中斷類型4

的中斷;當(dāng)OF=0時,本指令不起作用。2.軟中斷指令指令格式:INTn(n為中斷類型號,取值為00H-0FFH)指令功能:產(chǎn)生一個軟件中斷,把控制轉(zhuǎn)向一個類型號為n的軟中斷。本指令影響標(biāo)志位IF、TF。中斷指令3.2.93.中斷返回指令指令格式:IRET指令功能:CPU執(zhí)行完中斷服務(wù)程序后,用此指令使控制正確返回原程序的斷點處。4.2.9中斷指令此類指令影響所有標(biāo)志位。注意4.3.180286增強(qiáng)和新增指令1.

80286增強(qiáng)指令(1)使用堆棧的指令PUSHOP;OP可以是16位立即數(shù)、寄存器和存儲器(2)帶符號乘指令功能:1)IMUL寄存器,立即數(shù)寄存器的內(nèi)容*立即數(shù)→寄存器。從80286到Pentium系列微處理器的指令系統(tǒng)4.34.3.180286增強(qiáng)和新增指令(3)移位指令SHL寄存器/存儲器,計數(shù)值計數(shù)值可為1~31的任意正整數(shù)。其余如SAL、SAR、SHR、ROL、ROR、RCL、RCR等七條指令同SHL。功能:存儲器中的內(nèi)容*立即數(shù)→寄存器。操作數(shù)均為16位帶符號數(shù)。若乘積超過16位,則高位丟失,并置CF=OF=1。2)IMUL寄存器,存儲器,立即數(shù)2.

(1)使用棧的指令PUSHA/POPA指令將所有通用寄存器的值壓入/彈出堆棧,壓入的順序是:AX、CX、DX、BX、SP、BP、SI、DI,彈出的順序與壓入相反。(2)字符串輸入/輸出指令1)INS/OUTS指令A(yù).INS[ES]:目標(biāo)地址,DXOUTSDX,[段地址:]源地址偏移量B.INSB/OUTBC.INSW/OUTW80286新增指令2)

REPINSREPOUTS(4)登錄??臻g和撤銷棧空間指令1)

ENTER16位立即數(shù),8位立即數(shù)2)

LEAVEBOUND16位寄存器,雙字存儲器(3)檢驗邊界指令(5)保護(hù)控制指令此類指令專為支持保護(hù)虛存管理而設(shè)置,見表4-12。2.

80286新增指令1.

80386指令的尋址方式80386指令系統(tǒng)詳解4.3.2尋址方式立即尋址存儲器尋址操作數(shù)是立即數(shù)操作數(shù)在存儲單元中,其線性地址由兩部分組成,即段基址和有效地址(偏移地址)。寄存器尋址操作數(shù)是8、16或32位寄存器

段基址由某一個段寄存器指定,而有效地址則是通過下列4種地址元素計算出來的。1.

80386指令的尋址方式80386指令系統(tǒng)詳解4.3.2偏移量:操作碼之后的8位、16位或32位的數(shù)據(jù)。

基址:任何通用寄存器都可以作為基址寄存器,其內(nèi)容即為基址。變址:除ESP寄存器之外任何通用寄存器均可作為變址寄存器,其值為變址。比例因子:變址寄存器的值可以乘以一個比例因子,比例因子可以取

1、2、4或8。1.

80386指令的尋址方式80386指令系統(tǒng)詳解4.3.2(1)直接尋址DECWORDPTR[1000H]

(2)寄存器間接尋址MOV[EBX],ECX(3)基址尋址MOV[EBX+100],ECX(4)變址尋址MOVECX,[ESI+100](5)帶比例因子的變址尋址MOVECX,[ESI*4+100]

(6)基址變址尋址MOVECX,[ESI][EBX]

操作數(shù)的有效地址EA的計算公式如下:

EA=基址+變址*比例因子+偏移量

以上4個因素的組合形成9種尋址方式。1.

80386指令的尋址方式80386指令系統(tǒng)詳解4.3.2(7)基址加比例因子變址尋址

MOVECX,ESI*4][EBX](8)帶偏移量的基址變址尋址MOVECX,[ESI][EBX+100](9)帶偏移量的基址比例因子變址尋址

MOVECX,[ESI*4][EBX+100]

操作數(shù)的有效地址EA的計算公式如下:

EA=基址+變址*比例因子+偏移量以上4個因素的組合形成9種尋址方式。2.

80386指令系統(tǒng)80386指令系統(tǒng)詳解4.3.2⑴數(shù)據(jù)傳送指令

1)通用傳送指令

①MOV指令功能擴(kuò)展指令中可以出現(xiàn)32位寄存器操作數(shù),允許使用32位寄存器和存儲器操作數(shù)新增指令

MOVSXOP目,OP源;帶符號數(shù)擴(kuò)展指令

MOVSZOP目,OP源;無符號數(shù)擴(kuò)展指令MOVSX指令將源操作數(shù)的內(nèi)容送到目的操作數(shù)中,目的操作數(shù)空出的高位用源操作數(shù)的符號位來填補(bǔ);MOVSZ指令同樣將源操作數(shù)的內(nèi)容送到目的操作數(shù)中,但目的操作數(shù)空出的高位用零來填補(bǔ)。要求指令中的目的操作數(shù)必須為16位或32位的通用寄存器,源操作數(shù)可以是8位或16位的寄存器或存儲器操作數(shù)。同時明確要求,源操作數(shù)的長度要小于目的操作數(shù)。

新增指令功能2.

80386指令系統(tǒng)80386指令系統(tǒng)詳解4.3.2⑴數(shù)據(jù)傳送指令

1)通用傳送指令

②PUSH指令

功能擴(kuò)展允許立即數(shù)入棧,允許使用32位操作數(shù)(此時由ESP指向堆棧棧頂,進(jìn)棧時先將ESP減4,再將源操作數(shù)依次壓入堆棧)。

新增指令PUSHA;將寄存器AX、CX、DX、BX、;SP、BP、SI、DI依次壓入堆棧PSHAD;將寄存器EAX、ECX、EDX、EBX、ESP、

;EBP、ESI、EDI依次壓入堆棧2.

80386指令系統(tǒng)80386指令系統(tǒng)詳解4.3.2⑴數(shù)據(jù)傳送指令

1)通用傳送指令

③POP指令

功能擴(kuò)展允許彈出32位操作數(shù)(此時由ESP指向堆棧棧頂,出棧時先將源操作數(shù)依次彈出堆棧,再將ESP加4)。

新增指令POPA;從棧頂彈出8個字分別送入寄存器DI、SI、;BP、SP、BX、DX、CX、AXPOPAD;從棧頂彈出8個字分別送入寄存器EDI、ESI、;EBP、ESP、EBX、EDX、ECX、EAX2.

80386指令系統(tǒng)80386指令系統(tǒng)詳解4.3.2⑴數(shù)據(jù)傳送指令

2)地址傳送指令①LEA指令允許使用32位操作數(shù)。②LDS指令允許從數(shù)據(jù)段中取出32位的偏移量送ESI,取16位的段基址送DS。

LES指令允許從當(dāng)前數(shù)據(jù)段中取48位的地址指針?biāo)虴S和EDI

寄存器。

新增指令LFS;從當(dāng)前數(shù)據(jù)段中取48位的地址指針?biāo)虵S和ESI寄存;器LGS;從當(dāng)前數(shù)據(jù)段中取48位的地址指針?biāo)虶S和ESI寄存;器LSS;從當(dāng)前數(shù)據(jù)段中取48位的地址指針?biāo)蚐S和ESP寄存;器

2.

80386指令系統(tǒng)80386指令系統(tǒng)詳解4.3.2⑴數(shù)據(jù)傳送指令

3)標(biāo)志傳送指令除了8086指令系統(tǒng)中的標(biāo)志傳送指令LAHF、SAHF、PUSHF、POPF之外,80386還設(shè)置了以下新增指令:

新增指令PUSHFD;將標(biāo)志寄存器中的32位數(shù)據(jù)壓棧

POPFD;將棧頂?shù)碾p字彈出到32位的標(biāo)志寄存器

2.

80386指令系統(tǒng)80386指令系統(tǒng)詳解4.3.2⑵算術(shù)運(yùn)算指令1)加法指令。加法指令包括ADD、ADC和INC指令,在

80

溫馨提示

  • 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

提交評論