版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
指令系統(tǒng)一組指令的集合
80x86的指令系統(tǒng)和尋址方式
操作碼運算元...運算元指令
尋址方式與數(shù)據(jù)有關(guān)的尋址方式與轉(zhuǎn)移地址有關(guān)的尋址方式1.8086的尋址方式
與數(shù)據(jù)有關(guān)的尋址方式:以MOV
指令為例立即尋址MOVAX,3069H寄存器尋址MOVAL,BH直接尋址MOVAX,[2000H]寄存器間接尋址MOVAX,[BX]
寄存器相對尋址MOVAX,COUNT[SI]
基址變址尋址MOVAX,[BP][DI]相對基址變址尋址MOVAX,MASK[BX][SI]記憶體尋址(1)立即尋址方式*——運算元在指令中給出指令格式:MOVAL,5MOVAX,3064HMOVAL,‘A’*
只能用於
SRC字段
MOV40H,AL
*SRC和DST的字長一致
MOVAH,3064H
(2)寄存器尋址方式*—運算元在指定的寄存器中
MOVAX,BXMOVAL,BHMOVAX,3064H*
位元組寄存器只有
AHALBHBLCHCLDHDL*SRC和DST的字長一致
MOVAH,BX
*
CS不能用
MOV指令改變
MOVCS,AX
(3)直接尋址方式*—有效地址EA由指令直接給出
例:MOVAX,[2000H]
EA=2000H,假設(shè)(DS)=3000H,那麼PA=32000H*
隱含的段為數(shù)據(jù)段DS*
可使用段跨越首碼
MOVAX,ES:[2000H]*
運算元地址可由變數(shù)(符號地址)表示,但要注意VALUEDB10變數(shù)的屬性MOVAH,VALUE
MOVAX,VALUE
MOVAX,WORDPTRVALUE
(WORDPTR是字操作符,以後詳細講)5030
32000AHAL3050(AX)=3050H寄存器間接尋址*—EA在基址寄存器(BX/BP)
或變址寄存器(SI/DI)中
MOVAX,[BX]PA=16d(DS)+(BX)MOVAX,ES:[BX]PA=16d(ES)+(BX)MOVAX,[BP]PA=16d(SS)+(BP)*不允許使用AX、CX、DX存放EAMOVAX,[CX]
*
SRC和DST的字長一致
MOVDL,[BX];[BX]指示一個位元組單元
MOVDX,[BX];[BX]指示一個字單元
*
適於數(shù)組、字串、表格的處理
有效地址=(BX)(BP)8位(SI)16位(DI)+位移量(5)寄存器相對尋址方式*
指令格式:MOVAX,COUNT[SI]或
MOVAX,[COUNT+SI]
假設(shè)(DS)=3000H,(SI)=2000H,COUNT=3000H,
則:PA=35000H
假設(shè)(35000H)=1234H,那麼(AX)=1234H*適於數(shù)組、字串、表格的處理(6)基址變址尋址方式*指令格式:
MOVAX,[BX][DI]MOVAX,[BX+DI]MOVAX,ES:[BX][SI]*適於數(shù)組、字串、表格的處理*必須是一個基址寄存器和一個變址寄存器的組合
MOVAX,[BX][BP]
MOVAX,[SI][DI]
有效地址=(BX)(SI)(BP)(DI)+(7)相對基址變址尋址方式
MOVAX,MASK[BX][SI]
或
MOVAX,MASK[BX+SI]
或MOVAX,[MASK+BX+SI]
有效地址=(BX)(SI)8位(BP)(DI)16位++位移量訪問記憶體的方式
默認的段寄存器可跨越的段寄存器偏移地址取指令
CS無IP堆疊操作
SS無SP一般數(shù)據(jù)訪問
DSCSESSS有效地址EABP作為基址的尋址
SSCSDSESBP串操作的源運算元
DSCSESSSSI串操作的目的運算元
ES無DI段寄存器的使用規(guī)定例:編寫一段顯示字串STRING的程式
DATASEGMENTSTRINGDB‘HAPPYNEWYEAR!’,0DH,0AH,‘$’COUNTDW17DATAENDS(1)直接尋址
movdl,string
movah,2
int21h;顯示字元‘H’
movdl,string+1
movah,2
int21h;顯示字元‘A’::(2)寄存器間接尋址
mov
cx,count;mov
cx,17
mov
bx,offsetstring;string的偏址
bxNext:movdl,[bx]
movah,2
int21h;顯示一個字元
incbxloopnext;迴圈指令(3)寄存器相對尋址
mov
cx,count;mov
cx,17
mov
si,0Next:movdl,string[si];movdl,[string+si]
movah,2
int21h;顯示一個字元
incsiloopnext;迴圈指令(4)基址變址尋址
mov
cx,count;mov
cx,17
mov
bx,offsetstring;string的偏址
bx
mov
si,0Next:movdl,[bx][si];movdl,[bx+si]
movah,2
int21h;顯示一個字元
incsiloopnext;迴圈指令(5)DOS顯示字串功能
mov
dx,offsetstring;string的偏址
dx
;leadx,string
movah,9
int21h;顯示一串字元80x86新增的尋址方式
EA=(基址寄存器)+(變址寄存器)
比例因數(shù)+位移量(1)比例變址尋址方式
例:MOVEAX,COUNT[ESI
4]注意E它是後加的一個標誌(2)基址比例變址尋址方式
例:MOVECX,[EAX][EDI
4]
(3)相對基址比例變址尋址方式
例:MOVEAX,TABLE[EBP][EDI
4]▲16位和32位尋址的差異地址成分16位尋址32位尋址基址寄存器BX、BP任何32位通用寄存器變址寄存器SI、DI除ESP外的任何32位通用寄存器比例因數(shù)11、2、4、8與轉(zhuǎn)移地址有關(guān)的尋址方式:
段內(nèi)尋址段內(nèi)直接尋址JMPNEARPTRNEXT
段內(nèi)間接尋址JMPTABLE[BX]
段間尋址
段間直接尋址JMPFARPTRNEXT
段間間接尋址JMPDWORDPTR[BX]用來確定轉(zhuǎn)移指令及轉(zhuǎn)子指令的轉(zhuǎn)向地址。(1)段內(nèi)直接尋址轉(zhuǎn)向的有效地址=當前(IP)+位移量(8bit/16bit)
例:JMPNEARPTRNEXT近轉(zhuǎn)移-32768~+32767
JMPSHORTNEXT
短轉(zhuǎn)移-128~+127
(2)段內(nèi)間接尋址
轉(zhuǎn)向的有效地址是一個寄存器或存儲單元的內(nèi)容。(可用除立即數(shù)以外的任何一種數(shù)據(jù)尋址方式得到)
例:TABLE=20A2H(BX)=1256H(SI)=528EH(DS)=2000H(232F8H)=3280H(264E4H)=2450H
JMPBX;(IP)=1256H
JMPTABLE[BX]JMPWORDPTRTABLE[BX];(IP)=3280H
JMP[BX][SI]JMPWORDPTR[BX][SI];(IP)=2450Hcode1segment
……
jmp
farptrnext
……code1endscode2segment
……next:…...
……code2ends(3)段間直接尋址
用指令中提供的轉(zhuǎn)向段地址和偏移地址取代CS和IP
例:(4)段間間接尋址
用記憶體中的兩個相繼字的內(nèi)容取代CS和IP
(存儲單元的地址可用記憶體尋址方式得到)
例:
JMPDWORDPTR[INTERS+BX]
PA=(DS)×24+(BX)+INTERS(PA+1,PA)→IP(PA+3,PA+2)→CS第3章練習(xí)Page107
3.13.33.53.73.113.133.1設(shè)(BX)=637DH,(SI)=2A9BH,位移量D=7237H,試確定在以下各種尋址方式下的有效地址是什麼?
(1)立即尋址。
直接將數(shù)送到指定的記憶體單元或者是寄存器
(2)直接尋址。
d
(3)使用BX的寄存器尋址。
通用寄存器bx的編碼地址
(4)使用BX的間接尋址。
地址是(bx),
(5)使用BX的寄存器相對尋址。
地址是(bx)+d
(6)基址變址尋址。
(bx)+(si)
(7)相對基址變址尋址。
(bx)+(si)+d
(1)立即尋址。
沒有有效地址
(2)直接尋址。
D
7237H
(3)使用BX的寄存器尋址。
bx中存放的是運算元沒有效地址
(4)使用BX的間接尋址。
BX
637DH
(5)使用BX的寄存器相對尋址。
bx+d
D5B4H
(6)基址變址尋址。
bX+si
8E18H
(7)相對基址變址尋址。
bx+si+d
004FH(有溢出)
不用知道DS
,需要求物理地址時才要。題目是求有效地址。
3.3寫出首地址為BLOCK的字數(shù)組的第六個字送到DX寄存器的指令,要求使用以下幾種尋址方式:
(1)寄存器間接尋址
(2)寄存器相對尋址
(3)基址變址尋址
(1)寄存器間接尋址
MOV
BX,OFFSET
BLOCK ADD
BX,OAH
MOV
DX
,[BX](2)寄存器相對尋址
MOV
BX,0AH
MOV
DX,BLOCK[BX](3)基址變址尋址
MOV
BX
,
OFFSET
BLOCK
MOV
SI,OAH MOV
DX,[BX][SI]3.5設(shè)(IP)=2BC0H,(CS)=0200H,位移量=5119H,(BX)=1200H,(DS)=212AH,(263B9)=089AH(275B9)=098AH試確定轉(zhuǎn)移指令(JMP)轉(zhuǎn)移的偏移地址(即CS=?,IP=?)(1)段內(nèi)直接尋址方式;(2)使用BX及寄存器間接尋址方式的段內(nèi)間接尋址;(3)使用BX及寄存器相對尋址方式的段內(nèi)間接尋址;
段內(nèi)直接尋址方式:
jmp
[5119]
CS=0200,IP=089A
使用BX及寄存器間接尋址方式的段內(nèi)間接尋址:
jmp
word
ptr
bx
CS=0200,IP=1200
使用BX及寄存器相對尋址方式的段內(nèi)間接尋址:
jmp
word
ptr
5119[bx]
CS=0200,IP=098A
注意:轉(zhuǎn)向的有效地址是一個寄存器或存儲單元的內(nèi)容。3.7在0624H單元內(nèi)有一條二位元組JMPSHORTOBJ指令,如其中位移量為
(1)27H
(2)6BH
(3)0C6H
試問轉(zhuǎn)向地址OBJ的值是多少?
(1)
064DH
(2)
0691H
(3)
06ECH
0624H加上JMP指令的長度2作為跳轉(zhuǎn)基址,然後再加上位移量。
3.11執(zhí)行下列指令後,AX寄存器中的內(nèi)容是什麼?TABLEDW10,20,30,40,50ENTRYDW3MOVBX,OFFSETTABLEADDBX,ENTRYMOVAX,[BX](AX)=403.13已知SS=0FFA0H,SP=00B0H,先執(zhí)行兩條把8057H和0F79H分別進棧的PUSH指令,再執(zhí)行一條POP指令,試畫出堆疊區(qū)和SP內(nèi)容變化的過程示意圖。(標出存儲單元的地址)
數(shù)據(jù)傳送指令
算術(shù)指令
邏輯指令
串處理指令
控制轉(zhuǎn)移指令
處理機控制與雜項操作指令2.8086的指令系統(tǒng)重點關(guān)注:指令的彙編格式指令的基本功能指令支持的尋址方式指令的執(zhí)行對標誌位的影響指令的特殊要求
數(shù)據(jù)傳送指令:
通用數(shù)據(jù)傳送指令
MOV、PUSH、POP、XCHG
累加器專用傳送指令
IN、OUT、XLAT
地址傳送指令
LEA、LDS、LES
標誌寄存器傳送指令
LAHF、SAHF、PUSHF、POPF
類型轉(zhuǎn)換指令
CBW、CWD傳送指令:MOVDST,SRC執(zhí)行操作:(DST)(SRC)注意:*DST、SRC不能同時為段寄存器
MOVDS,ES
*立即數(shù)不能直接送段寄存器
MOVDS,2000H
*DST不能是立即數(shù)和CS*DST、SRC不能同時為記憶體尋址*不影響標誌位
通用數(shù)據(jù)傳送指令MOVAX,DSEGMOVDS,AX
進棧指令:PUSHSRC
執(zhí)行操作:(SP)
(SP)–2((SP)+1,(SP))
(SRC)
出棧指令:POPDST
執(zhí)行操作:(DST)
((SP)+1,(SP)) (SP)
(SP)+2堆疊:‘先進後出’的存儲區(qū),段地址存放在SS中,
SP在任何時候都指向棧頂,進出棧後自動修改SP。
注意:
*堆疊操作必須以字為單位。
*
不影響標誌位
*
不能用立即尋址方式
PUSH1234H
*DST不能是CSPOPCS
例:假設(shè)(AX)=2107H,執(zhí)行
PUSHAX********(SP)
PUSHAX執(zhí)行前(SP)
********07H21H低地址
高地址PUSHAX執(zhí)行後進棧方向(SP)
********07H21HPOPBX執(zhí)行前(SP)
********07H21H低地址
高地址POPBX執(zhí)行後
(BX)=2107H例:POPBX出棧方向例:PUSHDSSUBAX,AXPUSHAX…………RET例:PUSHAXPUSHBXPUSHCX……;其間用到AX、BX、CXPOPCX;後進先出
POPBXPOPAX
交換指令:XCHGOPR1,OPR2
執(zhí)行操作:(OPR1)
(OPR2)注意:
*不影響標誌位
*不允許使用段寄存器
例:XCHGBX,[BP+SI]XCHGAL,BH
累加器專用傳送指令(只限使用AX或AL)
輸入指令I(lǐng)N(I/O
CPU)
長格式:INAL,PORT(位元組)
INAX,PORT(字)執(zhí)行操作:(AL)
(PORT)(位元組)
(AX)
(PORT+1,PORT)(字)短格式:INAL,DX(位元組)
INAX,DX(字)執(zhí)行操作:(AL)((DX))(位元組)
(AX)((DX)+1,(DX))(字)
輸出指令OUT(CPU
I/O)長格式:OUTPORT,AL(位元組)
OUTPORT,AX(字)執(zhí)行操作:(PORT)
(AL)(位元組)
(PORT+1,PORT)
(AX)(字)短格式:OUTDX,AL(位元組)
OUTDX,AX(字)執(zhí)行操作:((DX))
(AL)(位元組)
((DX)+1,(DX))
(AX)(字)注意:*
不影響標誌位*
前256個端口號00H~FFH可直接在指令中指定(長格式)*
如果端口號
256,端口號
DX(短格式)例:INAX,28H MOVDATA_WORD,AX例:MOVDX,3FCHINAX,DX例:OUT5,AL例:測試某狀態(tài)寄存器(端口號27H)的第2位是否為1INAL,27HTESTAL,00000100BJNZERROR;若第2位為1,轉(zhuǎn)ERROR處理例:Sound程式
mov
dx,100inal,61handal,11111100bsound:
xoral,2;101out61h,al;ONOFFON
mov
cx,140h;脈寬Wait1:loopwait1
dec
dx
jnesound設(shè)備控制寄存器端口61H1/00
控制其他外部設(shè)備與門放大器2號定時器門控10(BX)
30HF004031HF0041(AL)=332HF004233HF0043TABLE(DS)=F000H換碼指令:XLAT或XLATOPR執(zhí)行操作:(AL)
((BX)+(AL))例:MOVBX,OFFSETTABLE;(BX)=0040HMOVAL,3XLATTABLE
指令執(zhí)行後(AL)=33H注意:
*不影響標誌位*位元組表格(長度不超過256)
首地址
(BX)*需轉(zhuǎn)換的代碼位移量(AL)
地址傳送指令
有效地址送寄存器指令:LEAREG,SRC
執(zhí)行操作:(REG)
SRC
指針送寄存器和DS指令:LDSREG,SRC
執(zhí)行操作:(REG)
(SRC)(DS)
(SRC+2)
相繼二字
寄存器、DS
指針送寄存器和ES指令:LESREG,SRC
執(zhí)行操作:(REG)
(SRC)(ES)
(SRC+2)
相繼二字
寄存器、ES例:LEABX,[BX+SI+0F62H]
LDSSI,[10H]
LESDI,[BX]40H00H00H30HTABLE(DS):1000HMOVBX,TABLE;(BX)=0040HMOVBX,OFFSETTABLE;(BX)=1000HLEABX,TABLE;(BX)=1000HLDSBX,TABLE;(BX)=0040H
;(DS)=3000HLESBX,TABLE;(BX)=0040H
;(ES)=3000H注意:
*不影響標誌位
*REG不能是段寄存器
*SRC必須為記憶體尋址方式
標誌寄存器傳送指令
標誌送AH指令:LAHF
執(zhí)行操作:(AH)
(FLAGS的低位元組)
AH送標誌寄存器指令:SAHF
執(zhí)行操作:(FLAGS的低位元組)
(AH)
標誌進棧指令:PUSHF
執(zhí)行操作:(SP)
(SP)-2((SP)+1,(SP))
(FLAGS)
標誌出棧指令:POPF
執(zhí)行操作:(FLAGS)
((SP)+1,(SP))(SP)
(SP)+2*影響標誌位
類型轉(zhuǎn)換指令
CBWAL
AX
執(zhí)行操作:若(AL)的最高有效位為0,則(AH)=00H
若(AL)的最高有效位為1,則(AH)=FFH
CWDAX
(DX,AX)
執(zhí)行操作:若(AX)的最高有效位為0,則(DX)=0000H
若(AX)的最高有效位為1,則(DX)=FFFFH
例:(AX)=0BA45HCBW;(AX)=0045HCWD;(DX)=0FFFFH(AX)=0BA45H注意:*無運算元指令
*隱含對AL或AX進行符號擴展
*不影響條件標誌位算術(shù)指令:
加法指令
ADD、ADC、INC
減法指令
SUB、SBB、DEC、NEG、CMP
乘法指令
MUL、IMUL
除法指令
DIV、IDIV
十進位調(diào)整指令
DAA、DAS、
AAA、AAS、AAM、AAD
加法指令
加法指令:ADDDST,SRC
執(zhí)行操作:(DST)
(SRC)+(DST)
帶進位加法指令:ADCDST,SRC
執(zhí)行操作:(DST)
(SRC)+(DST)+CF
加1指令:INCOPR
執(zhí)行操作:(OPR)
(OPR)+1注意:*除INC指令不影響CF標誌外,均對條件標誌位有影響。加法指令對條件標誌位的影響CF位表示無符號數(shù)相加的溢出。OF位表示帶符號數(shù)相加的溢出。1結(jié)果為負0否則SF=1結(jié)果為00否則ZF=1和的最高有效位有向高位的進位0否則CF=1兩個運算元符號相同,而結(jié)果符號與之相反0否則OF=舉例:n=8bit帶符號數(shù)(-128~127),無符號數(shù)(0~255)
00000100+0000101100001111帶:(+4)+(+11)=+15OF=0無:4+11=15CF=0帶符號數(shù)和無符號數(shù)都不溢出
00001001+0111110010000101
帶:(+9)+(+124)=-123OF=1
無:9+124=133CF=0帶符號數(shù)溢出無符號數(shù)溢出
00000111+11111011100000010帶:(+7)+(-5)=+2OF=0無:7+251=2CF=1帶符號數(shù)和無符號數(shù)都溢出
10000111+11110101101111100帶:(-121)+(-11)=+124OF=1無:135+245=124CF=1例:雙精度數(shù)的加法
(DX)=0002H(AX)=0F365H(BX)=0005H(CX)=8100H
指令序列
ADDAX,CX;(1)ADCDX,BX;(2)
(1)執(zhí)行後,(AX)=7465H
CF=1OF=1SF=0ZF=0(2)執(zhí)行後,(DX)=0008HCF=0OF=0SF=0ZF=0
減法指令減法指令:SUBDST,SRC執(zhí)行操作:(DST)
(DST)-(SRC)帶借位減法指令:SBBDST,SRC執(zhí)行操作:(DST)
(DST)-(SRC)-CF減1指令:DECOPR執(zhí)行操作:(OPR)
(OPR)-1求補指令:NEGOPR執(zhí)行操作:(OPR)
-(OPR)比較指令:CMPOPR1,OPR2執(zhí)行操作:(OPR1)-(OPR2)注意:*除DEC指令不影響
CF標誌外,均對條件標誌位有影響。減法指令對條件標誌位(CF/OF/ZF/SF)的影響:CF位表示無符號數(shù)減法的溢出。OF位表示帶符號數(shù)減法的溢出。1被減數(shù)的最高有效位有向高位的借位0否則CF=1兩個運算元符號相反,而結(jié)果的符號與減數(shù)相同0否則OF=1減法轉(zhuǎn)換為加法運算時無進位0否則CF=或NEG指令對CF/OF的影響0運算元為01否則CF=1運算元為-128(位元組運算)或運算元為-32768(字運算)0否則OF=
00011110+00011111NEG指令對CF/OF的影響0運算元為01否則CF=1運算元為-128(位元組運算)或運算元為-32768(字運算)0否則OF=
00001111+000110000
10000111+00011000例: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單元
乘法指令
無符號數(shù)乘法指令:MULSRC
帶符號數(shù)乘法指令:IMULSRC
執(zhí)行操作:位元組運算元(AX)
(AL)*(SRC)
字運算元(DX,AX)
(AX)*(SRC)注意:
*AL(AX)為隱含的乘數(shù)寄存器。*AX(DX,AX)為隱含的乘積寄存器。*SRC不能為立即數(shù)。*除CF和OF外,對條件標誌位無定義。乘法指令對CF/OF的影響:例:(AX)=16A5H,(BX)=0611H
(1)
IMULBL
;(AX)(AL)*(BL)
;A5*115B*11=060BF9F5
;
(AX)=0F9F5H
CF=OF=1(2)
MULBX
;(DX,AX)(AX)*(BX)
;16A5*0611=00895EF5
;
(DX)=0089H(AX)=5EF5H
CF=OF=100乘積的高一半為零11否則MUL指令:CF,OF=00乘積的高一半是低一半的符號擴展11否則
IMUL指令:CF,OF=1010010101011011
除法指令
無符號數(shù)除法指令:DIVSRC
帶符號數(shù)除法指令:IDIVSRC
執(zhí)行操作:位元組操作(AL)
(AX)/(SRC)的商
(AH)
(AX)/(SRC)的餘數(shù)字操作
(AX)
(DX,AX)/(SRC)的商
(DX)
(DX,AX)/(SRC)的餘數(shù)注意:
*AX(DX,AX)為隱含的被除數(shù)寄存器。
*AL(AX)為隱含的商寄存器。
*AH(DX)為隱含的餘數(shù)寄存器。
*SRC不能為立即數(shù)。
*對所有條件標誌位均無定義。如何判別結(jié)果有效?如果在位元組操作時,被除數(shù)的高8位絕對值>=除數(shù)的絕對值,或在字操作時,…或雙字操作時,…。這時候商產(chǎn)生了溢出。8086對這種溢出由系統(tǒng)的中斷進行處理。但為避免結(jié)果無效,在程式中要進行判斷和處理例: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)
十進位調(diào)整指令BCD碼:用二進位編碼的十進位數(shù),又稱二--十進位數(shù)壓縮的BCD碼:用4位二進位數(shù)表示1位十進位數(shù)
例:(59)10=(01011001)BCD非壓縮的BCD碼:用8位二進位數(shù)表示1位十進位數(shù)例:(59)10=(0000010100001001)BCD數(shù)字的ASCII碼是一種非壓縮的BCD碼
DIGIT ASCII BCD0 30H 001100001 31H 001100012 32H 00110010… … …9 39H 00111001例:寫出(3590)10的壓縮BCD碼和非壓縮BCD碼,並分別把它們存入數(shù)據(jù)區(qū)PAKED和UNPAK壓縮BCD: (3590)10=(0011010110010000)BCD非壓縮BCD:
(3590)10=(00000011000001010000100100000000)BCDPAKED90H35HUNPAK00H09H05H03H問題的提出:十進位調(diào)整指令19壓縮BCD:00011001
2700100001+110
+08+00001000
(00100111)BCDAF=1(1)壓縮的BCD碼調(diào)整指令●DAA加法的十進位調(diào)整指令●DAS減法的十進位調(diào)整指令(2)非壓縮的BCD碼調(diào)整指令●AAA加法的ASCII碼調(diào)整指令●AAS減法的ASCII碼調(diào)整指令●AAM乘法的ASCII碼調(diào)整指令●AAD除法的ASCII碼調(diào)整指令壓縮BCD運算舉例:(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’補數(shù))非壓縮BCD運算舉例:(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第3章作業(yè)Page109
3.14~3.17
3.14設(shè)(DS)=1B00H,(ES)=2B00H,有關(guān)記憶體地址及其內(nèi)容如下圖所示,請用兩條指令把X裝入AX寄存器。LEA
BX,[2000H]
MOVAX,ES:[BX]
3.15求出以下各十六進制數(shù)與十六進制數(shù)62A0之和,並根據(jù)結(jié)果設(shè)置標誌位SF、ZF、CF和OF的值。
(1)1234
(2)4321
(3)CFA0
(4)9D60
(1)
74D4HSF=0ZF=0CF=0OF=0
(2)
A5C1HSF=1ZF=0CF=0OF=1
(3)
3240HSF=0ZF=0CF=1OF=0
(4)
0000HSF=0ZF=1CF=1OF=0
3.16求出以下各十六進制數(shù)與十六進制數(shù)4AE0的差值,並根據(jù)結(jié)果設(shè)置標誌位SF、ZF、CF和OF的值。
(1)1234
(2)5D90
(3)9090
(4)EA04
(1)
0C754HSF=1ZF=0CF=1OF=0
(2)
12B0HSF=0ZF=0CF=0OF=0
(3)
45B0HSF=0ZF=0CF=0OF=1
(4)
9F24HSF=1ZF=0CF=0OF=0
3.17寫出執(zhí)行以下計算的指令序列,其中X、Y、Z、R、W均為存放16位帶符號數(shù)單元的地址。
(1)Z
W+(Z-X)
(2)Z
W-(X+6)-(R+9)
(3)Z
(W*X)/(Y+6),R
餘數(shù)
(4)Z(W-X)/(5*Y)*22.
(1)
mov
ax,z
sub
ax,x
add
ax,w
mov
z,ax
(2)movax,w
mov
bx,xaddbx,6subax,bx
mov
bx,raddbx,9subax,bx
movz,ax
(3)
mov
ax,w
mov
bx,x
mul
bx;結(jié)果在(dx,ax)
mov
bx,y
addbx,6divbx;被除數(shù)
(dx,ax);AX中是商DX中是餘數(shù)
movz,ax
mov
r,dx
(4)你們自己做做邏輯指令:
邏輯運算指令
AND、OR、NOT、XOR、TEST
移位指令
SHL、SHR、SAL、SAR、
ROL、ROR、RCL、RCR邏輯非指令:NOTOPR*OPR不能為立即數(shù)執(zhí)行操作:(OPR)
(OPR)*不影響標誌位
邏輯與指令:ANDDST,SRC執(zhí)行操作:(DST)
(DST)
(SRC)邏輯或指令:ORDST,SRC執(zhí)行操作:(DST)
(DST)
(SRC)異或指令:XORDST,SRC執(zhí)行操作:(DST)
(DST)
(SRC)測試指令:TESTOPR1,OPR2
執(zhí)行操作:(OPR1)
(OPR2)CFOFSFZFPFAF00***無定義
根據(jù)運算結(jié)果設(shè)置
邏輯運算指令例:遮罩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*邏輯左移SHLOPR,CNT邏輯右移SHROPR,CNT算術(shù)左移SALOPR,CNT(同邏輯左移)算術(shù)右移SAROPR,CNT
CF0
0CFCF
移位指令迴圈左移ROLOPR,CNT迴圈右移ROROPR,CNT帶進位迴圈左移RCLOPR,CNT帶進位迴圈右移RCROPR,CNTCF
CFCFCF注意:
*OPR可用除立即數(shù)以外的任何尋址方式*CNT=1,SHLOPR,1CNT>1,MOVCL,CNTSHLOPR,CL;以SHL為例*條件標誌位:
CF=移入的數(shù)值
1CNT=1時,最高有效位的值發(fā)生變化0CNT=1時,最高有效位的值不變移位指令:
SF、ZF、PF根據(jù)移位結(jié)果設(shè)置,AF無定義迴圈移位指令:
不影響SF、ZF、PF、AFOF=例:(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;迴圈次數(shù)MOVCL,4;移位次數(shù)NEXT:ROLBX,CLMOVAX,BXANDAX,0FHPUSHAXDECCHJNZNEXT00080004000F
0000
(SP)(3)(BX)=84F0H,把
(BX)
中的16位數(shù)每4位壓入堆疊串處
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025幼兒園財務(wù)工作計劃2
- 2025年社區(qū)暑假工作計劃例文
- 2025年度業(yè)務(wù)員年度工作計劃
- Unit 4 Birthday Lesson2(說課稿)-2024-2025學(xué)年北師大版(三起)英語六年級上冊
- 信息技術(shù)《制作一張賀卡》說課稿
- 核設(shè)施退役技術(shù)設(shè)備行業(yè)相關(guān)投資計劃提議
- 互聯(lián)網(wǎng)數(shù)據(jù)中心相關(guān)項目投資計劃書
- 中、小型機場氣象觀測系統(tǒng)相關(guān)行業(yè)投資方案
- 地電場儀行業(yè)相關(guān)投資計劃提議范本
- 乙苯脫氫催化劑相關(guān)項目投資計劃書范本
- 房屋買賣合同律師見證書
- 術(shù)中獲得性壓力性損傷預(yù)防
- 新形勢下物資采購面臨的機遇、挑戰(zhàn)及對策思考
- 電氣接線工藝培訓(xùn)
- 中央空調(diào)安全規(guī)范
- 胸腔積液-課件
- 2023年全國統(tǒng)一建筑工程預(yù)算工程量計算規(guī)則完整版
- cn.7a一種醬香型大曲酒固態(tài)發(fā)酵的生態(tài)控制方法
- GB/T 8491-2009高硅耐蝕鑄鐵件
- 供水安全與搶修
- DB31 595-2021 冷庫單位產(chǎn)品能源消耗指標
評論
0/150
提交評論