![微型計(jì)算機(jī)原理及其接口技術(shù)第三章_第1頁(yè)](http://file4.renrendoc.com/view/deaca7343d42b2a269eede84eb2c3768/deaca7343d42b2a269eede84eb2c37681.gif)
![微型計(jì)算機(jī)原理及其接口技術(shù)第三章_第2頁(yè)](http://file4.renrendoc.com/view/deaca7343d42b2a269eede84eb2c3768/deaca7343d42b2a269eede84eb2c37682.gif)
![微型計(jì)算機(jī)原理及其接口技術(shù)第三章_第3頁(yè)](http://file4.renrendoc.com/view/deaca7343d42b2a269eede84eb2c3768/deaca7343d42b2a269eede84eb2c37683.gif)
![微型計(jì)算機(jī)原理及其接口技術(shù)第三章_第4頁(yè)](http://file4.renrendoc.com/view/deaca7343d42b2a269eede84eb2c3768/deaca7343d42b2a269eede84eb2c37684.gif)
![微型計(jì)算機(jī)原理及其接口技術(shù)第三章_第5頁(yè)](http://file4.renrendoc.com/view/deaca7343d42b2a269eede84eb2c3768/deaca7343d42b2a269eede84eb2c37685.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
微型計(jì)算機(jī)原理及其接口技術(shù)第三章1第一頁(yè),共一百八十七頁(yè),2022年,8月28日主要內(nèi)容:指令系統(tǒng)的一般概念對(duì)操作數(shù)的尋址方式六大類指令的操作原理:
操作碼的含義指令對(duì)操作數(shù)的要求指令執(zhí)行的結(jié)果2第二頁(yè),共一百八十七頁(yè),2022年,8月28日3.1概述指令——控制計(jì)算機(jī)完成指定操作的命令機(jī)器指令——指令的二進(jìn)制代碼形式。例如:CD21H匯編指令——助記符形式的指令。例如:INT21H指令系統(tǒng)——CPU所有指令及其使用規(guī)則的集合8088/8086指令系統(tǒng):(1)指令向后兼容(x86系列)(2)應(yīng)用廣泛,資料易于尋找3第三頁(yè),共一百八十七頁(yè),2022年,8月28日指令按功能分為六大類(92種)(1)數(shù)據(jù)傳送類;(2)算術(shù)運(yùn)算類;(3)邏輯運(yùn)算和移位;(4)串操作;(5)控制轉(zhuǎn)移類;(6)處理器控制。4第四頁(yè),共一百八十七頁(yè),2022年,8月28日3.1.1
指令的基本構(gòu)成操作碼[操作數(shù)],[操作數(shù)]說明要執(zhí)行的是什么操作操作對(duì)象,可以有0個(gè)、1個(gè)或2個(gè)目的源5第五頁(yè),共一百八十七頁(yè),2022年,8月28日指令舉例:ADDAX,[SI+6]MOVAX,BX操作碼操作數(shù)INC[BX]HLT6第六頁(yè),共一百八十七頁(yè),2022年,8月28日部分8088常用指令指令類型助記符數(shù)據(jù)傳送數(shù)據(jù)傳送MOV,PUSH/POP,XCHG等地址傳送LEA,LDS,LES輸入輸出IN,OUT算術(shù)運(yùn)算加法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/IRET7第七頁(yè),共一百八十七頁(yè),2022年,8月28日8088/8086的操作數(shù)分為3類1、立即數(shù)(常數(shù))取值范圍如下表:立即數(shù)只能用作源操作數(shù),如8位16位無符號(hào)數(shù)00H-FFH(0-255)0000H-FFFFH(0-65535)帶符號(hào)數(shù)80H-7FH(-128~127)8000H-7FFFH(-32768~32767)MOV AX,0FA00H ;正確MOV 8000H,DX ;錯(cuò)誤8第八頁(yè),共一百八十七頁(yè),2022年,8月28日2、寄存器操作數(shù)放在8個(gè)通用寄存器或4個(gè)段寄存器中的操作數(shù)9第九頁(yè),共一百八十七頁(yè),2022年,8月28日只能存放字操作數(shù)段寄存器存放當(dāng)前操作數(shù)的段基地址不允許將立即數(shù)傳送到段寄存器SIDIBPSPCSDSESSS10第十頁(yè),共一百八十七頁(yè),2022年,8月28日3、存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù)字節(jié)字雙字124類型存儲(chǔ)單元個(gè)數(shù)一般不允許兩個(gè)操作數(shù)同時(shí)為存儲(chǔ)器操作數(shù)11第十一頁(yè),共一百八十七頁(yè),2022年,8月28日存儲(chǔ)單元的物理地址=段基地址+偏移地址若指令中沒有指明所涉及的段寄存器,CPU就采用默認(rèn)的段寄存器來確定操作數(shù)所在的段。表3.3段寄存器使用的一些基本約定存儲(chǔ)器操作數(shù)的偏移地址(也稱有效地址)可以通過不同的尋址方式由指令給出。例如,若(BX)=2000H,(SI)=0A00H,(DI)=2A00H,則以下指令的結(jié)果是一樣的:
MOVAL,[2A00H] MOVAL,[BX+0A00H] MOVAL,[BX][SI] MOVAL,[DI]12第十二頁(yè),共一百八十七頁(yè),2022年,8月28日一條指令的執(zhí)行時(shí)間=∑3.1.2
指令的執(zhí)行時(shí)間取指令取操作數(shù)執(zhí)行指令傳送結(jié)果單位用時(shí)鐘周期數(shù)表示表3.4常用指令執(zhí)行時(shí)間結(jié)論:
1)盡量使用寄存器作為操作數(shù)
2)若有可能,用移位代替乘除法
3)盡量使用簡(jiǎn)單的尋址方式13第十三頁(yè),共一百八十七頁(yè),2022年,8月28日尋址方式——尋找操作數(shù)的方法
尋找操作數(shù)的地址(一般指源操作數(shù))
尋找要執(zhí)行的下一條指令的地址在8086指令系統(tǒng)中,說明操作數(shù)所在地址的尋址方式可分為8種:
①立即尋址⑤寄存器相對(duì)尋址
②直接尋址⑥基址-變址尋址
③寄存器尋址⑦相對(duì)的基址-變址尋址
④寄存器間接尋址⑧隱含尋址3.2
8086的尋址方式14第十四頁(yè),共一百八十七頁(yè),2022年,8月28日
操作數(shù)(為一常數(shù))直接由指令給出
(此操作數(shù)稱為立即數(shù))
立即尋址只能用于源操作數(shù)例:
MOVAX,1C8FHMOVBYTEPTR[2A00H],8FH
錯(cuò)誤例:
×
MOV2A00H,AX;錯(cuò)誤!
3.1.2
立即尋址15第十五頁(yè),共一百八十七頁(yè),2022年,8月28日立即數(shù)操作碼低8位高8位存儲(chǔ)器MOV操作碼02H31HAHAL代碼段代碼段立即尋址指令在存儲(chǔ)器中的存放形式AX指令操作例:MOVAX,3102H;AX3102H
執(zhí)行后,(AH)=31H,(AL)=02H16第十六頁(yè),共一百八十七頁(yè),2022年,8月28日3.2.2
直接尋址
指令中直接給出操作數(shù)的16位偏移地址
偏移地址也稱為有效地址(EA,EffectiveAddress)
默認(rèn)的段寄存器為DS,但也可以顯式地指定其他段寄存器——稱為段超越前綴偏移地址也可用符號(hào)地址來表示,如ADDR、VAR
例:
MOVAX,[2A00H]MOVDX,ES:[2A00H]MOVSI,TABLE_PTR17第十七頁(yè),共一百八十七頁(yè),2022年,8月28日指令操作例:MOVAX,[3102H]AL(3102H),AH(3103H)如果(DS)=2000H,(23012H)=CDH,(23013H)=ABH則操作數(shù)的物理地址為:
20000H+3102H=23102H指令執(zhí)行后:(AX)=ABCDHMOV操作碼02H31HAHAL23102HCDHABH存儲(chǔ)器代碼段數(shù)據(jù)段..18第十八頁(yè),共一百八十七頁(yè),2022年,8月28日3.2.3
寄存器尋址
操作數(shù)放在某個(gè)寄存器中源操作數(shù)與目的操作數(shù)字長(zhǎng)要相同寄存器尋址與段地址無關(guān)例:
MOVAX,BXMOV[3F00H],AXMOVCL,AL
錯(cuò)誤例:
×
MOVAX,BL;字長(zhǎng)不同
×MOVES:AX,DX;寄存器與段無關(guān)19第十九頁(yè),共一百八十七頁(yè),2022年,8月28日AXSI2233H2233H指令操作例:MOVSI,AX;SI(AX)
指令執(zhí)行前:(AX)=2233H
指令執(zhí)行后:(AX)=2233H,(SI)=2233H20第二十頁(yè),共一百八十七頁(yè),2022年,8月28日3.2.4
寄存器間接尋址
操作數(shù)的偏移地址(有效地址EA)放在寄存器中
只有SI、DI、BX和BP可作間址寄存器
例:MOVAX,[BX]MOVCL,CS:[DI]
錯(cuò)誤例:
×MOVAX,[DX]×
MOVCL,[AX]EA=(BX)(BP)(SI)(DI)21第二十一頁(yè),共一百八十七頁(yè),2022年,8月28日指令操作例:MOVAX,[SI]若(DS)=6000H,
(SI)=1200H,(61200H)=44H,(61201H)=33H則指令執(zhí)行后,(AX)=3344H。44H33H60001200DSSI6000061200
61200HAX存儲(chǔ)器數(shù)據(jù)段
+)120044H33H22第二十二頁(yè),共一百八十七頁(yè),2022年,8月28日3.2.5
寄存器相對(duì)尋址EA=間址寄存器的內(nèi)容加上一個(gè)8/16位的位移量寄存器相對(duì)尋址常用于存取表格或一維數(shù)組中的元素——把表格的起始地址作為位移量,元素的下標(biāo)值放在間址寄存器中(或反之)EA=(BX)(BP)(SI)(DI)+8位16位位移量
23第二十三頁(yè),共一百八十七頁(yè),2022年,8月28日
例:MOVAX,[BX+8]MOVCX,TABLE[SI]MOVAX,[BP+1000H];
默認(rèn)段寄存器為SS
指令操作例:MOVAX,DATA[BX]
若(DS)=6000H,(BX)=1000H,DATA=2A00H,(63A00H)=66H,(63A01H)=55H
則物理地址=60000H+1000H+2A00H=63A00H
指令執(zhí)行后:(AX)=5566H(見下頁(yè)圖示)24第二十四頁(yè),共一百八十七頁(yè),2022年,8月28日操作碼00偏移量低2A偏移量高DS6000BX1000+DATA2A0063A0063A00HAHALAX代碼段數(shù)據(jù)段.........66H55HMOVAX,DATA[BX]25第二十五頁(yè),共一百八十七頁(yè),2022年,8月28日3.2.6
基址-變址尋址
若操作數(shù)的偏移地址:由基址寄存器(BX或BP)給出——
基址尋址方式由變址寄存器(SI或DI)給出——
變址尋址方式
由一個(gè)基址寄存器的內(nèi)容和一個(gè)變址寄存器的內(nèi)容相加而形成操作數(shù)的偏移地址,稱為基址-變址尋址。EA=(BX)(BP)+(SI)(DI)
同一組內(nèi)的寄存器不能同時(shí)出現(xiàn)。26第二十六頁(yè),共一百八十七頁(yè),2022年,8月28日例:
MOVAX,[BX][SI]MOVAX,[BX+SI]MOVAX,DS:[BP][DI]錯(cuò)誤例:
×
MOVAX,[BX][BP]
×
MOVAX,[DI][SI]27第二十七頁(yè),共一百八十七頁(yè),2022年,8月28日83000操作碼DS
8000BX
2000+SI
100083000HAHALAX代碼段數(shù)據(jù)段.........YYXX指令操作例:MOVAX,[BX][SI]假定:(DS)=8000H,(BX)=2000H,SI=1000H則物理地址=80000H+2000H+1000H=83000H指令執(zhí)行后:(AL)=[83000H](AH)=[83001H]28第二十八頁(yè),共一百八十七頁(yè),2022年,8月28日3.2.7相對(duì)的基址-變址尋址
在基址-變址尋址的基礎(chǔ)上再加上一個(gè)相對(duì)位移量
注意事項(xiàng)同基址-變址尋址EA=(BX)(BP)+(SI)(DI)+8位16位位移量
例:MOVAX,BASE[SI][BX]MOVAX,[BX+BASE][SI]MOVAX,[BX+SI+BASE]MOVAX,[BX]BASE[SI]MOVAX,[BX+SI]BASE29第二十九頁(yè),共一百八十七頁(yè),2022年,8月28日指令操作例:MOVAX,DATA[DI][BX]若(DS)=8000H,(BX)=2000H,(DI)=1000H,DATA=200H則指令執(zhí)行后(AH)=[83021H],(AL)=[83020H]8320083200HAHALAX+DATA0200操作碼代碼段數(shù)據(jù)段.........YYXXDS
8000BX
2000
DI
100030第三十頁(yè),共一百八十七頁(yè),2022年,8月28日使用相對(duì)的基址-變址尋址方式可以很方便地訪問二維數(shù)組?;芳拇嫫鲾?shù)組首地址變址寄存器數(shù)組元素行址位移量數(shù)組元素列址(偏移地址)二維數(shù)組例:內(nèi)存圖示(按行存儲(chǔ))(行位移地址)(行內(nèi)元素下標(biāo))183252409A=31第三十一頁(yè),共一百八十七頁(yè),2022年,8月28日3.2.8
隱含尋址
指令操作數(shù)是隱含的,在指令中未顯式地指明。例:MULBL
指令隱含了被乘數(shù)AL及乘積AX
類似的指令還有:DIV、CBW、MOVS等(AL)×(BL)→AX32第三十二頁(yè),共一百八十七頁(yè),2022年,8月28日小結(jié)指令由(
)和(
)構(gòu)成如何取得操作數(shù)——稱為(
)操作碼操作數(shù)尋址方式33第三十三頁(yè),共一百八十七頁(yè),2022年,8月28日尋址方式可分為立即尋址直接尋址寄存器相對(duì)尋址寄存器尋址基址-變址尋址基址-變址相對(duì)尋址寄存器間接尋址34第三十四頁(yè),共一百八十七頁(yè),2022年,8月28日寄存器間接、寄存器相對(duì)、基址變址、相對(duì)基址變址四種尋址方式的比較:
尋址方式指令操作數(shù)形式
寄存器間接只有一個(gè)寄存器(BX/BP/SI/DI之一)寄存器相對(duì)一個(gè)寄存器加上位移量基址—變址兩個(gè)不同類別的寄存器相對(duì)基址-變址兩個(gè)不同類別的寄存器加上位移量35第三十五頁(yè),共一百八十七頁(yè),2022年,8月28日3.38086/8088指令系統(tǒng)可分成如下6類:數(shù)據(jù)傳送指令算術(shù)運(yùn)算指令邏輯運(yùn)算和移位指令串操作指令程序控制指令處理器控制指令36第三十六頁(yè),共一百八十七頁(yè),2022年,8月28日3.3.1數(shù)據(jù)傳送指令
可實(shí)現(xiàn)存儲(chǔ)器寄存器I/O
數(shù)據(jù)傳送指令又可分為如下四種:通用傳送目標(biāo)地址傳送標(biāo)志傳送輸入輸出37第三十七頁(yè),共一百八十七頁(yè),2022年,8月28日1.通用傳送指令(1)
MOVdest,src;dest←src
傳送的是字節(jié)還是字取決于指令中涉及的寄存器是8位還是16位。具體來說可實(shí)現(xiàn):
①M(fèi)OVmem/reg1,mem/reg2
指令中兩操作數(shù)中至少有一個(gè)為寄存器例:MOV CL,DLMOV AX,BX MOV [SI],CX
MOV CL,[BX+5]38第三十八頁(yè),共一百八十七頁(yè),2022年,8月28日②MOVreg,data;立即數(shù)送寄存器③MOVmem,data;立即數(shù)送存儲(chǔ)單元④MOVacc,mem;存儲(chǔ)單元送累加器⑤MOVmem,acc;累加器送存儲(chǔ)單元⑥MOVsegreg,mem/reg;存儲(chǔ)單元/寄存器送段寄存器⑦M(jìn)OVmem/reg,segreg;段寄存器送存儲(chǔ)單元/寄存器39第三十九頁(yè),共一百八十七頁(yè),2022年,8月28日MOV指令使用規(guī)則:1)IP不能作目的寄存器2)不允許mem←mem3)不允許segreg←segreg4)立即數(shù)不允許作為目的操作數(shù)5)不允許segreg←立即數(shù)6)源操作數(shù)與目的操作數(shù)類型要一致40第四十頁(yè),共一百八十七頁(yè),2022年,8月28日幾個(gè)不能傳送的解決辦法:用AX作橋梁
存儲(chǔ)器←存儲(chǔ)器:
MOVAX,MEM1 MOVMEM2,AX段寄存器←段寄存器:
MOVAX,DS MOVES,AX段寄存器←立即數(shù):
MOVAX,DATA MOVDS,AX41第四十一頁(yè),共一百八十七頁(yè),2022年,8月28日應(yīng)用舉例:將1000H開始的100個(gè)存儲(chǔ)單元全部填充為ASCII碼2AH(*)。程序段如下:
MOVDI,1000HMOVCX,64HMOVAL,2AHAGAIN:MOV[DI],ALINCDI
DECCXJNZAGAINHLT42第四十二頁(yè),共一百八十七頁(yè),2022年,8月28日上程序段存放在代碼段中,設(shè)(CS)=109EH,則各條指令存放地址如下:
CS:IP指令109E:0100MOVDI,1000H109E:0103MOVCX,64H109E:0106MOVAL,2AH109E:0108MOV[DI],AL109E:010AINCDI109E:010BDECCX109E:010CJNZ0108109E:010EHLT 109E:011043第四十三頁(yè),共一百八十七頁(yè),2022年,8月28日
寫入2AH(*)后,數(shù)據(jù)段中相應(yīng)存儲(chǔ)單元的內(nèi)容改變?nèi)缦拢篋S:10002A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2ADS:10102A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2ADS:10202A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2ADS:10302A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2ADS:10402A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2ADS:10502A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2ADS:10602A2A2A2A44第四十四頁(yè),共一百八十七頁(yè),2022年,8月28日什么是堆棧?按“后進(jìn)先出(LIFO)”方式工作的存儲(chǔ)區(qū)域。堆棧以字為單位進(jìn)行壓入彈出操作。為什么要設(shè)置堆棧?為什么要按“后進(jìn)先出”方式工作?參見下圖(2)堆棧操作指令45第四十五頁(yè),共一百八十七頁(yè),2022年,8月28日主程序IP繼續(xù)執(zhí)行主程序執(zhí)行子程序轉(zhuǎn)子程序壓棧彈出返回主程序主程序IPIP(下)繼續(xù)執(zhí)行主程序轉(zhuǎn)子程序1返回主程序IP’執(zhí)行子程序2轉(zhuǎn)子程序2返回子程序1IP’(下)執(zhí)行子程序1繼續(xù)執(zhí)行子程序1(a)(b)子程序調(diào)用示意圖(a)主程序調(diào)子程序;(b)子程序嵌套示意圖壓棧彈出IP(下)46第四十六頁(yè),共一百八十七頁(yè),2022年,8月28日規(guī)定由SS指示堆棧段的段基址,堆棧指針SP始終指向堆棧的頂部,SP的初值規(guī)定了所用堆棧區(qū)的大小。堆棧的最高地址叫棧底。SPSS堆棧段進(jìn)棧方向退棧方向棧底棧頂47第四十七頁(yè),共一百八十七頁(yè),2022年,8月28日
①壓棧指令
PUSHsrc ;src為16位操作數(shù)例:PUSH AX ;將AX內(nèi)容壓棧執(zhí)行操作:(SP)-1←高字節(jié)AH
(SP)-2←低字節(jié)AL(SP)←(SP)-248第四十八頁(yè),共一百八十七頁(yè),2022年,8月28日設(shè)(AX)=1020H,執(zhí)行示意圖如圖低地址存儲(chǔ)區(qū)(SS段)執(zhí)行前(AX)=1020(SP)存儲(chǔ)區(qū)(SS段)進(jìn)棧方向執(zhí)行后2010(AL)(AH)2-8PUSHAX指令執(zhí)行示意圖(SP)-2(SP)高地址低地址高地址(SP)-149第四十九頁(yè),共一百八十七頁(yè),2022年,8月28日壓棧指令的格式為:
PUSH regPUSH mem/regPUSH segreg例如:
PUSHAXPUSH[BX]PUSHDS注意進(jìn)棧方向是高地址向低地址發(fā)展。50第五十頁(yè),共一百八十七頁(yè),2022年,8月28日
②彈出指令
POP dest例:POP BX ;將棧頂內(nèi)容彈至BX
執(zhí)行操作:(BL)←(SP)
(BH)←(SP)+1
(SP)←(SP)+251第五十一頁(yè),共一百八十七頁(yè),2022年,8月28日POPBX的執(zhí)行示意圖如下圖所示低地址存儲(chǔ)區(qū)(SS段)出棧方向執(zhí)行前2010POPBX指令執(zhí)行示意圖(SP)存儲(chǔ)區(qū)(SS段)執(zhí)行后(BX)=1020(SP)(SP)+1(SP)+2BX2010高地址低地址高地址52第五十二頁(yè),共一百八十七頁(yè),2022年,8月28日堆棧指令使用時(shí)應(yīng)注意幾點(diǎn):①堆棧操作總是按字進(jìn)行②不能從棧頂彈出一個(gè)字給CS③堆棧指針為SS:SP,SP永遠(yuǎn)指向棧頂④SP自動(dòng)進(jìn)行增減量(-2,+2)53第五十三頁(yè),共一百八十七頁(yè),2022年,8月28日格式:XCHGreg,mem/reg功能:交換兩操作數(shù)的內(nèi)容。要求:兩操作數(shù)中必須有一個(gè)在寄存器中;操作數(shù)不能為段寄存器和立即數(shù);源和目地操作數(shù)類型要一致。舉例:XCHG AX,BXXCHG [2000],CL(3)交換指令XCHG54第五十四頁(yè),共一百八十七頁(yè),2022年,8月28日(4)查表指令XLAT
執(zhí)行的操作:AL←[(BX)+(AL)]
又叫查表轉(zhuǎn)換指令,它可根據(jù)表項(xiàng)序號(hào)查出表中對(duì)應(yīng)代碼的內(nèi)容。執(zhí)行時(shí)先將表的首地址(偏移地址)送到BX中,表項(xiàng)序號(hào)存于AL中。
例如:內(nèi)存數(shù)據(jù)段有一張16進(jìn)制數(shù)的ASCII碼表,設(shè)首地址為2000H,如欲查出表中第11個(gè)代碼(代碼序號(hào)從0開始)即十六進(jìn)制數(shù)B的ASCII碼。ASCII表在DS段中,并假設(shè)(DS)=4000H。見下頁(yè)圖?!?5第五十五頁(yè),共一百八十七頁(yè),2022年,8月28日303132...394142...4546...42000H+042000H+0BH‘0’‘1’‘2’‘9’‘A’‘B’‘E’‘F’十六進(jìn)制數(shù)ASCII碼表存儲(chǔ)器56第五十六頁(yè),共一百八十七頁(yè),2022年,8月28日則可用如下幾條指令實(shí)現(xiàn):MOVBX,2000H
;(BX)←表首地址MOVAL,0BH
;(AL)←序號(hào)XALT
;查表轉(zhuǎn)換執(zhí)行后得到:(AL)=42H=’B’注意:轉(zhuǎn)換表長(zhǎng)度最大為256個(gè)表項(xiàng)(字節(jié))。57第五十七頁(yè),共一百八十七頁(yè),2022年,8月28日(5)字節(jié)-字轉(zhuǎn)換指令格式:CBW;把AL的符號(hào)位復(fù)制到AHCWD;把AX的符號(hào)位復(fù)制到DX用途:用于有符號(hào)數(shù)的除法。例如:(AL)=A7H,則執(zhí)行CBW后,AH的內(nèi)容為FFH。58第五十八頁(yè),共一百八十七頁(yè),2022年,8月28日2.輸入輸出(I/O)指令
只限于用累加器AL或AX來傳送信息。功能:(累加器)←→I/O端口(1)輸入指令I(lǐng)N格式:INacc,PORT;PORT端口號(hào)0~255INacc,DX;DX表示的端口范圍達(dá)64K例:INAL,80H;(AL)←(80H端口)
INAL,DX;(AL)←((DX))59第五十九頁(yè),共一百八十七頁(yè),2022年,8月28日例:OUT68H,AX;(69H,68H)←(AX)
OUTDX,AL;((DX))←(AL)在使用間接尋址的IN/OUT指令時(shí),要事先用傳送指令把I/O端口號(hào)設(shè)置到DX寄存器,如:
MOVDX,220HINAL,DX;將220H端口內(nèi)容讀入AL(2)輸出指令OUT
格式:OUTport,acc
OUTDX,acc60第六十頁(yè),共一百八十七頁(yè),2022年,8月28日3.地址傳送指令共有三條:格式:LEAreg,mem;將指定存儲(chǔ)器的16位偏移地址送指定寄存器
LDSreg,mem32;DS:reg←(mem開始的四個(gè)內(nèi)存單元)LESreg,mem32;同上,但DS改為ES
要求源操作數(shù)必須是一個(gè)內(nèi)存操作數(shù),目的操作數(shù)必須是一個(gè)16位的通用寄存器。61第六十一頁(yè),共一百八十七頁(yè),2022年,8月28日設(shè):(SI)=1000H則執(zhí)行該指令后,(BX)=1010H注意以下兩條指令差別:
LEABX,BUFFERMOVBX,BUFFER前者表示將符號(hào)地址為BUFFER的存儲(chǔ)單元的偏侈地址取到
BX中;后者表示將BUFFER存儲(chǔ)單元中的內(nèi)容取到
BX中.例:LEA BX,[SI+10H]62第六十二頁(yè),共一百八十七頁(yè),2022年,8月28日下面兩條指令等效:
LEABX,BUFFERMOVBX,OFFSETBUFFER其中OFFSETBUFFER表示存儲(chǔ)器單元BUFFER的偏移地址。二者都可用于取存儲(chǔ)器單元的偏移地址,但LEA指令可以取動(dòng)態(tài)的地址,OFFSET只能取靜態(tài)的地址。63第六十三頁(yè),共一百八十七頁(yè),2022年,8月28日4.標(biāo)志傳送指令共有四條:(1)讀標(biāo)志指令LAHF
LAHF把標(biāo)志寄存器低8位中的5個(gè)標(biāo)志位傳送到AH中的指定位,如下圖所示:OFDFIFTFSFZFAFPFCFAHLAHF指令的功能FLAG64第六十四頁(yè),共一百八十七頁(yè),2022年,8月28日(2)設(shè)置標(biāo)志指令SAHF
SAHF的功能與LAHF的功能正好相反,用圖來示意,只要將上圖中5個(gè)箭頭方向反一下即可。OFDFIFTFSFZFAFPFCFAHSAHF指令的功能FLAG65第六十五頁(yè),共一百八十七頁(yè),2022年,8月28日
執(zhí)行的操作:(SP)-1←標(biāo)志寄存器高8位
(SP)-2←標(biāo)志寄存器低8位
(SP)←(SP)-2(4)從棧頂彈出標(biāo)志寄存器指令POPF
執(zhí)行的操作:標(biāo)志寄存器低8位←(SP)
標(biāo)志寄存器高8位←(SP)+1
(SP)←(SP)+2PUSHF和POPF指令用于保護(hù)和恢復(fù)標(biāo)志寄存器內(nèi)容。(3)把標(biāo)志寄存器推入棧頂指令PUSHF66第六十六頁(yè),共一百八十七頁(yè),2022年,8月28日例如:
PUSH AXPUSH CX
PUSHF;保護(hù)標(biāo)志寄存器內(nèi)容
;這段程序要用到AX,CX以及標(biāo)志位
POPF ;恢復(fù)標(biāo)志寄存器內(nèi)容
POP CXPOP AX...67第六十七頁(yè),共一百八十七頁(yè),2022年,8月28日數(shù)據(jù)傳送指令中,除SAHF和POPF這兩條指令外,其余所有指令均不影響標(biāo)志位。68第六十八頁(yè),共一百八十七頁(yè),2022年,8月28日3.3.2算術(shù)運(yùn)算指令
涉及兩種類型數(shù)據(jù):無符號(hào)數(shù)和有符號(hào)數(shù)。對(duì)加減法指令,無符號(hào)和有符號(hào)數(shù)可采用同一套指令,但應(yīng)注意:參加的操作數(shù)必須都是無符號(hào)數(shù)或都是有符號(hào)數(shù)。需使用不同的標(biāo)志位來檢查無符號(hào)數(shù)和有符號(hào)數(shù)的運(yùn)算結(jié)果是否溢出。69第六十九頁(yè),共一百八十七頁(yè),2022年,8月28日兩個(gè)8位數(shù)相加時(shí)有4種情況:①無符號(hào)數(shù)和有符號(hào)數(shù)均不溢出二進(jìn)制相加無符號(hào)數(shù)加有符號(hào)數(shù)加
000010008+8+00011110
+30
+(+30)0010011038+38
結(jié)果38 CF=0OF=070第七十頁(yè),共一百八十七頁(yè),2022年,8月28日②無符號(hào)數(shù)溢出
000010008+8+11111101
+253
+(-3)100000101261+5
結(jié)果5 CF=1 OF=0③有符號(hào)數(shù)溢出
000010008+8+01111101
+125
+(+125)
10000101133+133
結(jié)果-123 CF=0OF=1(補(bǔ)碼表示)71第七十一頁(yè),共一百八十七頁(yè),2022年,8月28日④無符號(hào)數(shù)和有符號(hào)數(shù)均溢出
10001000136-120+11110111
+247
+(-9)101111111383-129
結(jié)果127CF=1OF=1上面四種情況說明,CF標(biāo)志可用來表示無符號(hào)數(shù)的溢出,OF標(biāo)志可用來表示有符號(hào)數(shù)的溢出。有符號(hào)數(shù)的溢出是一種出錯(cuò)狀態(tài),在運(yùn)算過程中應(yīng)當(dāng)避免。72第七十二頁(yè),共一百八十七頁(yè),2022年,8月28日共有5條:(1)不帶進(jìn)位的加法指令A(yù)DD
格式:ADD acc,dataADD mem/reg,dataADD
mem/reg1,mem/reg2例:ADD AL,30HADD AX,[BX+20H] ADD CX,SI ADD [DI],200HADD指令對(duì)標(biāo)志位(指狀態(tài)標(biāo)志)都有影響。1.加法指令73第七十三頁(yè),共一百八十七頁(yè),2022年,8月28日(2)帶進(jìn)位位的加法指令A(yù)DCADC指令在形式上和功能上都有與ADD類似,只是相加時(shí)還要包括進(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)74第七十四頁(yè),共一百八十七頁(yè),2022年,8月28日例:有兩個(gè)4字節(jié)的無符號(hào)數(shù)相加:
2C56F8AC+309E47BE=?設(shè)被加數(shù)、加數(shù)分別存放在BUFFER1及BUFFER2開始的兩個(gè)存儲(chǔ)區(qū)內(nèi),結(jié)果放回BUFFER1存儲(chǔ)區(qū),如下頁(yè)圖所示。因CPU只能進(jìn)行8位或16位的加法運(yùn)算,為此可將加法分4次進(jìn)行。ADC指令主要用于多字節(jié)加法運(yùn)算中75第七十五頁(yè),共一百八十七頁(yè),2022年,8月28日56H2CHBEH47HBUFFER1BUFFER2ACHF8H9EH30H被加數(shù)加數(shù)數(shù)據(jù)段多字節(jié)加法示意圖......76第七十六頁(yè),共一百八十七頁(yè),2022年,8月28日程序段如下:
MOVCX,4;置循環(huán)次數(shù)
MOVSI,0;置SI初值為零
CLC;清進(jìn)位標(biāo)志CFLL:MOV AL,BUFFER2[SI] ADC BUFFER1[SI],AL;帶進(jìn)位加
INC SI;(SI)+1DEC CX;(CX)-1JNZLL;若(CX)0,則轉(zhuǎn)LL思考:若最高位有進(jìn)位,如何改?77第七十七頁(yè),共一百八十七頁(yè),2022年,8月28日格式:INCreg/mem功能:類似于C語(yǔ)言中的++操作:對(duì)指定的操作數(shù)加1例:INCALINCSIINCBYTEPTR[BX+4]注:本指令不影響CF標(biāo)志。3)加1指令I(lǐng)NC(單操作數(shù)指令)78第七十八頁(yè),共一百八十七頁(yè),2022年,8月28日ADD/ADC對(duì)條件標(biāo)志位(CF/OF/ZF/SF)的影響:CF位表示無符號(hào)數(shù)相加的溢出。OF位表示帶符號(hào)數(shù)相加的溢出。1結(jié)果為負(fù)0否則SF=1結(jié)果為00否則ZF=1和的最高有效位有向高位的進(jìn)位0否則CF=1兩個(gè)操作數(shù)符號(hào)相同,而結(jié)果符號(hào)與之相反0否則OF=79第七十九頁(yè),共一百八十七頁(yè),2022年,8月28日(1)不考慮借位的減法指令SUB
格式:SUBdest,src操作:dest←(dest)-(src)注:1.源和目的操作數(shù)不能同時(shí)為存儲(chǔ)器操作數(shù)
2.立即數(shù)不能作為目的操作數(shù)指令例子:
SUBAL,60HSUB[BX+20H],DXSUBAX,CX2.減法指令80第八十頁(yè),共一百八十七頁(yè),2022年,8月28日SBB指令主要用于多字節(jié)的減法。格式:SBBdest,src操作:dest←(dest)-(src)-(CF)指令例子:SBBAX,CXSBBWORDPTR[SI],2080HSBB[SI],DX(2)考慮借位的減法指令SBB81第八十一頁(yè),共一百八十七頁(yè),2022年,8月28日例:x、y、z均為32位數(shù),分別存放在地址為X,X+2;Y,Y+2;Z,Z+2的存儲(chǔ)單元中,用指令序列實(shí)現(xiàn)wx+y+24-z,結(jié)果放在W,W+2單元中。MOVAX,XMOVDX,X+2ADDAX,YADCDX,Y+2;x+yADDAX,24ADCDX,0;x+y+24
SUBAX,Z
SBBDX,Z+2;x+y+24-zMOVW,AXMOVW+2,DX;結(jié)果存入W,W+2單元82第八十二頁(yè),共一百八十七頁(yè),2022年,8月28日作用類似于C語(yǔ)言中的”--”操作符。格式:DECopr 操作:opr←(opr)-1指令例子:
DECCLDECBYTEPTR[DI+2]
DECSI(3)減1指令DEC83第八十三頁(yè),共一百八十七頁(yè),2022年,8月28日格式:NEGopr操作:opr←0-(opr)對(duì)一個(gè)操作數(shù)取補(bǔ)碼相當(dāng)于用0減去此操作數(shù),故利用NEG指令可得到負(fù)數(shù)的絕對(duì)值。例:若(AL)=0FCH,則執(zhí)行NEGAL 后,
(AL)=04H,CF=1本例中,0FCH為-4的補(bǔ)碼,執(zhí)行求補(bǔ)指令后,即得到4(-4的絕對(duì)值)。(4)求補(bǔ)指令NEG84第八十四頁(yè),共一百八十七頁(yè),2022年,8月28日SUB/SBB對(duì)標(biāo)志位(CF/OF/ZF/SF)的影響
CF=1表示無符號(hào)數(shù)減法溢出。
OF=1表示帶符號(hào)數(shù)減法溢出。NEG指令對(duì)CF/OF的影響:
CF:操作數(shù)為0時(shí),求補(bǔ)的結(jié)果使CF=0,否則CF=1。
OF:字節(jié)運(yùn)算對(duì)-128求補(bǔ)或字運(yùn)算對(duì)-32768求補(bǔ)時(shí)OF=1,否則OF=0。1被減數(shù)的最高有效位有向高位的借位0否則CF=1兩個(gè)操作數(shù)符號(hào)相反,而結(jié)果的符號(hào)與減數(shù)相同0否則OF=85第八十五頁(yè),共一百八十七頁(yè),2022年,8月28日格式:CMPdest,src操作:(dest)-(src)CMP也是執(zhí)行兩個(gè)操作數(shù)相減,但結(jié)果不送目標(biāo)操作數(shù),其結(jié)果只反映在標(biāo)志位上。指令例子:
CMPAL,0AHCMPCX,SICMPDI,[BX+03](5)比較指令CMP86第八十六頁(yè),共一百八十七頁(yè),2022年,8月28日根據(jù)標(biāo)志位來判斷比較的結(jié)果1)根據(jù)ZF判斷兩個(gè)數(shù)是否相等。若ZF=1,則兩數(shù)相等。2)若兩個(gè)數(shù)不相等,則分兩種情況考慮:①比較的是兩個(gè)無符號(hào)數(shù)若CF=0,則dest>src;若CF=1,則dest<src。②比較的是兩個(gè)有符號(hào)數(shù)若OF⊕SF=0,則dest>src;
若OF⊕SF=1,則dest<src。87第八十七頁(yè),共一百八十七頁(yè),2022年,8月28日比較指令在使用時(shí),一般在其后緊跟一條條件轉(zhuǎn)移指令,判斷比較結(jié)果的轉(zhuǎn)向。舉例:比較AL、BL、CL中帶符號(hào)數(shù)的大小,將最小數(shù)放在AL中。程序:CMPAL,BL;AL和BL比較
JNGBBB
;若AL≤BL,則轉(zhuǎn)
XCHGAL,BL;若AL>BL,則交換
BBB:CMPAL,CL;AL和CL比較
JNGCCC;若AL≤CL,則轉(zhuǎn)
XCHGAL,CL;若AL>CL,則交換
CCC:HLT88第八十八頁(yè),共一百八十七頁(yè),2022年,8月28日進(jìn)行乘法時(shí):8位*8位→16位乘積 16位*16位→32位乘積(1)無符號(hào)數(shù)的乘法指令MUL(MEM/REG)格式:MULsrc操作:字節(jié)操作數(shù)(AX)(AL)×(src)
字操作數(shù)(DX,AX)(AX)×(src)指令例子:
MULBL;(AL)×(BL),乘積在AX中
MULCX;(AX)×(CX),乘積在DX,AX中
MULBYTEPTR[BX]3.乘法指令
89第八十九頁(yè),共一百八十七頁(yè),2022年,8月28日格式與MUL指令類似,只是要求兩操作數(shù)均為有符號(hào)數(shù)。指令例子:
IMULBL;(AX)←(AL)×(BL)IMULWORDPTR[SI];(DX,AX)←(AX)×([SI+1][SI])
(2)有符號(hào)數(shù)乘法指令I(lǐng)MUL注意:MUL/IMUL指令中
●AL(AX)為隱含的乘數(shù)寄存器;
●
AX(DX,AX)為隱含的乘積寄存器;
●
SRC不能為立即數(shù);
●除CF和OF外,對(duì)其它標(biāo)志位無定義。90第九十頁(yè),共一百八十七頁(yè),2022年,8月28日乘法指令對(duì)CF/OF的影響:00乘積的高一半為零11否則MUL指令:CF/OF=00乘積的高一半是低一半的符號(hào)擴(kuò)展11否則
IMUL指令:CF/OF=例:(AL)=A5H(-5B),(BL)=11H
(1)IMULBL;(AX)(AL)×(BL)
;A5×11-5B×11=-060BF9F5
;
(AX)=F9F5H
CF=OF=1(2)MULBL;(AX)(AL)×(BL)
;A5×11=0AF5
;
(AX)=0AF5H
CF=OF=1
91第九十一頁(yè),共一百八十七頁(yè),2022年,8月28日4.除法指令進(jìn)行除法時(shí):16位/8位→8位商
32位/16位→16位商對(duì)被除數(shù)、商及余數(shù)存放有如下規(guī)定:
被除數(shù) 商 余數(shù)字節(jié)除法AX AL AH字除法 DX:AX AX DX92第九十二頁(yè),共一百八十七頁(yè),2022年,8月28日格式:DIVsrc操作:字節(jié)操作(AL)(AX)/(SRC)的商
(AH)(AX)/(SRC)的余數(shù)字操作(AX)(DX,AX)/(SRC)的商
(DX)(DX,AX)/(SRC)的余數(shù)指令例子:
DIVCLDIVWORDPTR[BX]注:若除數(shù)為零或AL中商大于FFH(或AX中商大于FFFFH),則CPU產(chǎn)生一個(gè)類型0的內(nèi)部中斷。(1)無符號(hào)數(shù)除法指令DIV93第九十三頁(yè),共一百八十七頁(yè),2022年,8月28日(2)有符號(hào)數(shù)除法指令I(lǐng)DIV格式:IDIVsrc操作與DIV類似。商及余數(shù)均為有符號(hào)數(shù),且余數(shù)符號(hào)總是與被除數(shù)符號(hào)相同。注意:
對(duì)于DIV/IDIV指令A(yù)X(DX,AX)為隱含的被除數(shù)寄存器。
AL(AX)為隱含的商寄存器。
AH(DX)為隱含的余數(shù)寄存器。
src不能為立即數(shù)。
對(duì)所有條件標(biāo)志位均無定義。94第九十四頁(yè),共一百八十七頁(yè),2022年,8月28日除法運(yùn)算要求被除數(shù)字長(zhǎng)是除數(shù)字長(zhǎng)的兩倍,若不滿足則需對(duì)被除數(shù)進(jìn)行擴(kuò)展,否則產(chǎn)生錯(cuò)誤。對(duì)于無符號(hào)數(shù)除法擴(kuò)展,只需將AH或DX清零即可。對(duì)有符號(hào)數(shù)而言,則是符號(hào)位的擴(kuò)展??墒褂们懊娼榻B過的符號(hào)擴(kuò)展指令CBW和CWD關(guān)于除法操作中的字長(zhǎng)擴(kuò)展問題95第九十五頁(yè),共一百八十七頁(yè),2022年,8月28日例:寫出34H÷25H的程序段。
MOVAL,34HMOVBL,25HCBW;AL的符號(hào)擴(kuò)展到AHIDIVBL;0034H÷25H,結(jié)果為
;(AH)=0FH,(AL)=01H96第九十六頁(yè),共一百八十七頁(yè),2022年,8月28日*5.BCD碼運(yùn)算的十進(jìn)制調(diào)整指令專用于對(duì)BCD碼運(yùn)算的結(jié)果進(jìn)行調(diào)整包括:AAA、DAA、AAS、DAS、AAM、AAD均為隱含尋址,隱含的操作數(shù)為AL和AH為何要對(duì)BCD碼的運(yùn)算結(jié)果進(jìn)行調(diào)整?
BCD碼本質(zhì)上是十進(jìn)制數(shù),即應(yīng)遵循逢十進(jìn)一的規(guī)則。而計(jì)算機(jī)是按二進(jìn)制(十六進(jìn)制)進(jìn)行運(yùn)算,并未按十進(jìn)制規(guī)則進(jìn)行運(yùn)算。97第九十七頁(yè),共一百八十七頁(yè),2022年,8月28日1)加法的十進(jìn)制調(diào)整指令(1)非壓縮BCD碼加法調(diào)整AAA本指令對(duì)在AL中的由兩個(gè)未組合的BCD碼相加后的結(jié)果進(jìn)行調(diào)正,得到一個(gè)正確的未組合的BCD碼。AAA指令只影響AF和CF,其余標(biāo)志無定義。AAA指令應(yīng)緊跟在ADD或ADC指令之后。98第九十八頁(yè),共一百八十七頁(yè),2022年,8月28日如果AL的低4位>9∨AF=1,則:
①AL←(AL)+6,(AH)←(AH)+1,AF←1②AL←((AL)∧0FH)③CF←AF否則AL←(AL)∧0FHAAA指令的操作如下:99第九十九頁(yè),共一百八十七頁(yè),2022年,8月28日調(diào)整原理:先看一個(gè)例子計(jì)算8+9
00001000
見右式
+00001001
00010001=11
結(jié)果應(yīng)為17,而計(jì)算機(jī)相加為11,原因在于運(yùn)算過程中,如遇到低4位往高4位產(chǎn)生進(jìn)位時(shí)(此時(shí)AF=1)是按逢十六進(jìn)一的規(guī)則,但BCD碼要求逢十進(jìn)一,因此只要產(chǎn)生進(jìn)位,個(gè)位就會(huì)少6,這就要進(jìn)行加6調(diào)正。這個(gè)1代表了16,而實(shí)際上僅應(yīng)為10,即多進(jìn)了6。
100第一百頁(yè),共一百八十七頁(yè),2022年,8月28日實(shí)際上當(dāng)?shù)?位的結(jié)果>9(即A~F之間)時(shí),也應(yīng)進(jìn)行加6調(diào)正(原因是逢十沒有進(jìn)位,故用加6的方法強(qiáng)行產(chǎn)生進(jìn)位)。如對(duì)上例的結(jié)果進(jìn)行加6:0001000111
+00000110
60000011117
^00001111----------------------100001111101第一百零一頁(yè),共一百八十七頁(yè),2022年,8月28日例2:有兩個(gè)字符串形式的十進(jìn)制數(shù),2658和3619,求二者之和。即2658+3619=?
由題意知,被加數(shù)和加數(shù)的每一位都以ASCII碼形式存放在內(nèi)存中。假定二數(shù)在內(nèi)存中均是低位在前,高位在后,另留出5個(gè)單元存放相加的結(jié)果。內(nèi)存中數(shù)據(jù)存放形式見下頁(yè)圖。102第一百零二頁(yè),共一百八十七頁(yè),2022年,8月28日36H32H39H31HSTRING1STRING238H35H36H33H被加數(shù)加數(shù)數(shù)據(jù)段‘8’‘5’‘6’‘2’‘9’‘1’‘6’‘3’SUM結(jié)果......103第一百零三頁(yè),共一百八十七頁(yè),2022年,8月28日程序段為:
LEASI,STRING1;STRING1偏移地址送SILEADI,STRING2;STRING2偏移地址送DILEABX,SUM;SUM偏移地址送BXMOVCX,4;循環(huán)4次
CLC;清進(jìn)位標(biāo)志AGAIN:MOVAL,[SI]ADCAL,[DI];帶進(jìn)位加
AAA;未壓縮BCD碼調(diào)正
MOV[BX],AL;結(jié)果存入SUMINCSI;調(diào)整指針
INCDIINCBXDECCX;循環(huán)計(jì)數(shù)器減1
JNZAGAIN;若未處理完,則轉(zhuǎn)AGAIN104第一百零四頁(yè),共一百八十七頁(yè),2022年,8月28日思考題:1.根據(jù)程序?qū)懗鼋Y(jié)果SUM的值。2.若最高位有進(jìn)位,程序如何修改?3.從此例不難看出,用AAA指令也可對(duì)字符串形式的十進(jìn)制數(shù)加法進(jìn)行調(diào)整,所以它又被稱為加法的ASCII調(diào)正指令。為什么AAA指令既可對(duì)非壓縮BCD碼加法進(jìn)行調(diào)整,也可對(duì)ASCII碼形式的十進(jìn)制數(shù)進(jìn)行調(diào)整?(注意AAA指令的第②步)105第一百零五頁(yè),共一百八十七頁(yè),2022年,8月28日(2)壓縮BCD碼加法調(diào)整DAA兩個(gè)壓縮BCD碼相加結(jié)果在AL中,通過DAA調(diào)整得到一個(gè)正確的壓縮BCD碼.指令操作(調(diào)整方法):若AL的低4位>9∨AF=1
則(AL)←(AL)+6,AF←1
若AL的高4位>9∨CF=1
則(AL)←(AL)+60H,CF←1除OF外,DAA指令影響所有其它標(biāo)志。DAA指令應(yīng)緊跟在ADD或ADC指令之后。106第一百零六頁(yè),共一百八十七頁(yè),2022年,8月28日例:
0100100048H
MOVAL,48H
+01110100
74H
MOVBL,74H10111100BCHADDAL,BL
+01100110
66H
DAA100100010122H
(進(jìn)位) (進(jìn)位)執(zhí)行ADD后,(AL)=BCH,高4位低4位均大于9,故DAA指令執(zhí)行加66H調(diào)整,最后結(jié)果為:(AL)=22H,CF=1,AF=1107第一百零七頁(yè),共一百八十七頁(yè),2022年,8月28日(1)非壓縮BCD碼減法的十進(jìn)制調(diào)正指令A(yù)AS對(duì)AL中由兩個(gè)非壓縮的BCD碼相減的結(jié)果進(jìn)行調(diào)整。調(diào)整操作為:若AL的低4位>9或AF=1,則:①AL←(AL)-6,AH←(AH)-1,AF←1②AL←(AL)∧0FH③CF←AF
否則:AL←(AL)∧0FH2)減法的十進(jìn)制調(diào)整指令108第一百零八頁(yè),共一百八十七頁(yè),2022年,8月28日舉例:16-8=?
MOVAX,0106H0000011006MOVBL,08H-00001000
-08SUBAL,BL 11111110FEAAS-00000110
-0611111000F8
∧00001111
∧0F0000100008結(jié)果為:(AL)=08H,(AH)=0,CF=AF=1109第一百零九頁(yè),共一百八十七頁(yè),2022年,8月28日(2)壓縮BCD碼減法的十進(jìn)制調(diào)正指令DAS對(duì)AL中由兩個(gè)壓縮BCD碼相減的結(jié)果進(jìn)行調(diào)整。調(diào)整操作為:若AL的低4位>9∨AF=1,則:
AL←(AL)-6,且AF←1
若AL的高4位>9∨CF=1,則:
AL←(AL)-60H,且CF←1
DAS對(duì)OF無定義,但影響其余標(biāo)志位。DAS指令要求跟在減法指令之后。110第一百一十頁(yè),共一百八十七頁(yè),2022年,8月28日3)乘法的十進(jìn)制調(diào)正指令A(yù)AM
對(duì)AX中由兩個(gè)非壓縮BCD碼相乘的結(jié)果進(jìn)行調(diào)整。調(diào)整操作為:(AL)/0AH,(AH)←商,(AL)←余數(shù)隱含的操作寄存器為AL和AH;AAM跟在MUL指令之后使用;影響標(biāo)志位PF、SF、ZF,其它無定義;用AAM可實(shí)現(xiàn)≤99的二-十進(jìn)制轉(zhuǎn)換。111第一百一十一頁(yè),共一百八十七頁(yè),2022年,8月28日例1:按十進(jìn)制乘法計(jì)算7×8=?程序段如下:
MOV AL,07H ;(AL)=07H MOV CL,08H ;(CL)=08H MUL CL ;(AX)=0038H AAM ;(AH)=05H,(AL)=06H
所得結(jié)果為非壓縮的BCD碼。例2:把3AH轉(zhuǎn)換成等值的十進(jìn)制數(shù)。
MOVAL,3AH;58AAM;(AH)=05H,(AL)=08H112第一百一十二頁(yè),共一百八十七頁(yè),2022年,8月28日4)除法的十進(jìn)制調(diào)正指令A(yù)AD對(duì)非壓縮BCD除法運(yùn)算進(jìn)行調(diào)整。調(diào)整操作為:(AL)←(AH)×0AH+(AL)
AH←0隱含的操作寄存器為AH,AL;AAD要在DIV指令之前使用;影響標(biāo)志位PF、SF、ZF,其它無定義;用AAD可實(shí)現(xiàn)≤99的十-二進(jìn)制轉(zhuǎn)換。113第一百一十三頁(yè),共一百八十七頁(yè),2022年,8月28日例1:按十進(jìn)制除法計(jì)算55÷7=?
程序段如下:
MOV AX,0505H ;(AX)=55BCD MOV CL,07H ;(CL)=7 AAD ;(AX)=0037H DIV CL ;(AH)=6,(AL)=7
所得結(jié)果為非壓縮的BCD碼(商7余6)。例2:把73轉(zhuǎn)換成等值的二進(jìn)制數(shù)。
MOVAX,0703H;(AX)=73BCDAAD;(AX)=0049H114第一百一十四頁(yè),共一百八十七頁(yè),2022年,8月28日3.3.3邏輯運(yùn)算和移位指令邏輯運(yùn)算指令●運(yùn)算規(guī)則:按位操作,無進(jìn)/借位
●對(duì)標(biāo)志位的影響(除NOT指令外):
CFOFSFZFPFAF00***無定義
根據(jù)運(yùn)算結(jié)果設(shè)置115第一百一十五頁(yè),共一百八十七頁(yè),2022年,8月28日(1)邏輯”與”AND對(duì)兩個(gè)操作數(shù)進(jìn)行按位邏輯“與”操作。格式:ANDdest,src用途:保留操作數(shù)的某幾位,清零其他位。例1:保留AL中低4位,高4位清0。ANDAL,0FH例2:AL中有字符’a’~’z’,將其轉(zhuǎn)換成大寫。
ANDAL,01011111B116第一百一十六頁(yè),共一百八十七頁(yè),2022年,8月28日例3:測(cè)試AL的bit7,bit5,bit2是否都是1。
ANDAL,10100100B CMPAL,10100100B
JZYES;ifmatch,gotoYES……;ifnotmatch
…
…YES:……;goeshereifall‘1’
117第一百一十七頁(yè),共一百八十七頁(yè),2022年,8月28日對(duì)兩個(gè)操作數(shù)進(jìn)行按位邏輯”或”操作。格式:ORdest,src用途:對(duì)操作數(shù)的某幾位置1;對(duì)兩操作數(shù)進(jìn)行組合。例1:把AL中的非壓縮BCD碼變成相應(yīng)十進(jìn)制數(shù)的ASCII碼。
ORAL,30H(2)邏輯”或”O(jiān)R118第一百一十八頁(yè),共一百八十七頁(yè),2022年,8月28日例2:把AH和AL中的非壓縮BCD碼組合成壓縮的BCD碼,放到AL中。
MOVCL,4SHLAH,CLORAL,AH例3:把AL的第5位置為1ORAL,00100000B119第一百一十九頁(yè),共一百八十七頁(yè),2022年,8月28日對(duì)操作數(shù)進(jìn)行按位邏輯”非”操作。格式:NOTmem/reg例:NOTCX
NOTBYTEPTR[DI](3)邏輯“非”(取反)NOT120第一百二十頁(yè),共一百八十七頁(yè),2022年,8月28日對(duì)兩個(gè)操作數(shù)按位進(jìn)行”異或”操作。格式:XORdest,src用途:對(duì)reg清零(自身異或)
把reg/mem的某幾位變反(與’1’異或)例1:把AX寄存器清零。例2:把DH的bit4,3變反①M(fèi)OVAX,0XORDH,18H②XORAX,AX③ANDAX,0④SUBAX,AX(4)邏輯”異或”XOR
121第一百二十一頁(yè),共一百八十七頁(yè),2022年,8月28日操作與AND指令類似,但不將”與”的結(jié)果送回,只影響標(biāo)志位。TEST指令常用于位測(cè)試,與條件轉(zhuǎn)移指令一起用。例:測(cè)試AL的內(nèi)容是否為負(fù)數(shù)。TESTAL,80H;檢查AL中D7=1?
JNZMINUS;是1(負(fù)數(shù)),轉(zhuǎn)MINUS
…
…
;否則(正數(shù))不轉(zhuǎn)移MINUS:…
…
…
…(5)測(cè)試指令TEST122第一百二十二頁(yè),共一百八十七頁(yè),2022年,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 深入探討科技企業(yè)如何通過強(qiáng)化知識(shí)產(chǎn)權(quán)保護(hù)來提升品牌形象和競(jìng)爭(zhēng)力
- 現(xiàn)代綠色辦公樓的設(shè)計(jì)與施工經(jīng)驗(yàn)分享
- 生產(chǎn)制造中基于智能算法的調(diào)度系統(tǒng)設(shè)計(jì)
- 2023三年級(jí)英語(yǔ)上冊(cè) Unit 3 My friends第4課時(shí)說課稿 牛津譯林版
- 2024年春八年級(jí)語(yǔ)文下冊(cè) 第二單元 5 大自然的語(yǔ)言說課稿 新人教版
- 9 烏鴉喝水(說課稿)-2024-2025學(xué)年統(tǒng)編版語(yǔ)文一年級(jí)上冊(cè)
- Unit 4 My Family Lesson 2(說課稿)-2023-2024學(xué)年人教新起點(diǎn)版英語(yǔ)三年級(jí)下冊(cè)
- Unit 6 Useful numbers Lesson 2(說課稿)-2024-2025學(xué)年人教PEP版(2024)英語(yǔ)三年級(jí)上冊(cè)
- 2024-2025學(xué)年高中歷史 第三單元 各國(guó)經(jīng)濟(jì)體制的創(chuàng)新和調(diào)整 第16課 戰(zhàn)后資本主義經(jīng)濟(jì)的調(diào)整教學(xué)說課稿 岳麓版必修2
- 2025淮安市城東花園小區(qū)門禁系統(tǒng)工程合同
- 2025年人教五四新版八年級(jí)物理上冊(cè)階段測(cè)試試卷含答案
- 2025新人教版英語(yǔ)七年級(jí)下單詞表(小學(xué)部分)
- 2025年春季1530安全教育記錄主題
- 礦山2025年安全工作計(jì)劃
- 基本藥物制度政策培訓(xùn)課件
- 2025年包裝印刷項(xiàng)目可行性研究報(bào)告
- 2025年九年級(jí)物理中考復(fù)習(xí)計(jì)劃
- 企業(yè)融資報(bào)告特斯拉成功案例分享
- 合資經(jīng)營(yíng)工廠合同范本
- 2024年新疆(兵團(tuán))公務(wù)員考試《行測(cè)》真題及答案解析
- 2024年《論教育》全文課件
評(píng)論
0/150
提交評(píng)論