版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章
指令系統(tǒng)
指令格式和操作碼的擴(kuò)展技術(shù)
4.14.3指令系統(tǒng)
4.1.1指令格式
4.3.1數(shù)據(jù)傳送指令
操作碼的擴(kuò)展技術(shù)
4124.3.2算術(shù)運(yùn)算指令
4.3.3邏輯指令
4.2尋址方式4.3.4串處理指令
4.2.1與數(shù)據(jù)有關(guān)的尋址方式4.3.5控制轉(zhuǎn)移指令
4.2.2與轉(zhuǎn)移地址有關(guān)的尋址方式4.3.6處理器控制指令
學(xué)習(xí)指令的要點(diǎn)
?:?指令的功能一一該指令能夠?qū)崿F(xiàn)何種操作。通常指令助
記符就是指令功能的英文單詞或其縮寫形式。
?指令支持的尋址方式一一該指令中的操作數(shù)可以采用何
種尋址方式。
指令對(duì)標(biāo)志的影響一一該指令執(zhí)行后是否對(duì)各個(gè)標(biāo)志位
有影響,以及如何影響。
其他方面一一該指令其他需要特別注意的地方,如指令
執(zhí)行時(shí)的約定設(shè)置、必須預(yù)置的參數(shù)、隱含使用的寄存
器等。
預(yù)備知識(shí)
1、地址線與尋址能力的關(guān)系
2、數(shù)據(jù)線與機(jī)器字長(zhǎng)的關(guān)系
>20根地址線:尋址能力1MB
地址范圍00000H?FFFFFH(1MB)
印器字長(zhǎng)16位:僅能表示地址范0000H?FFFFH(64KB)
?地址的表示方法:邏輯地址和物理地址
》形式地址:表示在指令中的操作數(shù)地址
物理地址:用形式地址并結(jié)合某些規(guī)則,可以計(jì)算出操作
數(shù)在存儲(chǔ)器中的存儲(chǔ)單元地址.
,邏輯地址的表示段地址:偏移地址
偏移地址又稱有效地址(EA)
預(yù)備知識(shí)
?(存儲(chǔ)器的分段)
[16位的R中如何訪問20位地址的M空間小段?]
解決方法:小段的首地址
決F1MB的M分成很多邏輯段;00000H?0000FH
00010H?0001FH
海16個(gè)字節(jié)為一小段,共有64K個(gè)小段
00020H?0002FH
???
段起始地址:小段首地址
FFFFOH?FFFFFH
段的大?。?4K范內(nèi)的任意字節(jié)
制之間可以間隔;緊密相連;部分重疊;完全重疊
將邏輯地址一物理地址,即可訪問M
預(yù)備知識(shí)
存儲(chǔ)器的邏輯分段:
?8086對(duì)邏輯段要求:
-段地址低4位均為0
-每段最大不超過64KB
?8086對(duì)邏輯段并不要求:
-必須是64KB
-各段之間完全分開(即可以重疊)
[是否M中每個(gè)單元都可做段起點(diǎn)(段地址)?:
預(yù)備知識(shí)
物理地址的形成")
計(jì)算公式:物理地址=段地址X16D+偏移地址
物理地址=段地址x10H+偏移地址
16位段地址0000
+16位偏移地址
20位物理地址
例:(DS)=2100H,(BX)=0500H
(PA)=21000H+0500H=21500H
預(yù)備知識(shí)
(如何分配各個(gè)邏輯段)
濯序的指令序列必須安排在代碼段;
濯序使用的堆棧一定在堆棧段;
濯序中的數(shù)據(jù)默認(rèn)是安排在數(shù)據(jù)段,
也經(jīng)常安排在附加段,尤其是串操作的
目的區(qū)必須是附加段。
》數(shù)據(jù)的存放比較靈活,實(shí)際上可以存放在
任何一種邏輯段中。
醞
預(yù)備知識(shí)
段寄存器的使用規(guī)定
訪問存儲(chǔ)器的方式可超越偏移地址
取指令無IP
堆棧操作無SP
一般數(shù)據(jù)訪問CSESSS有效地址EA
有效地址EAI
BP基址的尋址方式CSESDS
串操作的源操作數(shù)CSESSS-
串操作的目的操作數(shù)無DI
預(yù)備知識(shí)
(存儲(chǔ)器—)存儲(chǔ)單元的內(nèi)容
小端方式:“低對(duì)低、高對(duì)高”的存儲(chǔ)形式
?一個(gè)字要占用相繼的兩個(gè)字節(jié)
?低位字節(jié)存入低地址,高位字節(jié)存入高地址
?字單元地址用它的低地址來表示
?機(jī)器以偶地址訪問(讀/寫)存儲(chǔ)器
?存儲(chǔ)單元的內(nèi)容:一個(gè)存儲(chǔ)單元中存放的信息。
?存儲(chǔ)單元的內(nèi)容可以重復(fù)取出,直到存入新的信息;
?同一地址既可看成字節(jié)單元的內(nèi)容,又可看成字(雙字)
單元的內(nèi)容。
預(yù)備知識(shí)
存儲(chǔ)器存儲(chǔ)單元的內(nèi)容的表示
地址
1001111110000H
0010011010001H
0100100010002H
1000001110003H
0101110010004H
1010001010005H浦訪問兩次內(nèi)存
字節(jié)內(nèi)容(10000H)=9FH;(10001H)=^6H
字內(nèi)容(10000H)=269FH;(10001H)=4826H
雙字內(nèi)容(10000H)=8348269FH
指令系統(tǒng)
?指令的一般格式
/
[標(biāo)號(hào):]操作碼[操作數(shù)][;注釋]
\________________________________________________________________________________________________________________
標(biāo)號(hào):給指令所在的地址取名字。
注釋:說明程序,匯編程序不對(duì)它作任何處理。
操作碼:指計(jì)算機(jī)所要執(zhí)行的操作,是一種助記符。
操作數(shù):指出在指令執(zhí)行過程中所需要的操作數(shù),即指出
操作數(shù)存放于何處一一CPU內(nèi)部的寄存器或內(nèi)存儲(chǔ)器。
?該字段可以是操作數(shù)本身外,也可以是操作數(shù)地址或
是地址的一部分,還可以是其它有關(guān)操作數(shù)的信息。
?操作數(shù)通常為是0個(gè)-一兩個(gè)。
?8086指令系統(tǒng)的指令大多數(shù)是雙操作數(shù)指令。
]教學(xué)進(jìn)程
指令系統(tǒng)
?8086指令系統(tǒng)的指令大多數(shù)是雙操作數(shù)指令。
雙操作數(shù)指令格式:操作碼目的操作數(shù),源操作數(shù)
其中:①源操作數(shù):直接給出參加指令操作的操作數(shù)本
身,或指出操作數(shù)放在什么地方;
②目的操作數(shù):指出參加指令操作的操作數(shù)放在何
處,并指出操作結(jié)果送至何處。
③指令執(zhí)行前后,源操作數(shù)不變。
?操作數(shù)的形式(3種)
A立即數(shù):操作數(shù)以常量形式出現(xiàn)(指源操作數(shù))
淆存器操作數(shù):要操作的數(shù)據(jù)存在R中。
訥存操作數(shù):要操作的數(shù)據(jù)存在M中。
4.1尋址方式
(指令的尋址方式)就是尋找操作數(shù)所在地址的方法。
像作數(shù)可能在哪?)
》物理地址
濯輯地址:[段地址:段內(nèi)偏移量]
BVJ
1='址方式:或者是尋找操作數(shù)有效地址(EA)的方法。
(有效地址(EA)的構(gòu)成)
①位移量:disp8位或disp16位不同的組合方式
②基址寄存器:存放在BX或BP中的內(nèi)容
③變址寄存器:存放在SI或DI中的內(nèi)容不同的尋址方式
]教學(xué)進(jìn)程
4.1.1與數(shù)據(jù)有關(guān)的尋址方式(7種)
?11.立即尋址一一指令中直接給出操作數(shù)
例如m(MOVAL,34H)
指令執(zhí)行后,(AL)二34H
例如:(MOVAX,1234H)
指令執(zhí)行后,(AX)=1234示意圖如下:
I?教學(xué)進(jìn)程
4.1.1與數(shù)據(jù)有關(guān)的尋址方式(7種)
?:2.寄存器尋址一一指令中給出存儲(chǔ)操作數(shù)的寄存器號(hào)
即操作數(shù)放在CPU內(nèi)部寄存器AX、BX、CX、DX、
DI、SI、SP和BP中,不需要訪問存儲(chǔ)器。
例如:(MOVAX,BX)
若執(zhí)行前(AX)=1234H,(BX)=56EDH,
則執(zhí)行后(AX)=56EDH,BX內(nèi)容不變。示意圖如下:
AHAL]BHBL
演示1
AX56EDBX56ED
A
操作數(shù)送寄存器AX演示2
??一教學(xué)進(jìn)程
4.1.1與數(shù)據(jù)有關(guān)的尋址方式(7種)
3.直接尋址一一有效地址EA由指令直接給出。
物理地址二(DS)X10H+EA
例如AX,[2000H]二)
默認(rèn)的段寄存器是DS,如(DS)=3000H,
則物理地址PA=3000HX10H+2000H
例如:(MOVAX,ES:[2000H])
物理地址PA=(ES)X10H+2000H
4.L1與數(shù)據(jù)有關(guān)的尋址方式(7種)
3.直接尋址__
例如:(M°VAX,[2000H])如(DS)=3000H,
存儲(chǔ)器低地址
DSL3000xlOH
高地址
演示1演示2
]教學(xué)進(jìn)程
4.1.1與數(shù)據(jù)有關(guān)的尋址方式(7種)
4.寄存器間接尋址
—指令中直接給出操作數(shù)EA;
EA在基址寄存器BP、BX或變址寄存器SI、DI中,
而操作數(shù)則在存儲(chǔ)器中。
7
BX、SI、DI作間址寄存器,指示數(shù)據(jù)段中的數(shù)據(jù);
BP作間址寄存器,則指示的是堆棧段中的數(shù)據(jù)。
例如:(MOVAX,[BX]篇(DS)=3000H,(BX)=2000H
貝UEA=(BX)=2000H
物理地址PA=30000H+2000H
執(zhí)行情況如圖
(AX)=(21000H)=50A0H
]教學(xué)進(jìn)程
4.L1與數(shù)據(jù)有關(guān)的尋址方式(7種)
?|4.寄存器間接尋址
例如《MOVAX,[BX])
執(zhí)行情況如圖
DS|3000xlOH存儲(chǔ)器
低地址
+BXI2000I
32000?操作碼代
操作碼看
段
AHAL
IVIII
演示1AX123432000皿
]數(shù)
?--------/J34H據(jù)
操作數(shù)送寄存器AX12段
演示2
、高地址
]教學(xué)進(jìn)程
4.1.1與數(shù)據(jù)有關(guān)的尋址方式(7種)
5.寄存器相對(duì)尋址
除有段跨越前綴者外
(BX)
*位位移量對(duì)于寄存器為BX、SI、
(BP)
有效地址4+DI的情況下,段寄存器
(SI)16位
用DS;
(DI)
寄存器用BP,則使用SS
例如:(MOVAX,COUNT[SI])
段寄存器的內(nèi)容作為段
或(MOVAX,[COUNT+SI])\地址。
若(DS)=3000H,(SI)=2000H,
C0UNT=3000H
則PA=35000H;
若(35000H)=1234H,則(AX)=1234H
]教學(xué)進(jìn)程
4.1J與數(shù)據(jù)有關(guān)的尋址方式(7種)
■15.寄存器相對(duì)尋址
4.1.1與數(shù)據(jù)有關(guān)的尋址方式(7種)
6.基址變址尋址
|(BX)+(SI)
有效地址=
(BP)(DI)
》使用BX作為基址寄存器,
例如:@0VAX,[BX][SI])
則數(shù)據(jù)默認(rèn)在數(shù)據(jù)段;
如(DS)=2100H
》若使用BP作為基址寄存器,
(BX)=0158H,
則默認(rèn)在堆棧段;
(SI)=1200H,沈許使用段跨越前綴
則PA=22358H;
若(22358H)=1234H,
則(AX)=1234H
1教學(xué)進(jìn)程
4.1.1與數(shù)據(jù)有關(guān)的尋址方式(7種)
6.基址變址尋址
操作數(shù)送寄存器AX
演示1演示2高地址
]教學(xué)進(jìn)程
4?1.1與數(shù)據(jù)有關(guān)的尋址方式(7種)
?;7.相對(duì)基址變址尋址
I郵)+(SI)*位位移量
有效地址=\+<
(BP)l(DI)I16位
例如:(MOVAX,MASK[BX][SI])
如(DS)=2100H(BX)=0158H,
(SI)=10A5H,MASK=0134H
貝!)PA=2148CH;
若(2148CH)=5678H
則(AX)=5678H
4.1.1與數(shù)據(jù)有關(guān)的尋址方式(7種)
7.相對(duì)基址變址尋址
例如:OVAX,
MASK[BXHSH
演示1
演示2
】教學(xué)進(jìn)程
復(fù)習(xí)提問
1.指出下列各尋址方式所使用的段寄存器
⑴[SI+34H]寄存器相對(duì)尋址
(2)[456H]直接尋址
⑶ESRBP+DI]基址變址尋址
(4)[BX+DI+200H]相對(duì)基址變址尋址
(5)[BP+1234H]寄存器相對(duì)尋址
(6)DS:[BP+345H]寄存器相對(duì)尋址
2.已知寄存器(DS)=1000H,(SS)=2000H,
(BX)=1234H,(DI)=OFFFOH,(BP)=42H,試
分別計(jì)算出下列各操作數(shù)的有效地址和物理地址。
(1)[BX]
(2)[DI+123H]
(3)[BP+DI]
(4)[BX+DI+200H]
(5)[1234H]
4.L2與轉(zhuǎn)移地址有關(guān)的尋址方式
本節(jié)討論的尋址方式是用來確定轉(zhuǎn)移及調(diào)用指令的轉(zhuǎn)向地址。
為了敘述方便,以8086/8088的無條件轉(zhuǎn)移指令為例來說明。
法條件轉(zhuǎn)移指令格式:JMP目—
功能:無條件轉(zhuǎn)移到目標(biāo)處。
噗中的目標(biāo)有各種尋址方式。這些尋址方式可以被分為段內(nèi)
轉(zhuǎn)移和段間轉(zhuǎn)移兩類。
猥內(nèi)轉(zhuǎn)移只影響指令指針I(yè)P值;
懣間轉(zhuǎn)移既要影響IP值,也要影響代碼段寄存器CS的值。
4.1.2與轉(zhuǎn)移地址有關(guān)的尋址方式.
1.段內(nèi)尋址|3
(段內(nèi)直接尋址)
轉(zhuǎn)移地址時(shí),不改變CS值,在當(dāng)前IP上加一個(gè)位移量,
即EA=(IP)+pdisp8
_displ6
該位移量是一個(gè)相對(duì)于指令指針的帶符號(hào)數(shù)。
指令
當(dāng)前IP值一1_轉(zhuǎn)移的目
>標(biāo)地址IP
111
|位移量_r------------
中?教學(xué)進(jìn)程
4.1.2與轉(zhuǎn)移地址有關(guān)的尋址方式
?|1?段內(nèi)尋址
(段內(nèi)直接尋址]
懣?jī)?nèi)近轉(zhuǎn)移:位移量為16位
例如:JMPNEARPTRADDR1
或JMPADDR1
》段內(nèi)短轉(zhuǎn)移:位移量為8位,
例如:JMPSHORTADDR2
在與當(dāng)前16位的IP值相加時(shí),系統(tǒng)自動(dòng)把8位位移量擴(kuò)展成
16位,擴(kuò)展方法是高8位全部用位移量的符號(hào)位值填充。
4.L2與轉(zhuǎn)移地址有關(guān)的尋址方式
■|1.段內(nèi)尋址
(段內(nèi)間接尋址)
----轉(zhuǎn)向的有效地址EA是一個(gè)寄存器或存儲(chǔ)單元的內(nèi)容
有效地址用來取代IP,并CS值不變。
除立即數(shù)以外的任何一種
〔數(shù)據(jù)尋址—得到
指令I(lǐng)-------
根據(jù)尋址有效地址在/寄存器
方式確定\r-------1
,存儲(chǔ)器單元
4.1.2與轉(zhuǎn)移地址有關(guān)的尋址方式
1I.段內(nèi)尋址
(段內(nèi)間接尋址)
例如:若(BX)=1256H,(DS)=2000H,
TABLE=2012H,(23268H)=3476H,
則:QMPBX)段內(nèi)間接轉(zhuǎn)移,
執(zhí)行后(IP)=EA=(BX)=1256H
gWORDPTR[BX+TABLEF^)
執(zhí)行后,EA=(BX)+disp=3268H
4.L2與轉(zhuǎn)移地址有關(guān)的尋址方式
?2.段間尋址
(段間直接尋址)
——指令中提供了轉(zhuǎn)向的段地址和偏移地址,
故用段地址取代CS,用偏移地址取代IP
例如:JMP3500H:120BH;
則(CS)=3500H,(IP)=120BH
指令
段地址|偏移地址------;IP|
—4,
____________________;CS|
j教學(xué)進(jìn)程
4.1.2與轉(zhuǎn)移地址有關(guān)的尋址方式
?2.段間尋址
(段間間接尋址)
-用存儲(chǔ)器中兩個(gè)相繼字的內(nèi)容取代IP和CS,
低地址中內(nèi)容送IP,高地址中內(nèi)容送CS。
存儲(chǔ)器連
續(xù)4個(gè)單元
】教學(xué)進(jìn)程
4.2指令系統(tǒng)
?8086指令系統(tǒng)按功能可分為6大類:
中數(shù)據(jù)傳送指令
算術(shù)運(yùn)算指令
邏輯指令
串處理指令
控制轉(zhuǎn)移指令
處理機(jī)控制指令
421數(shù)據(jù)傳送指令
?1.通用數(shù)據(jù)傳送指令
((1)數(shù)據(jù)傳送MOV指令)
?指令格式:MOVDST,SRC;
?指令功能:將數(shù)據(jù)從源地址傳送到目的地址,具有“復(fù)制”
性質(zhì);DST.SRC分別為目的操作數(shù)和源操作數(shù).
例如:MOVAX,1234H
MOVAL,CL
寸主意------------------------------------------
>?。?)MOV指令源、目標(biāo)操作數(shù)長(zhǎng)度必須一致,
2)目的操作數(shù)DST不能為立即數(shù);
3)DST、SRC不能同時(shí)為段R,也不能同時(shí)為M單元;
4)不能使用此指令為CS及IP賦值;
5)MOV指令不影響標(biāo)志位寄存器PSW的值。
IJ
二]教學(xué)進(jìn)程
MOV指令傳送功能
MOVDST,SRC
存
儲(chǔ)
器
段寄存器
CSDSESSS
MOV也并非任意傳送
教學(xué)進(jìn)程
具體實(shí)現(xiàn)
1)數(shù)據(jù)在CPU內(nèi)部寄存器之間傳送
MOVAL,BL;通用寄存器之間字節(jié)傳送
MOVDI,BX;通用寄存器之間字傳送
MOVDS,AX;通用寄存器傳送到段寄存器
、MOVAX,ES;段寄存器傳送到通用寄存器,
’2)立即數(shù)傳送至CPU內(nèi)部通用寄存器或存儲(chǔ)器中
MOVDL,58;8位立即數(shù)傳送到通用寄存器
MOVBP,016AH;16位立即數(shù)傳送到通用寄存器
MOVBYTEPTR[BX],7BH;8位立即數(shù)傳送到存儲(chǔ)器
MOVWORDPTR[BX],057BH;16位立即數(shù)傳送到存儲(chǔ)徵
一教學(xué)進(jìn)程
具體實(shí)現(xiàn)
MOVCL,[BX+5];字節(jié)傳送
MOVAX,[SI];變址傳送
MOVDS,[BX+SI];基址變址傳送
MOVAX,DATA[BP][SI];相對(duì)基址變址傳送
MOV[DI],BX;將BX內(nèi)容傳送到DI所指位置
MOVBX,DATA1
;將符號(hào)地址DATA1的存儲(chǔ)器內(nèi)容傳送到BX中
——?教學(xué)進(jìn)程
常見錯(cuò)誤
①CS和IP不能作為目的操作數(shù)
MOVCS,AX(X)
MOVIP,AX(X)
②不允許數(shù)據(jù)直接從存儲(chǔ)器傳送到存儲(chǔ)器
如要把DS段內(nèi)偏移地址為ADDR1的存儲(chǔ)單元的內(nèi)
容,傳送至同一段內(nèi)地址為ADDR2的存儲(chǔ)單元中去,
MOVADDR2,ADDR1(X)
MOVAL,ADDR1
MOVADDR2,AL(V)
常見錯(cuò)誤
③立即數(shù)不允許直接送段寄存器,
也不允許在兩個(gè)段寄存器之間直接傳送信息。
MOVDS,5000H(X)
MOVDS,ES(X)
可以用通用寄存器(如AX)為橋梁來實(shí)現(xiàn)傳送o
MOVAX,5000H
MOVDS,AX(V)
?1.通用數(shù)據(jù)傳送指令
>堆棧:在內(nèi)存中開辟的一片數(shù)據(jù)存儲(chǔ)區(qū)
(設(shè)置在堆棧段內(nèi)),
>存儲(chǔ)方式:是一端固定,另一端活動(dòng),即只允許在一端
向該存儲(chǔ)區(qū)存入或取出數(shù)據(jù),數(shù)據(jù)的存取遵循“先進(jìn)后
出”原則。
A從硬件來看,堆棧由一片存儲(chǔ)單元和一個(gè)指示器(即堆
棧指針SP)組成。堆棧的固定端稱棧底(BOTTOM)o
>堆棧指針SP用于指示數(shù)據(jù)進(jìn)棧和出棧時(shí)偏移地址的變化,
SP所指示的最后進(jìn)入數(shù)據(jù)的單元稱棧頂(TOP),堆棧中
所有數(shù)據(jù)的存取都在棧頂進(jìn)行。
?1.通用數(shù)據(jù)傳送指令
AX存儲(chǔ)器
堆
堆
棧
棧
段
段
64XX64
KBxxKB
堆棧底
7
SP=SP-2PUSHAX
教學(xué)進(jìn)程
?L通用數(shù)據(jù)傳送指令
((2)堆棧操作指令)
?壓棧指令格式為:PUSHSRC;(先減后壓)
執(zhí)行的操作:(SP)—(SP)—2
((SP)+1,(SP))—(SRC)
SRC可以是內(nèi)部寄存器、段寄存器、存儲(chǔ)器
?出棧指令格式為:POPDST;(先彈后加)
執(zhí)行的操作:(DST)一((SP)+1,(SP))
(SP)―(SP)+2;
DST可以是內(nèi)部寄存器、段寄存器(CS除外)、存儲(chǔ)器。
?1.通用數(shù)據(jù)傳送指令
((2)堆棧操作指令)
注意
人力堆棧指令必須是16位雙字節(jié)數(shù),
即每進(jìn)行一次PUSH操作,SP減2;
每進(jìn)行一次POP操作SP加2;
2)目的操作數(shù)DST,與原操作數(shù)SRC都不能為立即數(shù);
3)DST不能為代碼段寄存器CS;
堆棧指令不影響標(biāo)志位寄存器FR的值。
例:PUSH1234Hx不能用立即尋址方式
POPCSxDST不能是CS
】教學(xué)進(jìn)程
?1.通用數(shù)據(jù)傳送指令
((3)交換指令XCHG)
?指令格式:XCHG0PR1,0PR2;
執(zhí)行操作:0PR1-0PR2;
?指令功能:將一個(gè)字節(jié)或一個(gè)字的源操作數(shù)和
目的操作數(shù)相交換;
...........-------------------
1)兩個(gè)操作數(shù)必須有一個(gè)在寄存器中;
2)兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器;
XCHG指令不影響FR的值。,
?交換可在reg之間、reg與mem之間進(jìn)行??梢允亲止?jié)交
換,也可以是字交換。段寄存器內(nèi)容不能交換。
]教學(xué)進(jìn)程
?L通用數(shù)據(jù)傳送指令
例:實(shí)現(xiàn)兩個(gè)字型存儲(chǔ)器操作數(shù)BUF1及BUF2的交換
方法1:利用寄存器方法1:利用堆棧
MOVAX,BUF1PUSHBUF1
XCHGAX,BUF2PUSHBUF2
MOVBUF1,AXPOPBUF1
POPBUF2
例:寄存器間交換
MOVAX,1234H;AX=1234H
MOVBX,5678H;BX=5678H
XCHGAX,BX;AX=5678H,BX=1234H
XCHGAH,AL;AX=7856H
?1.通用數(shù)據(jù)傳送指令
((4)查表轉(zhuǎn)換指令XLAT)
?指令格式:XLAT或XLATOPR
執(zhí)行操作:AL^[DSX16+BX+AL]
在數(shù)據(jù)段建立一個(gè)字節(jié)表格,把表格的首地址送BX,
A位移量送AL;
?把要翻譯的內(nèi)容送AL
?指令功能:完成字節(jié)翻譯功能(把存儲(chǔ)區(qū)域內(nèi)某個(gè)連續(xù)區(qū)域
指定的內(nèi)容送到寄存器AL),通常用于編寫查表程序。
注意
%XLAT指令不影響標(biāo)志位寄存器FR的值;
2)表格長(zhǎng)度不超過256個(gè)字節(jié)。
v______________________________________/
表格首地址
TABLE例:求某數(shù)的平方
查表步驟:
(DS)=1000①在內(nèi)存中建立數(shù)據(jù)表格;
10040H00②將表格的首地址送入BX中;
10041HoT
③假定要求“3”的平方,將3送入
10042H04
寄存器AL中;
10043H09
④執(zhí)行指令XLAT;
10044H16
10045H25⑤執(zhí)行:AL—[DSX16+BX+3]
執(zhí)行結(jié)束:AL=9o
MMOVBX,0040H
MMOVAL,3
XIXLAT
?2.標(biāo)志傳送指令
:1)LAHF指令)
?指令格式:LAHF
執(zhí)行操作:(AH)一(FR低8位)
?指令功能:把標(biāo)志寄存器的低8位送入寄存器AH:
(SF/ZF/AF/PF/CF狀態(tài))
不影響標(biāo)志位寄存器FR的值
,2)SAHF指令)
?指令格式:SAHF
執(zhí)行操作:(FR低8位)一(AH)
?指令功能:(與LAHF指令執(zhí)行相反的操作)
AH的第0、2、4、6、7位分別傳送至FR的相應(yīng)位中。
影響標(biāo)志位寄存器FR的值
?2.標(biāo)志傳送指令
((3)PUSHF指令
?指令格式:PUSHF
?指令功能:把標(biāo)志寄存器FR的內(nèi)容壓棧;
執(zhí)行操作:(SP)―(SP-2);
(SP)一(FR低8位);
(SP+1)-(FR高8位);
((4)POPF指令)
?指令功能:與PUSHF指令執(zhí)行相反的操作,將堆棧棧頂
兩個(gè)單元的內(nèi)容彈出至FR。
?指令格式:POPF
執(zhí)行操作:(FR低8位)-(SP);
(FR高8位)—(SP+1);
(SP)―(SP+2);
PUSHF和POPF是成對(duì)出現(xiàn),用于保護(hù)和修改FR
】教學(xué)進(jìn)程
例:子程序應(yīng)用
進(jìn)入子程序
pushax、
pushbx
進(jìn)入子程序首先保護(hù)現(xiàn)場(chǎng)
pushex
pushfJ
子程序內(nèi)容
popf
popex
從子程序返回前恢復(fù)現(xiàn)場(chǎng)
popbx
popax
返回
?3.地址傳送指令
((1)LEA有效地址送寄存器)
?指令功能:將源操作數(shù)的偏移地址傳送給16位寄存器;
?指令格式:LEAREG,SRC;
執(zhí)行操作:(REG)—SRC的EA
((2)LDS指針?biāo)图拇嫫骱虳S)
?指令功能:將源操作數(shù)傳送至一對(duì)目標(biāo)寄存器;
?指令格式:LDSREG,SRC;
執(zhí)行操作:(REG)—(SRC)
(DS)-(SRC+2);
j教學(xué)進(jìn)程
?3.地址傳送指令
((3)LES指針?biāo)图拇嫫骱虴S「
?指令功能:除地址指針的段地址送ES外,其他與LDS類似;
?指令格式:LESREG,SRC;
執(zhí)行操作:(REG)—SRC;
,(ES)-(SRC+2);
注意工
1)目的操作數(shù)16位通用寄存器(REG)不能使用段寄存器;
2)源操作數(shù)SRC只能使用存儲(chǔ)器尋址方式來確定地址;
3)地址傳送指令不影響標(biāo)志位寄存器FR的值
】教學(xué)進(jìn)程
例:LEABX,[BX+SI+0F62H]
LDSSI,[10H]
LESDI,[BX]
MOVBX,TABLE;(BX)=0040H
TABLE
(DS):1000H40HMOVBX,OFFSETTABLE;(BX)=1000H
OOH
LEABX,TABLE;(BX)=1000H
OOH
30HLDSBX,TABLE;(BX)=0040H
;(DS)=3000H
LESBX,TABLE;(BX)=0040H
注意:*不影響標(biāo)志位;(ES)=3000H
*REG不能是段寄存器
*SRC必須為存儲(chǔ)器尋址方式
?——」=教學(xué)進(jìn)程
4.2.2算術(shù)運(yùn)算指令
?運(yùn)算的操作數(shù)允許是字節(jié)或字;
?可以是有符號(hào)數(shù),也可以是無符號(hào)數(shù)。
?指令中有單操作數(shù)指令,也有雙操作數(shù)指令。
■指令格式:.、
(1)雙操作數(shù)指令:(指令助記符DST,SRC)
DST可以是reg、mem,
SRC可以是data、reg、mem。
(2)單操作數(shù)指令:(指令助記符DST)
DST可以是reg、mem。
422算術(shù)運(yùn)算指令
?1.加法指令
((D加法指令A(yù)DD)
?指令格式:ADDDST,SRC;
執(zhí)行操作:(DST)—(SRC)+(DST)
((2)帶進(jìn)位加法指令A(yù)DC)
?指令格式:ADCDST,SRC;
執(zhí)行操作:(DST)—(SRC)+(DST)+CF
運(yùn)算結(jié)果影響的:CF、DF、PF、SF、ZF和AF
ADC指令主要與ADD配合,實(shí)現(xiàn)多精度加法運(yùn)算
422算術(shù)運(yùn)算指令
?1.加法指令
A
注意:ADD和ADC影響標(biāo)志位:
1結(jié)果為負(fù)1和的最高有效位有向高位的進(jìn)位
CF=
,0否則0否則
1結(jié)果為01同號(hào)相同,結(jié)果相異
ZF=0F=
0否則.0否則
CF位表示無符號(hào)數(shù)相加的溢出。
OF位表示帶符號(hào)數(shù)相加的溢出。
例:n=8bit帶符號(hào)數(shù)(?128?127),無符號(hào)數(shù)(0-255)
0000010010000111
+00001011+11<1―10101
00001111101111100
I帶:(+4)+(+11)=+15OF=0帶:(-121)+(-11)=+124OF=1
1無:4+11=15CF=0無:135+245=124CF=1
帶符號(hào)數(shù)和無符號(hào)數(shù)都不溢出帶符號(hào)數(shù)和無符號(hào)數(shù)都溢出
0000011100001001
+11111011+01111100
10000001010000101
I帶:(+7)+(-5)=+2OF=0帶:(+9)+(+124)=-123OF=1
|無:7+251=2CF=1無:9+124=133CF=0
無符號(hào)數(shù)溢出帶符號(hào)數(shù)溢出
[例]雙精度數(shù)加法計(jì)算
已知:⑴OF365H
(DX)=0002H(AX)=0F365H+8100H
(BX)=0005H(CX)=8100H
指令序列ADDAX,CX;(1)(AX)7465(CF=1)
ADCDX,BX;(2)
(1)執(zhí)行后(2)0002H
(AX)=7465H0005H
+1
CF=10F=1SF=OZF=O
(DX)0008H
(2)執(zhí)行后
(DX)=0008H
CF=OOF=0SF=OZF=O
((3)加1指令I(lǐng)NC)
?指令格式:INCOPR
亍操作:(OPR)—(OPR)+1
注意
影響的標(biāo)志位:AF、OF、PF、SF和ZF,
/對(duì)CF沒有影響。
主要用于在循環(huán)程序中修改地址指針和循環(huán)次數(shù)等。
【例】
INCAL
INCBYTEPTR[BX]
INCWORDPTR[BX]
?2.減法指令
(fl)減法SUB指令)
?指令格式:SUBDST,SRC
執(zhí)行操作:(DST)—(DST)一(SRC)
說明:對(duì)標(biāo)志位AF、CF、OF、PF、SF和ZF有影響。
《2)帶借位減法指令SBB)
?指令格式:SBBDST,SRC
執(zhí)行操作:(DST)—(DST)-(SRC)-CF
說明:對(duì)標(biāo)志位的影響與SUB相同。
?3)次指令DEC)
?指令格式:DECOPR
執(zhí)行操作:(OPR)—(OPR)-1
說明:影響AF、OF、PF、SF和ZF,對(duì)CF沒有影響。
?2.減法指令
((4)求補(bǔ)指令NEG)
?指令格式:NEGOPR
/執(zhí)行操作:(OPR)-—(OPR)
淫意
NEG指令對(duì)標(biāo)志位的有影響,尤注意CF以及OF位;
[0操作數(shù)為0[1操作數(shù)為?128(字節(jié)運(yùn)算)或
CF=OF=操作數(shù)為?32768(字運(yùn)算)
1否則I。否則
說明:
①若操作數(shù)為80H(—128)或?yàn)?000H(—32768),
則求補(bǔ)后操作數(shù)沒變化,但標(biāo)志OF置1。
②此指令雖然不影響CF標(biāo)志位,但一般總是使標(biāo)志CF=1。
除非在操作數(shù)為零時(shí),才使CF=0。
?2.減法指令
((5)比較指令CMP)
?指令格式:CMPOPRI,0PR2
執(zhí)行操作:(0PR1)一(0PR2)
L-------------------------------------
注意目的操作數(shù)減源操作數(shù),結(jié)果只影響標(biāo)志位,
不送入目的地址。
對(duì)于無符號(hào)數(shù),若CF=O,貝!)0PR1>0PR2;
若為有符號(hào)數(shù),貝!JOF十SF=O時(shí)0PR1>0PR2。
k__________________________________________
[例]X、V、Z均為雙精度數(shù),分別存放在地址為X,X+2;
Y,Y+2;Z,Z+2的存儲(chǔ)單元中,用指令序列實(shí)現(xiàn):
w―x+y+24-z,并用W,W+2單元存放w
MOVAX,X
MOVDX,X+2
ADDAX,Y
ADCDX,Y+2;x+y
ADDAX,24
ADCDX,0;x+y+24
SUBAX,Z
SBBDX,Z+2;x+y+24-z
MOVW,AX
MOVW+2,DX;結(jié)果存入W,W+2單元
?3.乘法指令
01)無符號(hào)數(shù)乘法指令MUL)
?指令格式:MULSRC
指令操作:(AX)一(AL)*(SRC);字節(jié)操作數(shù)
(DX,AX)—(AX)*(SRC);字操作數(shù)
((2)帶符號(hào)數(shù)乘法指令I(lǐng)MUL)
?指令格式與操作同MUL指令。
注意了1)乘法指令中源操作數(shù)不能為立即數(shù);
一、*2)AL(AX)為隱含的乘數(shù)寄存器;
3)AX(DX,AX)為隱含的乘積寄存器。
4)乘法指令,影響CF和OF標(biāo)志位;
?3.乘法指令
乘法指令對(duì)CF/OF的影響:
>MUL指令
f00乘積的高一半為零
CFQF=
I11否則
>IMUL指令
00乘積的高一半是低一半的符號(hào)擴(kuò)展
CF,OF=
11否則
?4.除法指令
《1)無符號(hào)數(shù)除法指令DIV)
?指令格式:DIVSRC
?指令操作:
字節(jié)除法:(AX)/(SRC)—>AL(商)、AH(余數(shù))
字除法:(DX,AX)/(SRC)—>AX(商)、DX(余數(shù))
《2)帶符號(hào)數(shù)除法指令I(lǐng)DIV)
?指令I(lǐng)DIV格式與操作同DIV指令。
詐意0除法指令中源操作數(shù)不能為立即數(shù);1
2)AX(DX,AX)為隱含的被除數(shù)寄存器;
3)AL(AX)為隱含的商寄存器;
4)AH(DX)為隱含的余數(shù)寄存器;°
5)除法指令對(duì)所有標(biāo)志位無定義。J1,
?4.除法指令
除法錯(cuò)中斷:
?當(dāng)被除數(shù)遠(yuǎn)大于除數(shù)時(shí),所得的商有可能超出它所能表
達(dá)的范圍。如果存放商的寄存器AL/AX不能表達(dá),便產(chǎn)
生溢出;
?8086CPU中就產(chǎn)生編號(hào)為0的內(nèi)部中斷——除法錯(cuò)中斷。
?發(fā)生除法溢出的情況:
A對(duì)DIV指令,除數(shù)為0,或在字節(jié)除時(shí)商超過8位,或
者在字除時(shí)商超過16位。
>對(duì)IDIV指令,除數(shù)為0,或在字節(jié)除時(shí)商不在-128?
127范圍內(nèi),或者在字除時(shí)商不在-32768?32767范圍
內(nèi)。
?5.符號(hào)擴(kuò)展指令
((1)字節(jié)轉(zhuǎn)換為字指令CBW)
?指令功能:ALfAX
?指令格式:CBW
若(AL)的最高有效位為0,貝(!(AH)=00H
若(AL)的最高有效位為1,則(AH戶FFH
((2)字轉(zhuǎn)換為雙字指令CWD)
?指令功能:AXf(DX,AX)
?指令格式:CWD
若(AX)的最高有效位為0,則(DX)=0000H
若(AX)的最高有效位為1,則(DX尸F(xiàn)FFFH
注1)無操作數(shù)指令,隱含對(duì)AL或AX進(jìn)行符號(hào)擴(kuò)展
2)不影響條件標(biāo)志位
?5.符號(hào)擴(kuò)展指令
?符號(hào)擴(kuò)展;指用一個(gè)操作數(shù)的符號(hào)位(即最高位)形成另一
個(gè)操作數(shù)。后一個(gè)操作數(shù)的各位是全0(正數(shù))或全1(負(fù)
數(shù))。
?符號(hào)擴(kuò)展不改變數(shù)據(jù)大小,即將原操作數(shù)的符號(hào)位復(fù)制到擴(kuò)
展后高半部分的各個(gè)位。
映據(jù)64H(表示+100),其最高位D7為0,
符號(hào)擴(kuò)展后:0064H(仍表示數(shù)據(jù)100)
唾據(jù)ffOOH(表示一256),其最高位D15為1,
符號(hào)擴(kuò)展后:ffffffOOH(仍表示有符號(hào)數(shù)一256)
(AX)=0BA45H
CBW;(AX)=0045H
CWD;(DX)=0FFFFH;AX)=0BA45H
[例]xyzv均為16位帶符號(hào)數(shù),計(jì)算(v-(x*y+z-540))lx
MOVAX,X
IMULY;X*Y一(DX,AX)
MOVCX,AX
MOVBX,DX
MOVAX,Z
CWD;Z—(DX,AX)___________
ADDCX,AX
ADCBX,DX;X*Y+Z一(BX,CX)_______
SUBCX,540
SBBBX,0;X*Y+Z-540
MOVAX,V
CWD;V—(DX,AX)
SUBAX,CX
SBBDX,BX;V-(X*Y+Z-540)_____________
IDIVX;(V-(X*Y+Z-540))/X一(AX)
余數(shù)一(DX)
?6.十進(jìn)制調(diào)整指令
(8086提供了6種調(diào)整指令
壓縮BCD碼調(diào)整指令
加法十進(jìn)制調(diào)整指令DAA
減法十進(jìn)制調(diào)整指令DAS
非壓縮BCD碼調(diào)整指令
加法的ASCH調(diào)整指令A(yù)AA
減法ASCH調(diào)整指令A(yù)AS
乘法的ASCH碼調(diào)整指令A(yù)AM
除法的ASCH碼調(diào)整指令A(yù)AD
?6.十進(jìn)制調(diào)整指令
>十進(jìn)制數(shù)調(diào)整指令對(duì)二進(jìn)制運(yùn)算的結(jié)果進(jìn)行十進(jìn)制調(diào)整,
以得到十進(jìn)制的運(yùn)算結(jié)果;
>分成壓縮BCD碼和非壓縮BCD碼調(diào)整;
>8086支持壓縮BCD碼和非壓縮BCD碼的調(diào)整運(yùn)算
□壓縮BCD碼就是通?!醴菈嚎sBCD碼用8個(gè)二
的8421碼;它用4個(gè)進(jìn)制位表示一個(gè)十進(jìn)
二進(jìn)制位表示一個(gè)十制位,只用低4個(gè)二進(jìn)
進(jìn)制位,一個(gè)字節(jié)可制位表示一個(gè)十進(jìn)制
以表示兩個(gè)十進(jìn)制位,位。?9,高4位任意,
即00?99通常默認(rèn)為0
?6?十進(jìn)制調(diào)整指令
壓縮BCD碼加減調(diào)整指令
(ADDAL,i8/r8/m8)(SUBAL,i8/r8/m8)
(ADCAL,i8/r8/m8)(SBBAL,i8/r8/m8)
DAA說明DAS說明
;AL一將AL的加和調(diào)整為;AL一將AL的減差調(diào)整為
壓縮BCD碼壓縮BCD碼
例題1例題2
?使用DAA或DAS指令前,應(yīng)先執(zhí)行以AL為目的操作數(shù)的加
法或減法指令;
?DAA和DAS指令對(duì)OF標(biāo)志無定義,按結(jié)果影響其他標(biāo)志,
例如CF反映壓縮BCD碼相加或減的進(jìn)位或借位狀態(tài)。
★
?6?十進(jìn)制調(diào)整指令壓縮BCD碼加減調(diào)整指令
(加法十進(jìn)制調(diào)整指令DAA)
?調(diào)整操作(系統(tǒng)自動(dòng)執(zhí)行):
月I口果AL中低4位大于9或輔助進(jìn)位(AF)=1,
則(AL)=(AL)+6且(AF)=1;
成I果AL高4位大于9或(CF)=1,
貝(I(AL)=(AL)+60H
且(CF)=1O同時(shí),SF、ZF、PF均有影響。
?標(biāo)志:AF、CF按以上情況設(shè)置;
SF、ZF、PF按結(jié)果設(shè)置;
OF位不確定。
例1:壓縮BCD碼加
MOVAL,68H;(AL)=68H,表示壓縮BCD碼68
MOVBL,48H;(BL)=48H,表示壓縮BCD碼48
ADDAL,BL;二進(jìn)制加法:(AL)=68H+48H=B0H
DAA;十進(jìn)制調(diào)整:(AL)=16H
68H
+48H
BOH(AF=1)
+06H
B6H
+60H
AL=16H(CF=1)
實(shí)現(xiàn)壓縮BCD碼力口法:68+48=16H
?6.十進(jìn)制調(diào)整指令壓縮BCD碼加減調(diào)整指令
減法十進(jìn)制調(diào)整指令DAS
?調(diào)整操作(系統(tǒng)自動(dòng)執(zhí)行):
械口果AL中低4位大于9或(AF)=1,
則(AL)=(AL)一6且(AF)=1;
械口果AL中高4位大于9或(CF)=1,
貝(I(AL)=(AL)-60H
且(CF)=1o同時(shí)SF、ZF、PF均受影響。
?標(biāo)志:AF、CF按以上情況設(shè)置;
SF、ZF、PF按結(jié)果設(shè)置;
OF位不確定。
?1.邏輯運(yùn)算指令
((1)邏輯非指令NOT)
?指令功能:將OPR內(nèi)容按位取反并送回
?指令格式:NOTOPR
?指令操作:(OPR)--I(OPR)
12)邏輯與指令A(yù)ND)
?指令功能:兩個(gè)操作數(shù)按位邏輯與運(yùn)算,結(jié)果送目的操作數(shù)
?指令格式:ANDDST,SRC
?指令操作:(DST)—(DST)A(SRC)
?運(yùn)算法則:(全1為1,有0出0)
1A1=1,1A0=0,0A1=0,0A0=0o
■該指令可以清除目的操作數(shù)中與源操作數(shù)置0的對(duì)應(yīng)位
?1.邏輯運(yùn)算指令
Q3)邏輯或指令OR)
?指令功能:兩個(gè)操作數(shù)按位邏輯或運(yùn)算,結(jié)果送目的操作數(shù)
?指令格式:ORDST,SRC
?指令操作:(DST)—(DST)V(SRC)
■運(yùn)算法則:(全0為0,有1出1)
1V1=1,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣州家庭住宅租賃合同范例
- 臨翔區(qū)商標(biāo)轉(zhuǎn)讓合同范例
- 庫房加固合同范例
- 2024年鄭州客運(yùn)上崗證急救知識(shí)
- 2024年吉林客車駕駛員考試試題加解析
- 廣西南寧市2024-2025學(xué)年七年級(jí)上學(xué)期段考?xì)v史試題
- 玻璃廠采光井施工合同
- 教育設(shè)施建造師聘用合同模板
- 機(jī)械設(shè)備采購?fù)稑?biāo)資料范本一
- 城市綜合體商鋪?zhàn)赓U條款
- 麥爾茲石灰窯介紹及市場(chǎng)前景分析資料
- 小學(xué)英語教師家長(zhǎng)會(huì)
- 安全告知回執(zhí)
- 三年級(jí)奧數(shù)教程
- 城市軌道交通概論P(yáng)PT完整全套教學(xué)課件
- 航空器系統(tǒng)與動(dòng)力裝置學(xué)習(xí)通課后章節(jié)答案期末考試題庫2023年
- 呼吸機(jī)相關(guān)性肺炎診斷、預(yù)防和治療指南(2023年)
- 2023年副主任醫(yī)師(副高)-中醫(yī)骨傷科學(xué)(副高)考試歷年真題摘選帶答案
- 《紅星照耀中國(guó)》PPT只是分享
- 初中英語-Unit5 What are the shirts made of教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 污水處理站安全培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論