版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
微機(jī)原理與接口技術(shù)1第二章
內(nèi)容回顧2第二章重點(diǎn)之一
8086CPU內(nèi)部結(jié)構(gòu)3目的變址寄存器DestinationIndexSIDIBPSPAX
累加器AccumulatorBX基址寄存器BaseCX
計數(shù)寄存器CountDX
數(shù)據(jù)寄存器DataAHBHCHDHALBLCLDLIPPSWDSESSSCS數(shù)據(jù)段寄存器DataSegment附加段寄存器ExtraSegment堆棧段寄存器StackSegment代碼段寄存器CodeSegment狀態(tài)標(biāo)志寄存器ProcessorStatusWord指令指針寄存器InstructionPointer變址寄存器段寄存器控制寄存器通用寄存器源變址寄存器SourceIndex基址指針寄存器BasePoint堆棧指針寄存器StackPoint指針寄存器數(shù)據(jù)寄存器第二章重點(diǎn)之二4第二章重點(diǎn)之三邏輯地址的組成——段基址:偏移地址物理地址的形成——段基址×16+偏移地址段基址00001503210偏移地址150地址加法器物理地址190存儲器的分段管理5第二章重點(diǎn)之四堆棧的概念及工作過程6第三章8086的尋址方式和指令系統(tǒng)8086的尋址方式微機(jī)系統(tǒng)指令的機(jī)器碼表示方法8086的指令系統(tǒng)內(nèi)容提要7§3-18086的尋址方式概述
§3-18086的尋址方式——概述
計算機(jī)的指令包括:操作碼
+
操作數(shù)
↓
↓操作的性質(zhì)操作的對象
↓存放在
寄存器、存儲器、I/O端口地址、立即數(shù)(由尋址方式?jīng)Q定)尋址方式:指令中說明操作數(shù)所在地址的方法。指令分類:單操作數(shù)、雙操作數(shù)、無操作數(shù)。(雙操作數(shù)指令形式:操作碼目的操作數(shù),源操作數(shù))8§3-18086的尋址方式——概述
各種尋址方式指令執(zhí)行速度不同:
操作數(shù)在寄存器中指令執(zhí)行速度快:在CPU內(nèi)部立即執(zhí)行;
立即數(shù)尋址指令執(zhí)行速度較快:直接從指令隊列中取數(shù);
操作數(shù)在存儲器中指令執(zhí)行速度較慢:通過總線與CPU交換數(shù)據(jù)。CPU進(jìn)行讀/寫存儲器的操作:①把一個偏移量送到BIU,計算出20位物理地址;②執(zhí)行總線周期存取操作數(shù)。9§3-18086的尋址方式——概述
8086指令的尋址方式類型:一、立即尋址方式二、寄存器尋址方式三、直接尋址方式四、寄存器間接尋址方式五、寄存器相對尋址方式六、基址變址尋址方式七、相對基址變址尋址方式八、其它10§3-18086的尋址方式——立即尋址方式
一、立即尋址方式(ImmediateAddressing)
1.含義:操作數(shù)是立即數(shù)(即8位或16位的常數(shù)),直接包含在指令中。2.特點(diǎn):翻譯成機(jī)器碼時,立即數(shù)是指令的一部分,緊跟在操作碼之后存放在代碼段內(nèi)。在取出指令的同時也就取出了操作數(shù),立即有操作數(shù)可用,所以稱之為立即尋址。如果立即數(shù)是l6位數(shù):高字節(jié)→代碼段的高地址單元,低字節(jié)→低地址單元;3.作用:常用于給寄存器賦初值。11§3-18086的尋址方式——立即尋址方式
例3.1:MOVAL,26H例3.2:MOVCX,2A50H
解:將立即數(shù)2A50H送到CX寄存器中。4.注意:①立即數(shù)可以送到寄存器、一個存儲單元(8位)、兩個連續(xù)的存儲單元(16位)中去;②立即數(shù)只能作源操作數(shù),不能作目的操作數(shù);③以A~F打頭的數(shù)字出現(xiàn)在指令中時,前面必須加數(shù)字0。以免與其它符號相混淆(如:MOVAX0FF00H)。MOVCX,2A50H12§3-18086的尋址方式——寄存器尋址方式
二、寄存器尋址方式
(RegisterAddressing)
1.含義:操作數(shù)包含在寄存器中,寄存器的名稱由指令指定。2.特點(diǎn):16位操作數(shù):寄存器可以是AX、BX、CX、DX、SI、DI、SP和BP等。8位操作數(shù):寄存器AH、AL、BH、BL、CH、CL、DH和DL。3.作用:寄存器之間傳遞數(shù)據(jù)。例3.3MOVDX,AX
解:(AX)送到CX寄存器中。(AX內(nèi)容不變)(又例:MOVAL,AH)4.注意:源操作數(shù)的長度必須與目的操作數(shù)—致。13§3-18086的尋址方式——直接尋址方式三、直接尋址方式(DirectAddressing)
1.含義:
存儲單元的有效地址EA(即:操作數(shù)的偏移地址)直接由指令給出。
2.特點(diǎn):機(jī)器碼中,有效地址存放在代碼段中指令的操作碼之后,而該地址單元中的數(shù)據(jù)總是存放在存儲器中。須先求出操作數(shù)的物理地址,再從存儲器中取得操作數(shù)。操作數(shù)的物理地址=16×DS+EA3.作用:
實現(xiàn)對存儲單元的讀/寫操作。
接下來的幾種尋址方式,用于在存儲器中尋找操作數(shù),即指令的操作數(shù)在存儲器中,要通過尋址方式求出物理地址才能獲得操作數(shù)。14§3-18086的尋址方式——直接尋址方式
例3.5MOVAX,[2000H]解:設(shè)DS=3000H,由指令得:EA=2000H(16位邏輯地址)物理地址=16×3000H+2000H=32000H(20位,20根地址線);設(shè)32000H地址單元的內(nèi)容為1234H,即(32000H)=1234H則:AX=1234H指令執(zhí)行過程如圖所示。(注:如用AL替代AX,則AL=34H)15注意:為了代碼的安全,匯編語言中一般不允許對存儲器進(jìn)行直接尋址訪問,所以匯編語言中MOVAL,[2000H]語句要用MOVAL,DS:[2000H]來代替,否則匯編時會出現(xiàn)警告,并將原語句編譯等價為MOVAL,2000H語句。4.段超越前綴例3.7MOVAX,ES:[500]5.符號地址
匯編語言中一般用符號地址代替直接數(shù)值地址,由編譯器來計算操作數(shù)的有效直接地址,防止人工計算地址出錯。例3.10AREA1DW0867HMOVAX,AREA116§3-18086的尋址方式——寄存器間接尋址方式四、寄存器間接尋址方式(RegisterIndirectAddressing)1.含義:操作數(shù)的有效地址放在寄存器中。2.特點(diǎn):可以使用的寄存器有:基址寄存器BX、BP,變址寄存器SI、DI。如果使用BX、SI、DI寄存器,則默認(rèn)操作數(shù)在數(shù)據(jù)段中,如果使用BP寄存器,則默認(rèn)操作數(shù)在堆棧段中。操作數(shù)的物理地址=16×DS+BX/SI/DI或=16×SS+BP3.作用:將存儲器單元的有效地址存放在寄存器中。
17§3-18086的尋址方式——寄存器間接尋址方式例3.11MOVBX,[SI]解:設(shè):DS=1000H,SI=2000H,(12000H)=318BH則:物理地址=16×DS+SI=10000H+2000H=12000H指令執(zhí)行后,BX=318BH,指令執(zhí)行過程如圖所示。此處書上有錯,機(jī)器指令中應(yīng)該只有2字節(jié)操作碼8B1C18
4.注意:▲寄存器名稱外必須加方括號,以區(qū)別寄存器尋址方式;▲可以使用段超越前綴來從默認(rèn)段以外的段中取得數(shù)據(jù);例MOVBX,ES:[SI]▲關(guān)于默認(rèn)段:指定寄存器BX、SI或DI,默認(rèn)操作數(shù)存放在數(shù)據(jù)段DS中;(DS:BX,SI,DI)
指定寄存器BP,默認(rèn)操作數(shù)存放在數(shù)據(jù)段SS中;(SS:BP)
§3-18086的尋址方式——寄存器間接尋址方式19§3-18086的尋址方式——寄存器相對尋址方式五、寄存器相對尋址方式(RegisterRelativeAddressing)
1.含義:操作數(shù)的有效地址是基址或變址寄存器的內(nèi)容與8位或16位位移量(Displacement)之和。即
[BX]/[BP]EA=+8位偏移量/16位偏移量[SI]/[DI]2.特點(diǎn):使用:BX、BP、SI、DI。操作數(shù)的物理地址=16×DS+BX/SI/DI+COUNT或=16×SS+BP+COUNT
20§3-18086的尋址方式——寄存器相對尋址方式例3.12MOVBX,COUNT[SI];或:MOVBX,[COUNT+SI]解:設(shè):DS=3000H,SI=2000H,位移量COUNT=4000H,(36000H)=318BH則:物理地址=16×DS+SI+COUNT=30000H+2000H+4000H=36000H指令執(zhí)行后,BX=318BH40300021
3.注意:▲寄存器名稱外必須加方括號,位移量可以在括號內(nèi),也可以在括號外;▲段超越前綴來從默認(rèn)段以外的段中取得數(shù)據(jù);
例MOVDH,ES:ARRAY[SI]▲關(guān)于默認(rèn)段:
指定寄存器BX、SI或DI,默認(rèn)操作數(shù)存放在數(shù)據(jù)段DS中;(DS:BX,SI,DI)
指定寄存器BP,默認(rèn)操作數(shù)存放在數(shù)據(jù)段SS中;
(SS:BP)
§3-18086的尋址方式——寄存器相對尋址方式22§3-18086的尋址方式——基址變址尋址方式六、基址變址尋址方式(RegisterRelativeAddressing)1.含義:操作數(shù)的有效地址是一個基址寄存器(BX、BP)的內(nèi)容與一個變址寄存器(SI、DI)的內(nèi)容之和。2.特點(diǎn):使用的寄存器:基址寄存器BX、BP,變址寄存器SI、DI。操作數(shù)的物理地址=16×DS+BX+SI/DI或=16×SS+BP+SI/DI3.注意:▲寄存器SI和DI、BP和BX不能同時出現(xiàn)在[]中。23§3-18086的尋址方式——基址變址尋址方式例3.13MOVAX,[BX]
[SI];或:MOVBX,[BX+SI]解:設(shè):DS=3000H,SI=0500H,BX=1200H,(31700H)=0ABCDH則:物理地址=16×DS+SI+BX=30000H+0500H+1200H=31700H指令執(zhí)行后,AX=0ABCDH24§3-18086的尋址方式——相對基址變址尋址方式七、相對基址變址尋址方式(RelativeBasedIndexedAddressing)
1.含義:操作數(shù)的有效地址是一個基址寄存器(BX、BP)和一個變址寄存器(SI、DI)的內(nèi)容,再加上8位或16位位移量之和。即[BX][SI]EA=++位移量[BP][DI]2.特點(diǎn):使用的寄存器:基址寄存器BX、BP,變址寄存器SI、DI。操作數(shù)的物理地址=16×DS+BX+SI/DI+8/16位位移量或=16×SS+BP+SI/DI+8/16位位移量3.注意:▲寄存器SI和DI、BP和BX不能同時出現(xiàn)在[]中。25§3-18086的尋址方式——相對基址變址尋址方式例3.14MOVAX,MASK[BX]
[SI];或:MOVBX,[MASK+BX+SI]解:設(shè):DS=3000H,SI=0300H,BX=1500H,MASK=0200H,(21A00H)=26BFH則:物理地址=16×DS+SI+BX+MASK=20000H+0300H+1500H+0200H=21A00H指令執(zhí)行后,AX=26BFH26§3-18086的尋址方式——尋址方式總結(jié)
存儲器操作數(shù)尋址方式總結(jié):
▲帶方括號的地址表達(dá)式必須遵循下列規(guī)則:
1.立即數(shù)可以出現(xiàn)在方括號內(nèi),表示直接地址,但要加上DS:如DS:[2000H],否則會出現(xiàn)警告。
2.只有BX、BP、SI、DI這四個寄存器可以出現(xiàn)在[]內(nèi),它們可以單獨(dú)出現(xiàn),也可以相加,或與常數(shù)相加,但:BX和BP寄存器、SI和DI寄存器不允許出現(xiàn)在同一個[]內(nèi)。
3.方括號表示相加,下面幾種寫法等價:6[BX][SI];[BX+6][SI];[BX+SI+6]
27§3-18086的尋址方式——尋址方式總結(jié)4.不同寄存器對應(yīng)不同的隱含段基址:
SS:BP;DS:BX,SI,DI;物理地址=16×相應(yīng)段基址+EAEA=BX/BP+SI/DI+DISP
(注:可以是單一寄存器、兩個寄存器組合、和DISP組合;DISP也可以為0)▲可用段超越前綴修改段基址。28§3-18086的尋址方式——其它八、其它1.隱含尋址:指令中不指明操作數(shù),但有隱含規(guī)定的尋址方式。如:指令DAA;對寄存器AL中的數(shù)據(jù)進(jìn)行十進(jìn)制數(shù)調(diào)整,結(jié)果仍保留在AL中。2.I/O端口尋址:8086有直接端口和間接端口兩種尋址方式。
▲直接端口尋址方式:指令直接提供端口地址——8位立即數(shù)??稍L問端口00~FFH,即256個端口。例如,INAL,63H;表示將瑞口63H中的內(nèi)容送進(jìn)AL寄存器
▲間接端口尋址方式:端口地址由寄存器DX提供,端口號為0000—FFFFH。29§3-18086的尋址方式——其它
例如,MOV DX,213H ;DX=口地址號213H INAL,DX ;AL←端口213H中的內(nèi)容3.一條指令有多種尋址方式:
源操作數(shù)可以使用上述介紹的各種尋址方式。目的操作數(shù)可以使用除立即尋址方式以外的各種尋址方式。例3.17MOV[BX],AL解:設(shè):BX=3600H,DS=1000H,AL=05H則:目的操作數(shù)的物理地址=16×DS+BX=13600H指令執(zhí)行結(jié)果為(13600H)=05H。4.轉(zhuǎn)移類指令尋址(程序?qū)ぶ罚?0§3-2指令的機(jī)器碼表示方法(不作要求)一、機(jī)器語言指令的編碼目的和特點(diǎn)§3-2指令的機(jī)器碼表示方法——目的和特點(diǎn)
匯編語言源程序:用匯編語言(即主要由指令系統(tǒng)組成的語言)編寫的程序。編譯程序執(zhí)行源程序機(jī)器碼運(yùn)算結(jié)果指令通常由操作碼和操作數(shù)兩部分組成?!?086指令系統(tǒng)采用變長指令,指令的長度可由1~6字節(jié)組成。31§3-2指令的機(jī)器碼表示方法——指令代碼的編制
二、機(jī)器語言指令代碼的編制其中,第一個字節(jié):▲高6位是操作碼100010;▲W位說明傳遞數(shù)據(jù)的類型是字(W=l)還是字節(jié)(W=0);▲D位標(biāo)明數(shù)據(jù)傳送的方向:D=0,數(shù)據(jù)從寄存器傳出;D=1,數(shù)據(jù)傳至寄存器;1.編碼格式說明(MOV指令為例):
32§3-2指令的機(jī)器碼表示方法——指令代碼的編制
第二個字節(jié):▲REG字段:寄存器號,用3位編碼尋址8種不同的寄存器,再根據(jù)第一字節(jié)中W位,選擇8位或16位寄存器。如表3-l所示。(對段寄存器,REG字段占2位)
例如:REG=010,W=1時表示尋址DX寄存器;REG=010,W=0時尋址DL寄存器。33§3-2指令的機(jī)器碼表示方法——指令代碼的編制
▲MOD字段和R/M字段:MOV指令的兩個操作數(shù)中有一個必為寄存器,另一個操作數(shù)可能是寄存器,也可能是存儲器單元,由指令代碼的第二個字節(jié)的MOD和R/M字段指定。如表3-2所示。(24種不同的編碼格式,D8表示8位位移量,D16為16位位移量)對指令進(jìn)行編碼時,若包含8位位移量,則在編碼后增加一個宇節(jié)存放位移量disp-L;若包含16位的位移量,則增加2個字節(jié)存放位移量:第3個字節(jié)存放位移量的低字節(jié)disp-L,第4個字節(jié)存放位移量高字節(jié)disp-H。34§3-2指令的機(jī)器碼表示方法——指令代碼的編制
對MOV指令進(jìn)行編碼的幾個示例:2.寄存器間傳送指令的編碼:
例求指令MOVSP,BX的機(jī)器碼解:指令的功能是將BX寄存器的內(nèi)容送到SP寄存器中。從附錄B可知,該指令的操作碼為1000l0;傳送的是字?jǐn)?shù)據(jù),所以w=1;
REG字段:選擇將SP,則REG字段編碼=100;
D位=1,表示數(shù)據(jù)傳至所選的寄存器(SP);
MOD=11,因另一個操作數(shù)BX也是寄存器。從表3-2查得R/M=011。根據(jù)W=l及寄存器名稱為BX,求得指令編碼。35§3-2指令的機(jī)器碼表示方法——指令代碼的編制
3.寄存器與存儲器間傳送指令的編碼
例:求指令MOVCL,[BX+l234H]的機(jī)器碼。解:功能:將有效地址為(BX+1234H)存儲單元中的數(shù)據(jù)字節(jié)傳送到CL寄存器中;指令的編碼如圖2-10中所示。第1、2字節(jié)可通過查表得到;第3字節(jié)存放l6位位移量的低字節(jié)34H;第4字節(jié)存放高字節(jié)12H。所以該指令的編碼為8A8F3412H。36§3-2指令的機(jī)器碼表示方法——指令代碼的編制
4.立即數(shù)尋址指令的編碼立即數(shù)尋址的指令:操作碼+1~2個字節(jié)用于存放立即數(shù)據(jù)。
例求指令MOV[BX十2100H],0FA50H的機(jī)器碼。解:指令的功能:將16位立即數(shù)FA50H送到有效地址為(BX+2100H)的字存儲單元中;指令編碼如圖3-11中所示;其中:低字節(jié)50H送列〔BX+2100H〕單元,高字節(jié)FAH送到(BX+2101H)單元;指令中不但有16位立即數(shù),還有16位位移量;查附錄B知,該指令的6字節(jié)編碼為:C787002150FA。37§3-2指令的機(jī)器碼表示方法——指令代碼的編制
5.包含段寄存器的指令的編碼
含有段寄存器的指令,寄存器字段REG占有2位,從表3-1可得,相應(yīng)的編碼為:CS=01,DS=11,ES=00,SS=l0。例求指今MOVDS,AX的機(jī)器碼。解:指令功能:將AX寄存器的內(nèi)容傳送到數(shù)據(jù)段寄存器DS;該指令的編碼格式為:10001110MOD0REGR/M;段寄存器DS的編碼為11,即REG字段為11;另一個操作數(shù)也是寄存器,所以MOD=11,而R/M字段應(yīng)填上AX的三位代碼000;得到該指令的編碼為:8ED8H。
38§3-2指令的機(jī)器碼表示方法——指令代碼的編制
6.段超越前綴指令的編碼該類指令進(jìn)行編碼時,在指令代碼前加一個8位的段超越的綴代碼,代碼的格式為001××110,其中××位表明段超越寄存器,編碼與上面列出的相同。SS:36H、DS:3EH、ES:26H、CS:2EH
39§3-38086的指令系統(tǒng)
§3-38086的指令系統(tǒng)
——
分類
按功能分為以下六類:
數(shù)據(jù)傳送指令
算術(shù)運(yùn)算指令
邏輯運(yùn)算和移位指令
字符串處理指令
控制轉(zhuǎn)移指令
處理器控制指令40介紹具體指令之前,首先介紹一下指令系統(tǒng)中操作數(shù)的種類和含義。REG:通用寄存器(或寄存器);
SREG:段寄存器
Memory:存儲器;
immediate:立即數(shù)41一、數(shù)據(jù)傳送指令注:◎數(shù)據(jù)傳送指令共14條;◎除SAHF和POPF指令外,對標(biāo)志位均沒有影響?!?-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
通用數(shù)據(jù)傳送指令MOVPUSHPOPXCHGXLAT字節(jié)或字的傳送入棧指令出棧指令交換字或字節(jié)表轉(zhuǎn)換輸入輸出指令I(lǐng)NOUT輸入輸出地址目標(biāo)傳送指令LEALDSLES裝入有效地址裝入數(shù)據(jù)段寄存器裝入堆棧段寄存器標(biāo)志傳送指令LAHFSAHFPUSHFPOPF標(biāo)志寄存器低字節(jié)裝入AHAH內(nèi)容裝入標(biāo)志寄存器低字節(jié)標(biāo)志寄存器入棧指令出棧,并送入標(biāo)志寄存器421.通用數(shù)據(jù)傳送指令(GeneralPurposeDataTranfer):§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
⑴MOV傳送指令(Move)
指令格式:MOV目的,源
指令功能:實現(xiàn)CPU的內(nèi)部寄存器間或寄存器與存儲器間的數(shù)據(jù)傳送。43§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
注意:▲指令中至少要有—項明確說明傳送的是字節(jié)還是字;▲IP寄存器不能用作源操作數(shù)或目的操作數(shù);▲立即數(shù)和CS寄存器不能用作目的操作數(shù);▲MOV指令不能在兩個存儲單元之間直接傳送數(shù)據(jù),也不能在兩個段寄存器之間直接傳送數(shù)據(jù)。44§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
MOV指令應(yīng)用舉例:操作數(shù)通常存放在數(shù)據(jù)段中,所以先要定義數(shù)據(jù)段。例如,某個程序的數(shù)據(jù)段:
DATA SEGMENT ;數(shù)據(jù)段開始AREA1 DB14H,3BH;定義字節(jié)變量AREA2 DB3DUP(0);復(fù)制操作ARRAY DW3l00H,01A6H;定義字變量STRING DB‘GOOD’
DATA ENDS ;數(shù)據(jù)段結(jié)束
匯編后,DATA將被賦予一個具體的段地址。各變量將自偏移地址0000H開始依次存放,各符號地址等于它們在數(shù)據(jù)段中的偏移量。AREA1的偏移地址為0000H,AREA2的偏移地址為0002H,ARRAY的偏移地址為0005H,STRING的偏移地址為0009H。45§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
例3.26MOVDX,OFFSETARRAY解:ARRAY的偏移地址DX。(OFFSET:取后面的符號偏移地址的值)設(shè):ARRAY的定義如上圖所示則:DX=0005H例3.27MOVAL,AREA1 ;ALAREA1中的內(nèi)容14H
MOVAREA2,AL ;0002H單元14H
例3.28MOVAX,TABLE[BP][DI]解:將地址為l6×SS+BP+DI+TABLE的字存儲單元中的內(nèi)容送進(jìn)AX。46
§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
⑵PUSH進(jìn)棧指令指令格式:PUSH源
指令功能:數(shù)據(jù)入堆棧
工作過程:SP←SP-2;(SP+1,SP)←源源操作數(shù)要求:可以是16位通用寄存器、段寄存器、存儲器中的數(shù)據(jù)字,但不能是立即數(shù)。
⑶POP出棧指令指令格式:POP目的指令功能:數(shù)據(jù)出堆棧
工作過程:目的←(SP+1,SP);SP←SP+2;目的操作數(shù)要求:可以是16位通用寄存器、段寄存器、存儲單元,但CS不能作目的操作數(shù)?!詈笠豁椄叩刂窏5祝⊿P)壓入彈出棧頂(SS)最大容量64KSP總是指向偶地址單元段址47§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
堆棧指令的工作過程舉例:例3.29設(shè)SS=2000H,SP=40H,BX=3120H,AX=25FEH,依次執(zhí)行下列指令:PUSHBXPUSHAXPOPBX堆棧中的數(shù)據(jù)和SP的變化情況如圖3.14所示。48
§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
⑷XCHG交換指令(Exchange)
指令格式:XCHG目的,源
指令功能:源操作數(shù)、目的操作數(shù)數(shù)據(jù)交換。操作數(shù)要求:交換可以在寄存器之間、寄存器與存儲器之間進(jìn)行;段寄存器不能作為操作數(shù);不能直接交換兩個存儲單元中的內(nèi)容。例3.30
設(shè)AX=2000H,DS=3000H,BX=1800H,(3lA00H)=1995H。則執(zhí)行指令XCHGAX,[BX+200H]后,結(jié)果如何?解:把內(nèi)存中的一個字與AX中的內(nèi)容進(jìn)行交換。源操作數(shù)的物理地址=3000H×10H十1800H十200H=31A00H,指令執(zhí)行后:AX=1995H,(3lA00H)=2000H49
§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
指令格式:XLAT轉(zhuǎn)換表或:XLAT指令功能:AL=DS:[BX+unsignedAL]使累加器(AL)中的一個值變換為內(nèi)存表格中的某一個值,一般用來實現(xiàn)編碼制的轉(zhuǎn)換,即查表功能。XLAT指令使用步驟:使用之前必須先建立一個表格,表格中的內(nèi)容是所需要轉(zhuǎn)換的代碼;將轉(zhuǎn)換表的起始地址裝入BX寄存器;欲查的某項與表頭地址的位移量AL,即表格最多包含256個字節(jié);執(zhí)行XLAT指令后,根據(jù)位移量從表中查到轉(zhuǎn)換后的代碼值A(chǔ)L寄存器中。⑸XLAT表轉(zhuǎn)換指令(TableLookup—Translation)50
§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
例3.31若十進(jìn)制數(shù)字0~9的LED七段碼對照表如下表所示,試用XLAT指令求數(shù)字5的七段碼值。解:程序如下:TABLEDB40H,79H,24H,30H,19H ;建表,表格起始地址為TABLEDB12H,02H,78H,00H,18H ;七段碼存于對TABLE的;位移量為0~9的單元位移 ……………MOV AL,5 ;AL數(shù)字5的位移量MOV BX,OFFSETTABLE ;BX表格首地址XLATTABLE ;查表得:AL=12H十進(jìn)制數(shù)字七段顯示碼十進(jìn)制數(shù)字七段顯示碼040H512H179H602H224H778H330H800H419H918H51
§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
2.輸入輸出指令(InputandOutput):IN指令:指定端口中的數(shù)據(jù)→累加器OUT指令:累加器中的數(shù)據(jù)→指定端口⑴IN輸入指令(Input)
指令格式:
①INAL,端口地址;端口地址(00~FFH)直接包含在IN指令里,或INAX,端口地址;共允許尋址256個端口。直接尋址
②INAL,DX;端口地址>0FFH時,先將端口號送DX寄存器,再執(zhí)行輸入操作。或INAX,DX;共允許尋址64K個端口。間接尋址指令功能:
從8位端口讀入一個字節(jié)到AL寄存器,或從16位端口讀一個字到AX寄存器。注意:16位端口由兩個地址連續(xù)的8位端口組成。52§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
例3.32INAL,0F1H
;AL從F1H端口讀入一個字節(jié)INAX,80H ;AL80H口的內(nèi)容,AH81H口的內(nèi)容MOVDX,310H
;端口地址310H先送入DX中INAL,DX
;AL310H端口的內(nèi)容
53§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
⑵OUT輸出指令(Output)指令格式:①OUT端口地址,AL;端口地址(00~FFH)直接包含在IN指令里,或OUT端口地址,AX;共允許尋址256個端口。直接尋址②OUTDX,AL;端口地址>0FFH時,先將端口號送DX寄存器,;再執(zhí)行輸出操作?;騉UTDX,AX;當(dāng)共允許尋址64K個端口。間接尋址指令功能:將AL中的一個字節(jié)寫到一個8位端口,或把AX中的一個字寫到一個16位端口。注意:對16位端口進(jìn)行輸出操作時,是對兩個連續(xù)的8位端口進(jìn)行輸出操作。54§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
例3.34OUT85H,AL ;85H端口AL內(nèi)容
MOVDX,0FF4H ;端口地址DX=0FF4H OUTDX,AL ;0FF4H端口AL內(nèi)容MOVDX,300H ;DX指向300HOUTDX,AX ;300H端口AL內(nèi)容,301H端口AH內(nèi)容553.地址目標(biāo)傳送指令(AddressObjectTransfers):§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
共三條指令:傳送地址碼。可傳送操作數(shù)的段地址和偏移地址。⑴LEA取有效地址指令(LoadEffectiveAddress)
指令格式:LEA目的,源
指令功能:源操作數(shù)地址的偏移量→目的操作數(shù)所在寄存器
要求:
源操作數(shù):必須是存儲單元;
目的操作數(shù):必須是一個除段寄存器之外的16位寄存器。
注意:與MOV指令的區(qū)別。56§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
例3.35假設(shè)SI=1000H,DS=5000H,(51000H)=1234H
LEABX,[SI]
;執(zhí)行完該指令后,BX=l000H
MOVBX,[SI] ;執(zhí)行完該指令后,BX=1234H例3.36LEABX,TABLE
;可用MOV指令代替LEA指令
MOVBX,OFFSETTABLE ;兩條指令等價。
例3.37某數(shù)組含20個元素,每個元素占一個字節(jié),符號為:0~19。設(shè)DI指向數(shù)組開頭處,把序號為6的元素的偏移地址送到BX中,用什么指令來實現(xiàn)?解:LEABX,6[DI] ;只能用LEA實現(xiàn),不能用MOV57§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
⑵LDS將雙字指針?biāo)偷郊拇嫫骱虳S指令(LoadPointerusingDS)指令格式:LDS 目的,源指令功能:LoadmemorydoublewordintowordregisterandDS其中:前兩個字節(jié)(偏移地址)→指定的目的寄存器;(常用SI寄存器)
后兩個字節(jié)(段地址)→DS寄存器。操作數(shù)要求:源操作數(shù):必須是存儲單元(該單元開始的連續(xù)4個字節(jié)存放一個變量的地址指針);目的操作數(shù):必須是16位寄存器,常用SI寄存器,但不能用段寄存器。58例3.38
設(shè):DS=1200H,(12450H)=0F346H,(12452H)=0A90H。執(zhí)行指令LDSSI,DS:[450H]后,結(jié)果如何?解:SI=0F346H,DS=0A90H59§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
⑶LES將雙字指針?biāo)偷郊拇嫫骱虴S指令(LoadPointerusingES)
指令格式:LES 目的,源指令功能:LoadmemorydoublewordintowordregisterandES.其中:前兩個字節(jié)(偏移地址)→指定的目的寄存器;(常用DI寄存器)
后兩個字節(jié)(段地址)→ES寄存器。
例3.39設(shè):DS=0100H,BX=0020H,(01020H)=0300H,(01022H)=0500H。執(zhí)行指令LESDI,[BX]后,結(jié)果如何?解:DI=0300H,ES=0500H604.標(biāo)志傳送指令(FlagTransfers):4條§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
讀取標(biāo)志指令:LAHF
(5、3、1為任意值)--標(biāo)志寄存器低8位→AH設(shè)置標(biāo)志指令:SAHF--標(biāo)志寄存器低8位←AH把標(biāo)志寄存器的內(nèi)容壓入堆棧:PUSHF從堆棧彈出到標(biāo)志寄存器:POPF1511109876543210OFDFIFTFSFZFAFPFCFAHD7D6D4D2D061§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
⑴LAHF標(biāo)志送到AH指令(LoadAHfromFlag)指令格式:LAHF指令功能:標(biāo)志寄存器SF、ZF、AF、PF和CF
→
AH寄存器的位7、6、4、2和0。注意:◎位5、3、1的內(nèi)容未定義,(一般1位是1,3、5位是0)?!驁?zhí)行這條指令后,標(biāo)志位本身并不受影響。1511109876543210OFDFIFTFSFZFAFPFCFAHD7D6D4D2D062指令英文說明63§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
⑵SAHFAH送標(biāo)志寄存器(StoreAHintoFlags)
指令格式:SAHF指令功能:AH內(nèi)容
→標(biāo)志寄存器。
注意:◎位5、3、1的內(nèi)容未定義,(一般1位是1,3、5位是0)?!驁?zhí)行這條指令后,高位標(biāo)志并不受影響。
1511109876543210OFDFIFTFSFZFAFPFCFAHD7D6D4D2D064指令英文說明65§3-38086的指令系統(tǒng)
——數(shù)據(jù)傳送指令
⑶PUSHF標(biāo)志入棧指令(PushFlagontoStack)指令格式:PUSHF指令功能:整個標(biāo)志寄存器的內(nèi)容
→
堆棧;
修改堆棧指針,使SPSP-2;指令執(zhí)行后對標(biāo)志位無影響。⑷POPF標(biāo)志出棧指令(PopFlagoffStack)
指令格式:POPF指令功能:堆棧指針SP所指的一個字
→
標(biāo)志寄存器PSW;
修改堆棧指針,使SPSP+2。
66注意:▲要成對使用PUSHF和POPF,可對標(biāo)志寄存器進(jìn)行保存和恢復(fù)。▲常用在:過程(子程序)調(diào)用,中斷服務(wù)程序,對主程序的狀態(tài)(即標(biāo)志位)進(jìn)行保護(hù)?!部捎脕砀淖冏粉櫂?biāo)志TF。在8086指令系統(tǒng)中沒有直接改變TF(D8位)的指令。67作業(yè)120~121頁,2、3、6、868§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令二、算術(shù)運(yùn)算指令算術(shù)運(yùn)算指令可處理4種類型的數(shù)無符號二進(jìn)制整數(shù)帶符號二進(jìn)制整數(shù)無符號壓縮十進(jìn)制整數(shù)(PackedDecimal)無符號非壓縮十進(jìn)制整數(shù)(UnpackedDecimal)
一個8位二進(jìn)制數(shù)可看成4種不同類型的數(shù),所表示的數(shù)值亦不同。69§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令數(shù)的表示:
二進(jìn)制數(shù):可以是8位或16位,若是帶符號數(shù),則用補(bǔ)碼表示。壓縮十進(jìn)制數(shù):一個字節(jié)中存放兩個BCD碼十進(jìn)制數(shù)。非壓縮十進(jìn)制數(shù):—個字節(jié)的低半字節(jié)存放十進(jìn)制數(shù),高半字節(jié)為全零。例如,對十進(jìn)制數(shù)字58:壓縮十進(jìn)制數(shù)表示:只需一個字節(jié),即01011000B;非壓縮十進(jìn)制數(shù)表示:需兩個字節(jié),即00000101B
和00001000B。表3.54種數(shù)的類型的表示方法二進(jìn)制碼(B)十六進(jìn)制(H)無符號二進(jìn)制(D)帶符號二進(jìn)制(D)非壓縮十進(jìn)制壓縮十進(jìn)制00000111077+77071000100189137-119無效8911000101C5197-59無效無效70§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令注意:算術(shù)運(yùn)算指令處理的數(shù)都必須是有效的,否則會導(dǎo)致錯誤的結(jié)果。8086/8088指令系統(tǒng)提供:加、減、乘、除四種基本運(yùn)算指令:處理無符號或帶符號的8位/16位二進(jìn)制數(shù)的算術(shù)運(yùn)算;調(diào)整操作指令:進(jìn)行壓縮的或非壓縮的十進(jìn)制數(shù)的算術(shù)運(yùn)算;絕大部分算術(shù)運(yùn)算指令都影響狀態(tài)標(biāo)志位。加法和減法運(yùn)算指令:帶符號數(shù)和無符號數(shù)的加法和減法的運(yùn)算可以用同一條加法或減法指令來完成。乘法和除法運(yùn)算:分別設(shè)置不同乘、除法指令。71§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令表3.6算術(shù)運(yùn)算指令的分類加法ADDADCINCAAADAA加法帶進(jìn)位的加法增量加法的ASCII調(diào)整加法的十進(jìn)制調(diào)整減法SUBSBBDECNEGCMPAASDAS減法帶借位的減法減量取補(bǔ)比較減法的ASCII調(diào)整減法的十進(jìn)制調(diào)整乘法MULIMULAAM無符號數(shù)乘法整數(shù)乘法乘法的ASCII調(diào)整除法DIVIDIVAADCBWCWD無符號數(shù)除法整數(shù)除法除法的ASCII調(diào)整把字節(jié)轉(zhuǎn)換成字把字轉(zhuǎn)換成雙字721.加法指令(Addition)⑴ADD加法指令(Addition)
指令格式:ADD目的,
源指令功能:目的
源
十
目的
⑵ADC帶進(jìn)位的加法指令(AdditionwithCarry)
指令格式:ADC目的,
源
指令功能:目的
源
十
目的
十CF操作數(shù)的要求:(包括上兩條指令)源操作數(shù):可以是寄存器、存儲器、立即數(shù);目的操作數(shù):只能用寄存器、存儲單元。注意:
★源、目的操作數(shù)不能同時為存儲器,且類型必須一致,即都是字節(jié)或字;
★這兩條指令影響的標(biāo)志位為:CF、OF、PF、SF、ZF和AF。§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令73§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令
例3.40兩種加法指令的實例ADDAL,18H
;ALAL十18H
ADCBL,CL
;BLBL十CL十CFADCAX,DX
;AXAX十DX十CFADDAL,COST[BX] ;AL內(nèi)容和地址=DS:(COST+BX)的存儲字節(jié)相加,;結(jié)果送ALADDCOST[BX],BL
;將BL與物理地址=DS:(COST十BX)的存儲字節(jié)相加,;結(jié)果留在該存儲單元中
例3.41用加法指令對兩個8位16進(jìn)制數(shù)5EH和3CH求和,并分析加法運(yùn)算指令執(zhí)行后對標(biāo)志位的影響。解:MOVAL,5EH ;AL=5EH(94)MOVBL,3CH ;BL=3CH(60)ADDAL,BL ;結(jié)果AL=9AH74§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令討論:
ADD對標(biāo)志位的影響▲兩個數(shù)的相加過程:010111105EH=94
+00111100即:+3CH=60100110109AH=154運(yùn)算后標(biāo)志位:ZF=0,AF=1,CF=0,SF=l,PF=1,OF=1?!鴮?biāo)志的解釋:人為決定①兩個加數(shù)都看成無符號數(shù)時,運(yùn)算結(jié)果為9AH,即十進(jìn)制數(shù)154。在這種情況下,SF和OF都沒有意義,我們只關(guān)心ZF和CF標(biāo)志,在BCD碼運(yùn)算或奇偶校驗時才考慮AF或PF標(biāo)志。②兩個加數(shù)都當(dāng)成帶符號數(shù)時,符號標(biāo)志SF和溢出標(biāo)志OF很重要,而進(jìn)位標(biāo)志CF沒有意義。帶符號數(shù)能表示的范圍-128~+127,而本例中,兩個正數(shù)94和60相加,其和為154,由于154超過了范圍,即產(chǎn)生了溢出,OF=175§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令⑶INC增量指令(Increment)指令格式:INC目的指令功能:目的目的十1操作數(shù)的要求:通用寄存器、內(nèi)存。注意:▲這條指令主要用在循環(huán)程序中,對地址指針和循環(huán)計數(shù)器等進(jìn)行修改;▲指令執(zhí)行后影響AF、OF、PF、SF和ZF,但不影響進(jìn)位標(biāo)志CF。▲該指令只有一個操作數(shù)時,如果要使內(nèi)存單元的內(nèi)容增1,程序中必須說明該存儲單元是字還是字節(jié)。INC指令的兩個應(yīng)用例子:例3.42INCBL ;BL寄存器中內(nèi)容增1
INCCX ;CX寄存器中內(nèi)容增1
例3.43
INCBYTEPRR[BX];內(nèi)存字節(jié)單元內(nèi)容增1INCWORDPTR[BX];內(nèi)存字單元內(nèi)容增1其中:PTR為類型說明符,前面加BYTE說明操作數(shù)類型為字節(jié),加WORD則說明操作數(shù)類型為字。76§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令⑷AAA加法的ASCII調(diào)整指令(ASCIIAdjustforAddition)指令格式:AAA指令功能:將AL寄存器中的運(yùn)算結(jié)果調(diào)整為1位非壓縮十進(jìn)制數(shù),仍保留在AL。如果AF=1,表示向高位有進(jìn)位,則進(jìn)到AH寄存器中。使用前提:用ADD或ADC指令對兩個非壓縮十進(jìn)制數(shù)或ASCII碼表示的十進(jìn)制數(shù)作加法,運(yùn)算結(jié)果已存在AL。(注:非壓縮十進(jìn)制數(shù)的高4位為全0,低4位為十進(jìn)制數(shù)字0~9。例如,將9表示成00001001)
調(diào)整過程:若AL低4位>9或AF=1
則:①ALAL十6②用與操作(∧)將AL高4位清0③AF置1,CF置1,AHAH十l
否則:將AL寄存器的高4位清0。77§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令例3.44若AL=BCD9,BL=BCD5,求兩數(shù)之和。解:設(shè)AH=0,則運(yùn)算過程如下:
ADD AL,BL ; 00001001……09H ;+ 00000101……05H ;______________________________ AAA ; 00001110……低4位>9 ;+ 00000110……加6調(diào)整 ;______________________________ ; 00010100 ;∧ 00001111……清高4位 ;______________________________ ; 00000100……AL=04H ; CF=1,AF=1,AH=1 ;結(jié)果為AX=0104H,表示非壓縮十進(jìn)制數(shù)14
ASCII碼表示的十進(jìn)制數(shù),高半字節(jié)均為3,運(yùn)算時需用AND指令將它屏蔽。只要使用AAA指令,可以不必屏蔽高半字節(jié),便能在AX中得到一個正確的非壓縮十進(jìn)制數(shù)。78§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令例3.45求ASCII碼表示的數(shù)9(39H)與5(35H)之和。解:設(shè)AH=0,則運(yùn)算過程如下:
MOV AL,‘9’ ;AL=39H MOV BL,‘5’ ;BL=35H ADD AL,BL ; 00111001……‘9’ ;+ 00110101……‘5’ ;______________________________ AAA ; 01101110……低4位>9 ;+ 00000110……加6調(diào)整 ;______________________________ ; 01110100 ;∧ 00001111……清高4位 ;______________________________ ; 00000100……AL=4 ; CF=1,AF=1,AH=1 ;結(jié)果為AX=0104H,表示非壓縮十進(jìn)制數(shù)14在AAA指令后加上一條“或”指令ORAX,3030H,便使AX中的結(jié)果變成了ACSII碼3134H。79§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令⑸DAA加法的十進(jìn)制調(diào)整指令(DecimalAdjustforAddition)指令格式:DAA指令功能:將兩個壓縮BCD數(shù)相加后的結(jié)果調(diào)整為正確的壓縮BCD數(shù)。使用前提:相加后的結(jié)果必須在AL中,才能使用DAA指令。
調(diào)整過程:①若AL的低4位>9或AF=1,則ALAL十6,對低4位進(jìn)行調(diào)整;②若AL的高4位>9或CF=1,則ALAL十60H,對高4位進(jìn)行調(diào)整,并使CF置1,否則CF置0。80§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令例3.46若AL=BCD38,BL=BCDl5,求兩數(shù)之和。解:運(yùn)其過程如下: ADD AL,BL ; 00111000……38H ;+ 00010101……15H ;______________________________ DAA ; 01001101……低4位>9 ;+ 00000110……加6調(diào)整 ;______________________________ ; 01010011……AL=53H ;結(jié)果為:AL=BCD53,CF=0調(diào)整過程:①若AL的低4位>9或AF=1,則ALAL十6,對低4位進(jìn)行調(diào)整;②若AL的高4位>9或CF=1,則ALAL十60H,對高4位進(jìn)行調(diào)整,并使CF置1,否則CF置0。81§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令例3.47若AL=BCD88,BL=BCD49,求兩數(shù)之和。解:運(yùn)算過程為: ADD AL,BL ; 10001000……88H ;+ 01001001……49H ;______________________________ DAA ; 11010001……AF=1,低4位<9 ;+ 00000110……加6調(diào)整 ;______________________________ ; 11010111……調(diào)整后,高4位>9 ;+ 01100000……加60H調(diào)整 ;______________________________ ; 00110111……AL=37H ;結(jié)果為:AL=BCD37,CF=1調(diào)整過程:①若AL的低4位>9或AF=1,則ALAL十6,對低4位進(jìn)行調(diào)整;②若AL的高4位>9或CF=1,則ALAL十60H,對高4位進(jìn)行調(diào)整,并使CF置1,否則CF置0。82§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令2.減法指令(Subtraction)
⑴SUB減法指令(Subtraction)指令格式:SUB目的,源指令功能:目的目的-源例3.48SUBAX,BX ;AXAX—BX
SUBDX,1850H ;DXDX—1850H
83§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令⑵SBB帶借位的減法指令(SubtractwithBorrow)指令格式:SUBB目的,源指令功能:目的目的-源-CF(SBB主要用于多字節(jié)減法中)例3.49SUBBAL,CL ;ALAL-CL-CF
⑶DEC減量指令(Decrement)指令格式:DEC目的指令功能;目的目的一l例3.50DECBX ;BXBX—1DECWORDPTR[BP] ;堆棧段中位于[BP]偏置處的字減184§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令⑷NEG取負(fù)指令(Negate)指令格式:NEG 目的指令功能:目的0-目的,即:對目的操作數(shù)取負(fù)例3.51NEGAX ;將AX中的數(shù)取負(fù)
NEGBYTEPTR[BX] ;對數(shù)據(jù)段中位于[BX]偏置處的字節(jié)取負(fù)
⑸CMP比較指令(Compare)
指令格式:CMP 目的,源指令功能:目的-源
注意:結(jié)果不回送到目的操作數(shù)中,僅反映在標(biāo)志位上。
用途:用在比較兩個數(shù)大小又不破壞原操作數(shù)的場合。
例3.52CMPAL,80H;AL與80H作比較
CMPBX,DATA1;BX與數(shù)據(jù)段中偏移量為DATA1處的字比較
85§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令減法指令小結(jié):(上述五種指令都做減法運(yùn)算)①對于雙操作數(shù)指令(SUB、SBB、CMP):▲源操作數(shù)可以是寄存器、存儲器或立即數(shù);▲目的操作數(shù)可以是寄存器、存儲器,但不能為立即數(shù);▲兩個操作數(shù)不能同時為存儲器。②對于單操作數(shù)指令(DEC、NEG):▲目的操作數(shù)可以是寄存器、存儲器,但不能為立即數(shù);▲如果是存儲器操作數(shù),還必須說明其類型是字節(jié)還是字。③運(yùn)算之后,除DEC指令不影響CF標(biāo)志外,它們均影響OF、SF、ZF、AF、PF和CF標(biāo)志。④在減法操作后,如果源操作數(shù)大于目的操作數(shù),需要借位時,進(jìn)位/借位標(biāo)志CF將被置1。
86§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令
例3.53設(shè)AL=10110001B,DL=01001010B,求AL-DL。解:SUBAL,DL;與加法操作一樣,對結(jié)果的解釋取決于參與運(yùn)算的數(shù)的性質(zhì)運(yùn)算過程如下:
二進(jìn)制減法 當(dāng)成無符號數(shù) 當(dāng)成帶符號數(shù) 10110001 177 - 79- 01001010 -74 -)+74---------------------- ------------- ----------------- 01100111 103 +103 運(yùn)算后標(biāo)志位:ZF=0,AF=1,CF=0,SF=0,PF=0,OF=1討論:▲兩數(shù)為無符號數(shù):表示177與74的差是103。CF=0表示沒有借位,SF和OF無意義。▲兩數(shù)為帶符號數(shù):表示-79-(+74),結(jié)果應(yīng)為-153。但結(jié)果卻為正數(shù)(103),這是由于-153溢出造成的。此時,SF和OF有重要意義。
87§3-38086的指令系統(tǒng)
——算術(shù)運(yùn)算指令⑹AAS減法的ASCII調(diào)整指令(ASCIIAdjustforSubtraction)指令格式:AAS指令功能:將AL寄存器中的運(yùn)算結(jié)果調(diào)整為正確的非壓縮,十進(jìn)制數(shù)之差,仍保留在AL中。
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版簡單的土石方承包合同范本
- 臨時安保服務(wù)定制協(xié)議:2024年標(biāo)準(zhǔn)版B版
- 二零二五年跨境電商平臺合作銷售合同3篇
- 個性化制作服務(wù)費(fèi)及銷售權(quán)合同(2024版)版
- 二零二五年度高端房地產(chǎn)信托借款服務(wù)合同3篇
- 2025年度企業(yè)社會責(zé)任報告編輯服務(wù)合同范本3篇
- 天津城市職業(yè)學(xué)院《鑄造工藝》2023-2024學(xué)年第一學(xué)期期末試卷
- 蘇州大學(xué)應(yīng)用技術(shù)學(xué)院《生物工程單元操作原理》2023-2024學(xué)年第一學(xué)期期末試卷
- 四川鐵道職業(yè)學(xué)院《游戲治療》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五年度門窗安裝與建筑一體化設(shè)計合同協(xié)議3篇
- 顧客滿意度評價表范文
- 細(xì)胞骨架(細(xì)胞生物學(xué))課件
- 電磁閥培訓(xùn)(精選)課件
- A彌漫大b細(xì)胞淋巴瘤護(hù)理查房
- 維保移交協(xié)議范本
- 初一上學(xué)期期末測試卷英語
- 上海沃陸變頻器VL600型變頻器說明書概要
- 2023年高考物理一輪復(fù)習(xí):拋體運(yùn)動與圓周運(yùn)動(附答案解析)
- VRV空調(diào)技術(shù)要求和質(zhì)量標(biāo)準(zhǔn)
- 第二講VSP地震勘探
- 干砌石護(hù)坡工程施工組織設(shè)計方案
評論
0/150
提交評論