版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、1,第三章8086的尋址方式和指令系統(tǒng),3.18086指令格式和尋址方式3.38086指令系統(tǒng),教學(xué)重點,2,3.18086指令格式和尋址方式,3.1.1、指令格式3.1.2、尋址方式,3,3.1.1指令格式,標(biāo)號:,;注釋,標(biāo)號:是該指令所在地址的名字,其后必須跟“:”,可缺省操作碼:指示計算機執(zhí)行什么操作指令有單操作數(shù)、雙操作數(shù)和無操作數(shù)之分源操作數(shù)/目的操作數(shù)加注釋使程序容易讀懂,前加“;”,4,3.1.2尋址方式,一尋址方式和有效地址的概念二各種尋址方式三存儲器尋址時的約定,5,一尋址方式和有效地址的概念,尋址方式就是尋找指令中的操作數(shù)的方式。8086/8088指令中的操作數(shù)的3種存放
2、位置:操作數(shù)就在指令中,立即數(shù),立即尋址。某寄存器中,寄存器尋址。內(nèi)存的數(shù)據(jù)區(qū)中,存儲器尋址。,6,有效地址(EA):存儲器尋址時,指令的操作數(shù)部給出的地址是段內(nèi)偏移地址,也稱有效地址。EA包括:基址寄存器內(nèi)容;變址寄存器內(nèi)容;位移量;比例因子計算方法:EA=基址寄存器+(變址寄存器*比例因子)+位移量BX,BPSI,DI10,8,16例:(BX)=2000H,(SI)=1000H,偏移量=0250H,則EA=2000H+1000H+0250H=3250H,7,二各種尋址方式,8086/8088的尋址方式有8種:1立即數(shù)尋址(Immediateaddressing)2寄存器尋址(Registe
3、raddressing)3存儲器尋址(Memoryaddressing)直接尋址(Directaddressing)寄存器間接尋址(RegisterIndirectaddressing)寄存器相對尋址(Registerrelativeaddressing)基址變址尋址(Basedindexedaddressing)相對基址變址尋址(Relativebasedindexedaddressing),8,1立即數(shù)尋址,例如:MOVAX,1234H,操作數(shù)就包含在指令中,作為指令的一部分,跟在操作碼后。立即數(shù)可以是8位,也可以是16位。如是16位,按“高高低低”原則存放。主要用于賦初值。,注:立即數(shù)不
4、能作目的操作數(shù)。以AF打頭的數(shù)字,前面要加一個0,如MOVAX,0FF00H,9,2寄存器尋址,注意:源、目的操作數(shù)的長度一致,操作數(shù)包含在某寄存器中,指令中指定寄存器名稱。對于16位操作數(shù),寄存器可以是AX、BX、CX、DX、SI、DI、SP和BP等;對于8位操作數(shù),寄存器可以是AL、AH、BL、BH、CL、CH、DL和DH。不需要訪存來取得操作數(shù),所以速度較快。例如:MOVSI,AXMOVAL,DH,10,3直接尋址,操作數(shù)在存儲器中,指令中直接包含其有效地址EA。操作數(shù)一般在DS段中,若對其它段中的數(shù)據(jù)尋址,要在指令中加段前綴指出段寄存器名,這稱為段超越。直接尋址的地址放在方括號內(nèi),在源
5、程序中常用變量名表示。,11,例:(1)MOVAX,2000H將DS段中的2000H和2001H單元內(nèi)容分別送AL和AH(2)MOVAX,ES:2000H將ES段中的2000H和2001H單元內(nèi)容分別送AL和AH直接尋址中存儲器操作數(shù)的有效地址也可用變量名的形式給出。例:VALUEDB12HMOVAL,VALUE或MOVAL,VALUE,段超越,12,例如:MOVAX,1234H;(DS)=5000HMOVAX,ES:1234H,13,4寄存器間接尋址,操作數(shù)在存儲器中,有效地址EA=寄存器。若以SI、DI、BX間接尋址,則默認(rèn)DS的內(nèi)容作為段地址。若以BP間接尋址,則默認(rèn)SS的內(nèi)容作為段地址
6、。該尋址方式可用于表格處理,在處理完表中的一項后,修改指針寄存器的內(nèi)容就可以處理表中的另一項。寄存器間接尋址時,寄存器名一定要放在方括號中。MOVAX,SI;寄存器間接尋址MOVAX,SI;寄存器尋址,14,例如:MOVAX,SI假設(shè):(DS)=5000H,(SI)=1234H,15,5寄存器相對尋址,操作數(shù)的有效地址EA=基址或變址寄存器+位移量基址寄存器為BP、BX,BX以DS作為默認(rèn)段寄存器,BP以SS作為默認(rèn)段寄存器。變址寄存器為SI、DI,以DS作為默認(rèn)段寄存器位移量在指令中給出,位移量可以是8位或16位的。書寫時寄存器名要放在方括號中,位移可不寫在方括號中。MOVAX,BX+3MO
7、VAX,3SI,16,例如:MOVAX,BP+1223H假設(shè):(SS)=5000H,(BP)=3678H,17,例如:MOVAX,SI+1223H假設(shè):(DS)=5000H,(SI)=3678H,18,6基址變址尋址,操作數(shù)的有效地址:EA=基址寄存器+變址寄存器一般以基址寄存器來決定默認(rèn)寄存器。可以使用段超越。該尋址方式主要用于二維數(shù)組。用基址寄存器存放數(shù)組首地址,而用變址寄存器來定位數(shù)組中的各元素。下面兩種表示方法是等價的:MOVAX,BX+DIMOVAX,DIBX,19,例如:MOVAX,BX+DI假設(shè):(DS)=5000H,(BX)=1223H,(DI)=54H,20,7相對基址變址尋
8、址,又叫帶位移量的基址變址尋址:EA=基址寄存器+變址寄存器+位移量一般以基址寄存器來決定默認(rèn)寄存器。該尋址方式也主要用于二位數(shù)組操作,位移量即為數(shù)組起始地址。下面四種表示方法是等價的:MOVAX,BX+DI+1234HMOVAX,1234HBX+DIMOVAX,1234HDIBXMOVAX,1234HBXDI,21,例如:MOVAX,BX+DI-2假設(shè):(DS)=5000H,(BX)=1223H,(DI)=54H,22,存儲器尋址時的約定,程序只能在CS段、堆棧操作數(shù)只能在SS段、目的串操作數(shù)只能在ES;其他操作雖然也有默認(rèn)段,但允許段超越。,23,1、給定(BX)=637DH,(SI)=2
9、A9BH,位移量D=7237H,試確定在以下各種尋址方式下的有效地址是什么?(1)立即尋址(2)直接尋址(3)使用BX的寄存器尋址(4)使用BX的間接尋址(5)使用BX的寄存器相對尋址(6)基址變址尋址(7)相對基址變址尋址2、假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,數(shù)據(jù)段中變量名VAL的偏移地址值為0050H,試指出下列源操作數(shù)字段的尋址方式是什么?其物理地址值是多少?(1)MOVAX,0ABH(2)MOVAX,BX(3)MOVAX,100H(4)MOVAX,VAL(5)MOVAX,BX(6)MO
10、VAX,ES:BX(7)MOVAX,BP(8)MOVAX,SI(9)MOVAX,BX+10(10)MOVAX,VALBX(11)MOVAX,BXSI(12)MOVAX,VALBXSI,24,3.38086/8088指令系統(tǒng),3.3.1數(shù)據(jù)傳送類指令3.3.2算術(shù)運算類指令3.3.3邏輯運算與移位指令3.3.4串操作指令3.3.5控制轉(zhuǎn)移類指令3.3.6處理器控制類指令,25,3.3.1數(shù)據(jù)傳送類指令,一、通用數(shù)據(jù)傳送類指令二、地址傳送指令三、標(biāo)志位傳送指令四、輸入輸出數(shù)據(jù)傳送指令I(lǐng)N/OUT,26,一、通用數(shù)據(jù)傳送類指令,1.MOV傳送指令2.堆棧操作指令PUSH/POP3.交換指令XCHG4
11、.查表轉(zhuǎn)換指令XLAT(或稱換碼指令),27,1.MOV指令,指令格式:MOVDST,SRC功能:將源操作數(shù)SRC送至目的操作數(shù)DST。SRC和DST可以是字或字節(jié),兩者必須等長。源操作數(shù)可以是通用寄存器、段寄存器、存儲器以及立即數(shù);目的操作數(shù)可以是通用寄存器、段寄存器(CS除外)或存儲器。,28,注意:立即數(shù)和段寄存器CS不能作為目標(biāo)操作數(shù);立即數(shù)不能直接傳送到段寄存器;兩個存儲單元之間不能直接傳送數(shù)據(jù);兩個段寄存器之間不能直接傳送數(shù)據(jù)。,29,MOVAL,BL;通用寄存器之間傳送字節(jié)數(shù)據(jù)MOVDS,AX;通用寄存器與段寄存器之間傳送數(shù)據(jù)MOVAX,0FF3BH;立即數(shù)傳送到通用寄存器MOV
12、AL,1000H;通用寄存器與存儲器之間傳送數(shù)據(jù)MOVBP+DI,ES;段寄存器與存儲器之間傳送數(shù)據(jù)MOVAX,DATA_SEGMOVDS,AX段地址必須通過寄存器如AX寄存器送到DS寄存器。,MOV指令舉例,30,MOVAL,E把立即數(shù)(字符E的ASCII碼)送到AL寄存器。MOVBX,OFFSETTABLE把TABLE的偏移地址(而非內(nèi)容)送到BX寄存器。其中OFFSET為屬性操作符,表示把后面符號地址的值(不是內(nèi)容)作為操作數(shù)。MOVAX,YBPSI把地址為16*(SS)+(BP)+(SI)+位移量Y的存儲單元的內(nèi)容送給AX寄存器。,31,(1)OPR1與OPR2位數(shù)匹配;MOVAL,B
13、XMOVAL,BL(2)立即數(shù)只能作源操作數(shù),不能作目的操作數(shù)。MOV5H,ALMOVAL,5H(3)、不能直接在兩個存儲單元之間進行數(shù)據(jù)交換,必須用內(nèi)部寄存器作為過渡傳送數(shù)據(jù)。如:MOV3000H,2000HMOVAL,2000HMOV3000H,ALMOVBX,SIMOVBX,SI,練習(xí),32,(4)不能用立即數(shù)直接對段寄存器賦值,必須用內(nèi)部寄存器或存儲單元作為過渡。也不允許在兩段寄存器之間直接傳送數(shù)據(jù),但可以由段寄存器向內(nèi)部寄存器或存儲單元傳送數(shù)據(jù)。MOVDS,2000HMOVDX,2000HMOVDS,DX(5)CS和IP不能作為目的操作數(shù)。(6)MOV指令不影響標(biāo)志位。,33,2.堆
14、棧操作指令PUSH/POP,在8086/8088系統(tǒng)中,堆棧是一段RAM區(qū)域。棧底的一端地址較大,棧頂?shù)囊欢说刂份^小。段基址在SS中,SP始終指向棧頂。堆棧操作始終遵守“FILO”原則,數(shù)據(jù)的存入和取出都在棧頂進行。在8086/8088系統(tǒng)中,PUSH/POP以字為單位。堆棧的主要用途:(1)現(xiàn)場和返回地址的保護(2)寄存器內(nèi)容的保護(3)傳遞參數(shù)(4)存儲局部變量,34,指令格式:PUSHSRC;壓入堆棧指令PUSHPOPDST;彈出堆棧指令POP功能:PUSH指令使SP-2SP,然后將16位的源操作數(shù)壓入堆棧,先高位后低位。源操作數(shù)可以是通用寄存器、段寄存器和存儲器。(SP)(SP)2,(
15、SP)+1,(SP)(SRC)POP指令與PUSH指令相反,它從棧頂彈出16位操作數(shù)到目標(biāo)操作數(shù),同時修改SP+2SP,使SP指向新的棧頂。目標(biāo)操作數(shù)可以是通用寄存器、段寄存器(CS除外)或存儲器。(DST)(SP)+1,(SP),(SP)(SP)+2,35,注意:(1)堆棧數(shù)據(jù)的存取必須以字為單位。PUSHCLPUSHCX(2)不能用立即數(shù)作操作數(shù)。(3)可以指定段寄存器作操作數(shù),但POP指令不能用CS段寄存器。(4)先進后出。PUSHDSPUSHESPOPESPOPDS(5)都不影響標(biāo)志位。,36,PUSHAXPOPAX,37,SP-2SP,例如:PUSHAX;,38,3.交換指令XCHG
16、,指令格式:XCHGDST,SRC功能:將源操作數(shù)SRC的內(nèi)容與目的操作數(shù)DST的內(nèi)容交換。操作數(shù)同時是字或字節(jié)。源操作數(shù)可以是通用寄存器、存儲器;目的操作數(shù)可以是通用寄存器、存儲器。注意:不能在兩個存儲單元之間直接交換數(shù)據(jù);段寄存器和立即數(shù)不能作為操作數(shù)。舉例:MOVAX,2244H;AX=2244HMOVBX,3366H;BX=3366HXCHGAX,BX;交換后,AX=3366H,BX=2244H,39,4.查表轉(zhuǎn)換指令XLAT(或稱換碼指令),指令格式:XLAT或XLAT轉(zhuǎn)換表;隱含寄存器為BX,AL功能:完成一個字節(jié)的查表轉(zhuǎn)換。它將數(shù)據(jù)段中偏移地址為BX與AL寄存器之和的存儲單元內(nèi)容
17、送入AL寄存器,即:BX+ALAL。特點:對于一些無規(guī)律的代碼轉(zhuǎn)換特別方便。注意:表的首地址置于BX中,AL中存放對象在表中的相對地址。表中的內(nèi)容則是所需要轉(zhuǎn)換的代碼,表的長度不得超過256個字節(jié)。指令執(zhí)行后,所查找的對象自動存于AL中,BX內(nèi)容保持不變XLAT的操作數(shù)是隱含的,也可用表的首地址名稱來表示。,40,例:數(shù)字09的對應(yīng)的7段LED顯示示代碼為:40H,79H,24H,30H,19H,12H,02H,78H,00H,18H。試用XLAT指令求數(shù)字5的七段碼值。TABELDB40H,79H,24H,30H,19HDB12H,02H,78H,00H,18HMOVBX,OFFSETTAB
18、LEMOVAL,5XLAT;AL=12H,舉例,41,如BX=0040H,AL=0FH,DS=F000H所建立的表格如圖所示。指令XLAT把F0000+0040+0F=F004F的內(nèi)容送AL,所以指令執(zhí)行后AL=2CH即指令把AL中的代碼0FH轉(zhuǎn)換為2CH,42,二、地址傳送指令,1.有效地址(EA)傳送指令LEA(Loadeffectiveaddress)2.地址指針傳送指令LDS(LoadDSwithPointer)LES(LoadESwithPointer),43,1.LEA有效地址(EA)送寄存器指令,指令格式:LEAreg16,SRC;將SRC的有效地址送到指定的寄存器中。注意:MO
19、V指令和LEA指令的區(qū)別:MOV指令傳送操作數(shù)的內(nèi)容。LEA指令傳送操作數(shù)的地址。取源操作數(shù)地址的偏移量。源操作數(shù)必須是存儲單元,目的操作數(shù)必須是16位寄存器且不能是段寄存器。MOVAX,1000H;AX1000HLEAAX,1000H;AX1000HLEABX,BP+SI;BXBP+SILEABX,TABLE與MOVBX,OFFSETTABLE等價。,44,2.LDS(LES)地址指針傳送指令,指令格式:LDS(LES)reg16,SRC執(zhí)行操作:從SRC指定的存儲單元中,取出一個4字節(jié)地址指針,送進一對目的寄存器。其中前兩個字節(jié)(表示變量的偏移地址)送到指令中指定的目的寄存器中,后兩個字節(jié)
20、(表示變量的段地址)送入到DS或ES。注:目的操作數(shù)必須是16位寄存器,LDS常使用SI寄存器,LES常使用DI寄存器,但不能是段寄存器。,45,TABLEDD12345678HLDSBX,TABLEBX5678H,DS1234H,設(shè)DS=1200H,(12450H)=F346H,(12452H)=0A90H執(zhí)行指令LDSSI,450HSIF346H,DS0A90H,舉例,46,三、標(biāo)志位傳送指令,標(biāo)志位傳送指令專門用于對標(biāo)志寄存器(FR)的保護和更新操作。1.標(biāo)志寄存器讀寫指令LAHF(LoadAHwithflags);AHFSSAHF(StoreAHintoflags);FSAH2.標(biāo)志寄
21、存器入棧出棧指令PUSHF(Pushtheflags)POPF(Poptheflags),47,1.標(biāo)志寄存器讀寫指令LAHF/SAHF,FLAG,OF,DF,IF,TF,SF,ZF,AF,PF,CF,0,7,AH,MOVAH,0C1HSAHF;CF=1,PF=0;AF=0,ZF=1,SF=1,指令格式:LAHF/SAHF執(zhí)行操作:AHFSL/FSLAHLAHF把標(biāo)志寄存器的低字節(jié)(含SF、ZF、AF、PF和CF)讀到AH寄存器。SAHF把寄存器AH送至標(biāo)志寄存器的低字節(jié)(含SF、ZF、AF、PF和CF)。,48,2.標(biāo)志寄存器入棧出棧指令PUSHF/POPF,常用在過程調(diào)用和中斷服務(wù)程序的開
22、頭和結(jié)尾處,保護主程序的狀態(tài)。也可利用這兩條指令改變標(biāo)志寄存器中任一位的狀態(tài)。,指令格式:PUSHF執(zhí)行操作:把標(biāo)志寄存器的內(nèi)容壓入堆棧。(SP)(SP)2(SP)+1,(SP)(FS),指令格式:POPF執(zhí)行操作:把當(dāng)前堆棧頂?shù)囊粋€字傳送到標(biāo)志寄存器(FS)(SP)+1,(SP)(SP)(SP)+2,49,8086/8088指令系統(tǒng)中沒有能直接修改TF標(biāo)志位的指令,可用以下程序段來實現(xiàn)TF的改變:PUSHFPOPAX;標(biāo)志寄存器的內(nèi)容送AXORAH,01H;將TF位置1PUSHAXPOPF;AX的內(nèi)容送標(biāo)志寄存器,舉例:,50,四、輸入輸出數(shù)據(jù)傳送指令I(lǐng)N/OUT,指令格式:直接尋址:INA
23、L,port8OUTport8,ALINAX,port8OUTport8,AX間接尋址:INAL,DXOUTDX,ALINAX,DXOUTDX,AX,功能:從/向一個8位端口讀/寫一個8位字節(jié)到AL中;或從/向兩個連續(xù)的8位端口讀/寫一個字到AX中。注意:當(dāng)端口地址小于256時,采用直接尋址方式;當(dāng)端口地址大于或等于256時,采用間接尋址方式,端口地址放在DX中。,專門用于在AX或AL寄存器與I/O端口之間傳送數(shù)據(jù)。,51,舉例,INAX,70H;將70H、71H兩端口的值讀入AX;AL(70H),AH(71H)MOVDX,3F0HINAL,DX;從端口3F0H讀一個字節(jié)到ALINAX,DX;
24、從端口3F0H3F1H讀一個字到AXOUT27H,AL;將1個字節(jié)從AL輸出到端口27HOUTDX,AX;將1個字從AX輸出到DXDX+1指定的端口,52,3.3.2算術(shù)運算類指令,一、二進制算術(shù)運算指令二、符號擴展指令CBW/CWD三、BCD算術(shù)運算指令(十進制調(diào)整指令),53,1)算術(shù)運算的數(shù)據(jù)類型無符號的二進制數(shù)帶符號的二進制數(shù)無符號的壓縮十進制數(shù)(壓縮型BCD碼)無符號的非壓縮十進制數(shù)(非壓縮型BCD碼)壓縮十進制數(shù)只有加/減運算,其余三種數(shù)據(jù)類型都可以進行加、減、乘、除運算。,54,二進制的無符號數(shù)和帶符號數(shù)的長度都可以是8位或16位,但它們所能表示的數(shù)的范圍是不同的。十進制數(shù)以字節(jié)
25、的形式存儲。壓縮十進制數(shù),每個字節(jié)存兩位數(shù)。非壓縮的十進制數(shù),每個字節(jié)存一位數(shù)(低4位)。8086/8088提供調(diào)整操作指令,可方便地進行壓縮或非壓縮十進制數(shù)的算術(shù)運算。,算術(shù)運算類指令共20條,包括加、減、乘、除運算,符號擴展和十進制調(diào)整指令,除符號擴展指令(CBW,CWD)外,都影響標(biāo)志位。,55,一、二進制算術(shù)運算指令,1、加減法指令2、乘除法指令,56,1、加減法指令,(1)加減法指令A(yù)DD/SUB(2)帶進位、借位的加減法指令A(yù)DC/SBB(3)增量和減量指令I(lǐng)NC/DEC(4)取負(fù)指令NEG(5)比較指令CMP,57,(1)加減法指令A(yù)DD/SUB,指令格式:ADDDST,SRCS
26、UBDST,SRC執(zhí)行操作:完成兩個操作數(shù)的加/減運算,結(jié)果送入目標(biāo)操作數(shù)DSTDSTSRC要求:DST只能用寄存器和存儲單元,SRC可以為立即數(shù)。兩個操作數(shù)不能同時為存儲器,且類型必須一致,即都是字節(jié)或字。特點:影響標(biāo)志位舉例:,58,ADDAL,50HADDDI,SIADDBX+DI,AXADDAX,BX+2000HMOVDX,4652HADDDX,0F0F0H46520100011001010010+F0F0+111100001111000010011011101000010ZF=0SF=0CF=1OF=0AF=0,ADD指令實例,59,單字節(jié)和雙字節(jié)數(shù)的表示范圍,8位二進制數(shù)表示的十進
27、制數(shù)的范圍:無符號數(shù):0255符號數(shù):-128+12716位二進制數(shù)表示的十進制數(shù)的范圍:無符號數(shù):065535符號數(shù):-32768+32767,60,符號數(shù)和無符號數(shù)都不溢出,61,無符號數(shù)溢出,62,符號數(shù)溢出,63,符號數(shù)和無符號數(shù)都溢出,64,相加的數(shù)據(jù)根據(jù)編程者的意圖,規(guī)定為帶符號數(shù)或無符號數(shù)。對于無符號數(shù),CF置1,表示溢出。對于帶符號數(shù),OF置1,表示溢出。,65,(2)帶進位、借位的加減法指令A(yù)DC/SBB,指令格式:ADCDST,SRCSBBDST,SRC執(zhí)行操作:DSTDST+SRC+CFDSTDST-SRC-CF特點:影響標(biāo)志位ADC/SBB指令主要用于多字節(jié)運算中。,6
28、6,例4.3計算兩個多字節(jié)十六進制數(shù)之和:3B74AC60F8H+20D59E36C1H=?被加數(shù)和加數(shù)均有5個字節(jié),可以編一個循環(huán)程序?qū)崿F(xiàn)以上運算。假設(shè)已將被加數(shù)和加數(shù)分別存入從DATA1和DATA2開始的兩個內(nèi)存區(qū)。要求相加結(jié)果仍存回以DATA1為首址的內(nèi)存區(qū)。,67,68,69,程序如下:MOVCX,5;設(shè)置循環(huán)次數(shù)MOVSI,0;置位移量初值CLC;清進位CFLOOP:MOVAL,DATA2SI;取一個加數(shù)ADCDATA1SI,AL;和一個被加數(shù)相加INCSI;位移量加1DECCX;循環(huán)次數(shù)減1JNZLOOP;若沒完,轉(zhuǎn)LOOP繼續(xù)HLT;程序暫停,70,舉例:有兩個四字節(jié)數(shù)分別放在自
29、FIRST和SECOND開始的存儲區(qū)中。存放時,最低字節(jié)在地址最低處,則可用以下程序段實現(xiàn)相加。MOVAX,WORDPTRFIRST;取第一個數(shù)的低16位ADDAX,WORDPTRSECOND;與第二個加數(shù)的低16位相加MOVWORDPTRTHIRD,AX;存低16位的和MOVAX,WORDPTRFIRST+2ADCAX,WORDPTRSECOND+2;高16位相加,同時加上CFMOVWORDPTRTHIRD+2,AX;存高16位的和注意:指令中的WORDPTR是定義字變量屬性的偽指令,因AX為16位,而FIRST、SECOND和THIRD為32位(四字節(jié))變量,如不改變屬性,此程序段就存在語
30、法錯誤。,71,(3)增量和減量指令I(lǐng)NC/DEC,該指令執(zhí)行的結(jié)果影響標(biāo)志ZF、SF、OF、PF和AF,但它不影響CF。該指令主要用于調(diào)整指針和計數(shù)器。,指令格式:INCOPRDECOPR執(zhí)行操作:OPROPR1特點:影響標(biāo)志位具體指令:INCregINCmem,72,(4)取負(fù)指令NEG,指令格式:NEGOPRD(寄存器或存儲器)執(zhí)行操作:OPR0-OPR功能:該指令執(zhí)行的效果是改操作數(shù)的符號。特點:NEG指令影響所有狀態(tài)標(biāo)志,對CF標(biāo)志的影響為:若操作數(shù)不是0,則總是使CF置1;否則置0。若對-128或-32768取負(fù),則操作數(shù)無變化,溢出標(biāo)志OF置位。NEGALADDAL,100;這兩
31、條指令實現(xiàn)(100-AL)的運算,73,例內(nèi)存數(shù)據(jù)段存放了200個帶符號數(shù),首地址為TAB1,要求將各數(shù)取絕對值后存入以TAB2為首址的內(nèi)存區(qū)。由于200個帶符號數(shù)中既有正數(shù),又有負(fù)數(shù),因此先要判斷正負(fù)。如為正數(shù),可以原封不動地傳送到另一內(nèi)存區(qū);如為負(fù)數(shù),則需先求補即可得到負(fù)數(shù)的絕對值,然后再傳送。程序如下:,74,LEASI,TAB1;(SI)源地址指針LEADI,TAB2;(DI)目標(biāo)地址指針MOVCX,200;(CX)循環(huán)次數(shù)CHECK:MOVAL,SI;取一個帶符號數(shù)到ALORAL,AL;AL內(nèi)容不變,但影響標(biāo)志JNSNEXT;若(SF)=0,則轉(zhuǎn)NEXTNEGAL;否則取負(fù)NEXT:
32、MOVDI,AL;傳送到目標(biāo)地址INCSI;源地址加1INCDI;目標(biāo)地址加1DECCX;循環(huán)次數(shù)減1JNZCHECK;如不等于零,則轉(zhuǎn)CHECKHLT;停止,75,(5)比較指令CMP,指令格式:CMPOPR1,OPR2執(zhí)行操作:OPR1-OPR2特點:影響標(biāo)志位而不改變操作數(shù)本身,用于比較大小。,若兩操作數(shù)相等,則ZF1,后面接JE或JZ轉(zhuǎn)移指令。若兩操作數(shù)不相等,可在比較指令后,用其他標(biāo)志位來確定哪一個大。(1)、兩無符號數(shù),若CF0,則被減數(shù)減數(shù);若CF1,則被減數(shù),OF0,SF1,負(fù)溢出:OF1,SF0,,76,例4.5在數(shù)據(jù)段從MYDATA開始的存儲單元中分別存放了兩個8位無符號數(shù)
33、,試比較它們的大小,并將大者傳送到MAX單元。程序如下:LEABX,MYDATA;MYDATA偏移地址送BXMOVAL,BX;第一個無符號數(shù)送ALINCBX;BX指向第二個無符號數(shù)CMPAL,BX;兩個數(shù)比較JNCDONE;如CF=0,則轉(zhuǎn)DONEMOVAL,BX;否則,第二個無符號數(shù)送ALDONE:MOVMAX,AL;較大的無符號數(shù)送MAX單元HLT;停止,77,例:設(shè)有兩個64位數(shù)按“高高低低”原則存放在同一個段的兩個緩沖區(qū)DATA1和DATA2中,現(xiàn)需要計算DATA1-DATA2。MOVCX,4;64位分成4個字SUBBX,BX;清指針,同時清CFNEXT:MOVAX,DATA2BX;取
34、減數(shù)SBBDATA1BX,AX;帶借位減INCBX;調(diào)整指針I(yè)NCBXDECCX;是否已處理完4個字?JNZNEXT;沒完繼續(xù)?,78,2、乘除法指令,(1)乘法指令MUL(unsignedMultiply)無符號乘法指令I(lǐng)MUL(sIgnedMultiply)帶符號數(shù)乘法指令(2)除法指令DIV(unsignedDIVision)無符號除法指令I(lǐng)DIV(sIgnedDIVision)帶符號數(shù)除法指令,79,(1)乘法指令MUL/IMUL,指令格式:MULOPR;無符號數(shù)乘法IMULOPR;有符號數(shù)乘法特點:目標(biāo)操作數(shù)隱含規(guī)定執(zhí)行操作:AXALOPR或DX,AXAXOPR,80,乘法運算的操作
35、數(shù)及運算結(jié)果,注:為乘積保留了兩倍于原來操作數(shù)的存儲空間,因而不會溢出。源操作數(shù)可以是寄存器,也可以是存儲單元,但不能是立即數(shù)。當(dāng)源操作數(shù)是存儲單元時,必須在操作數(shù)前加B或W說明。,81,MULAL;AL乘以AL,結(jié)果在AX中MULBX;AX乘以BX,結(jié)果在DX:AX中MULBYTEPTRDI+6;AL乘以存儲器(8位),結(jié)果在AX中MULWORDPTRALPHA;AX乘以存儲器(16位),結(jié)果在DX:AX中,82,如果結(jié)果的高半部分(在AH或DX)為零,則標(biāo)志位(CF)=(OF)=0,否則(CF)=(OF)=1。因此,標(biāo)志位(CF)=(OF)=1,表示AH或DX中包含著乘積的有效數(shù)字。例如:
36、MOVAL,14H;(AL)=14HMOVCL,05H;(CL)=05HMULCL;(AX)=0064H,CF)=(OF)=0,83,帶符號數(shù)的乘法IMUL指令格式如下:IMULsrc;(AX)(AL)(src)(字節(jié)乘法);(DX:AX)(AX)(src)(字乘法)IMUL對標(biāo)志位的影響以及操作過程同MUL。IMUL將兩個操作數(shù)均按帶符號數(shù)處理。這是與MUL的區(qū)別。如果乘積的高半部分僅僅是低半部分符號位的擴展,則狀態(tài)標(biāo)志位(CF)=(OF)=0;否則,高半部分包含乘積的有效數(shù)字而不只是符號的擴展,則(CF)=(OF)=1。,84,(2)除法指令DIV/IDIV,被除數(shù)隱含在AX(除數(shù)是8位)
37、或者DX和AX(除數(shù)是16位)中,除數(shù)可以采用除立即數(shù)外的任意一種尋址方式。指令格式:DIVOPR;無符號數(shù)除法IDIVOPR;有符號數(shù)除法執(zhí)行操作:AXAXOPR(字節(jié)除法)DX,AXDX,AXOPR(字除法)注意:字節(jié)除法,被除數(shù)在AX,商在AL,余數(shù)在AH;字除法,被除數(shù)高位在DX,低位在AX,商在AX,余數(shù)在DX。,85,86,如果除數(shù)為0,或字節(jié)除法商大于FFH,或字除法時商大于FFFFH,則自動產(chǎn)生一個類型號為0的內(nèi)部中斷。DIV使標(biāo)志位SF、ZF、AF、PF、CF和OF的值不確定。不允許兩個字長相等的操作數(shù)相除。如果被除數(shù)和除數(shù)的字長相等,可在除法之前將被除數(shù)的高位擴展8個零或1
38、6個零。,DIV的注意事項,87,例如:DIVBL;AX除以BLDIVCX;DX:AX除以CXDIVBYTEPTRDATA;AX除以存儲器(8位)DIVWORDPTRDI+BX;DX:AX除以存儲器(16位),88,帶符號數(shù)除法指令I(lǐng)DIV指令格式:IDIVsrc;(AL)(AX)/(src)的商(字節(jié)除法);(AH)(AX)/(src)的余數(shù);(AX)(DX:AX)/(src)的商(字除法);(DX)(DX:AX)/(src)的余數(shù)執(zhí)行IDIV指令時,如除數(shù)為0,或字節(jié)除法時AL寄存器中的商超出128+127的范圍,或字除法時AX寄存器中的商超出32768+32767的范圍,則自動產(chǎn)生一個類
39、型為0的中斷。IDIV對狀態(tài)標(biāo)志位的影響與DIV相同。,89,如果被除數(shù)和除數(shù)字長相等,則在IDIV前,必須先用指令CBW或CWD將被除數(shù)的符號位擴展,使之成為16位數(shù)或32位數(shù)。,MOVAX,2000;(AX)=2000CWD;將AX中16位符號數(shù)擴展成為32位,放在DX:AX中MOVBX,421;(BX)=421IDIVBX;(AX)=4(商),(DX)=316(余數(shù))除法結(jié)果得到商為4,余數(shù)為316,余數(shù)的符號與被除數(shù)相同。,IDIV的注意事項,90,二、符號擴展指令CBW/CWD,指令格式:CBW/CWD功能:CBW將AL符號數(shù)的符號擴展到AH中,CWD將AX符號數(shù)的符號擴展到DX中。
40、擴展規(guī)則如下(對帶符號數(shù)):1.若AL80H,AH00H;若AL80H,則AH0FFH;2.若AX8000H,則DX0000H,若AX8000H,則DX0FFFFH特點:不影響標(biāo)志位,91,(a)MOVAL,4FH;(AL)=01001111BCBW;(AH)=00000000B(b)MOVAL,0F4H;(AL)=11110100BCBW;(AH)=11111111B,92,求0BF4H0100H(帶符號數(shù)相除)MOVAX,0BF4HCWD;被除數(shù)擴展為DX,AX=00000BF4HMOVBX,0100HIDIVBX;AX商0BH,DX余數(shù)F4H,例:,93,三、BCD算術(shù)運算指令(十進制調(diào)
41、整指令),1、非壓縮BCD數(shù)算術(shù)運算調(diào)整指令2、壓縮BCD數(shù)算術(shù)運算調(diào)整指令,94,兩類BCD碼:壓縮型BCD碼,非壓縮型BCD碼。用BCD碼進行加、減、乘、除運算:利用二進制數(shù)的運算指令計算,再用專門指令對結(jié)果進行修正(調(diào)整),使之轉(zhuǎn)變?yōu)锽CD碼表示的結(jié)果。,95,結(jié)果正確,這時調(diào)整指令不需要做什么。,96,結(jié)果不正確,因為在進行二進制加法運算時,低4位向高4位有進位,這個進位是按十六進制進行的。因此比正確結(jié)果少6,這時,調(diào)整指令應(yīng)在低4位上加6。,97,加法運算后,低4位若向高4位有進位(即AF=1),調(diào)整指令應(yīng)做加06H處理。,98,57+46=103,99,加法運算后,低4位9時,調(diào)整
42、指令做加06H處理;高4位9時,調(diào)整指令需做加60H處理。加法運算后,當(dāng)CF=1(有進位產(chǎn)生)時,調(diào)整指令應(yīng)做加60H處理。,72+91=163,100,1、非壓縮BCD數(shù)算術(shù)運算調(diào)整指令,(1)加減法調(diào)整指令:加法調(diào)整指令:AAA減法調(diào)整指令:AAS對在AL中的兩個非壓縮BCD數(shù)或ASC碼表示的十進制數(shù)相加/減后的結(jié)果進行調(diào)整,以得到正確的BCD和/差。程序中它們緊跟在ADD/(ADC)/SUB(SBB)指令后。,101,AAA指令的操作為:如果(AL)0FH9或(AF)=1則(AL)(AL)+06H(AH)(AH)+1(AF)1(CF)(AF)(AL)(AL)0FH否則(AL)(AL)0F
43、H,102,指令影響AF和CF標(biāo)志,但SF、ZF、PF和OF的狀態(tài)不確定。,MOVAX,0007H;(AL)=07H,(AH)=00HMOVBL,08H;(BL)=08HADDAL,BL;(AL)=0FHAAA;(AL)=05H,(AH)=01H,(CF)=(AF)=1,以上指令的運行結(jié)果為7+8=15,所得之和也以非壓縮型BCD碼的形式存放,個位在AL,十位在AH。,103,例4.6計算4609+3875=?設(shè)被加數(shù)的每一位數(shù)都以ASCII碼形式存放在內(nèi)存中,低位在前,高位在后。另外留出個存儲單元,存放相加的結(jié)果。,104,105,106,程序如下:LEASI,STRING1;(SI)被加數(shù)
44、地址指針LEABX,STRING2;(BX)加數(shù)地址指針LEADI,SUM;(DI)結(jié)果地址指針MOVCX,4;(CX)循環(huán)次數(shù)CLC;清進位標(biāo)志CFNEXT:MOVAL,SI;取一個字節(jié)被加數(shù)ADCAL,BX;與加數(shù)相加AAA;ASCII調(diào)整,107,MOVDI,AL;送存INCSI;SI加1INCBX;BX加1INCDI;DI加1DECCX;循環(huán)次數(shù)減1JNZNEXT;如不為零,轉(zhuǎn)NEXTHLT;停止,108,減法調(diào)整指令:AASAAS為減法的ASCII碼調(diào)整指令,隱含寄存器操作數(shù)為AL和AH。AAS指令對非壓縮型BCD碼減法的計算結(jié)果進行調(diào)整,以得到正確的結(jié)果。,109,AAS指令的操作
45、為:如果(AL)0FH9或(AF)=1則(AL)(AL)06H(AH)(AH)1(AF)1(CF)(AF)(AL)(AL)0FH)否則(AL)(AL)0FH),AAS影響標(biāo)志位AF和CF,但SF、ZF、PF和OF標(biāo)志位不確定。,110,(2)乘除法調(diào)整指令乘法調(diào)整指令:AAM除法調(diào)整指令:AADAAM緊跟在MUL指令之后,在AX中的兩個非壓縮BCD數(shù)相乘的結(jié)果進行調(diào)整,得到正確的非壓縮BCD的乘積(高位在AH中,低位在AL中);AAD用在兩個非壓縮BCD數(shù)的除法運算之前,先調(diào)整AL和AH中的內(nèi)容,再用DIV相除。相除以后,以非壓縮BCD數(shù)表示的商在AL中,而相應(yīng)的余數(shù)在AH中。,111,AAM
46、執(zhí)行后,將根據(jù)AL中的結(jié)果影響標(biāo)志位SF、ZF和PF,但AF、CF和OF的值不確定。例如,要求進行兩個十進制數(shù)的乘法運算:79=?,可編程序段如下:MOVAL,07H;(AL)=07HMOVBL,09H;(BL)=09HMULBL;(AX)=07H09H=003FHAAM;(AH)=06H,(AL)=03H,112,AAD隱含了寄存器操作數(shù)AL和AH。對非壓縮型BCD碼進行調(diào)整,操作為:(AL)(AH)0AH+(AL)(AH)0即將AH的內(nèi)容乘以10并加上AL的內(nèi)容,結(jié)果送回AL,零送AH。實質(zhì)上是將AX中非壓縮型BCD碼轉(zhuǎn)換成為真正的二進制數(shù),并存在AL中。,113,2、壓縮BCD數(shù)算術(shù)運算
47、調(diào)整指令,加減法調(diào)整指令:加法調(diào)整指令:DAA減法調(diào)整指令:DAS注意:僅用來對一次加/減運算的結(jié)果AL進行調(diào)整。因而對多位壓縮和非壓縮BCD數(shù)的運算,必須由低位向高位逐個進行調(diào)整。8086只提供非壓縮十進制數(shù)的乘除法調(diào)整指令,若要進行壓縮十進制數(shù)的乘除法運算,應(yīng)先將操作數(shù)轉(zhuǎn)換成非壓縮十進制數(shù),再按非壓縮十進制數(shù)進行運算。,114,DAA不帶操作數(shù),實際上隱含寄存器操作數(shù)AL。操作為:如果(AL)0FH)9或(AF)=1則(AL)(AL)+06H(AF)1如果(AL)9FH或(CF)=1則(AL)(AL)+60H(CF)1,115,ADDAL,BLDAAMOVDL,AL;暫存低字節(jié)壓縮BCD數(shù)
48、在DL中MOVAL,AHADCAL,BHDAAMOVAH,AL;高字節(jié)壓縮BCD數(shù)在AH中MOVAL,DL;壓縮BCD數(shù)的和在AX中,例求(8576)10+(2695)10,AX=8576H,BX=2695H,116,DAS對減法進行十進制調(diào)整,隱含寄存器操作數(shù)AL。在減法時,DAS對壓縮型BCD碼進行調(diào)整,其操作為:如果(AL)0FH)9或(AF)=1則(AL)(AL)06H(AF)1如果(AL)9FH或(CF)=1則(AL)(AL)60H(CF)1,117,例如,要求完成兩個2位的十進制數(shù)的減法運算:8338=?。現(xiàn)在采用壓縮型BCD碼的形式來存放原始數(shù)據(jù),則該減法運算可用下列幾條指令實現(xiàn)
49、:MOVAL,83H;(AL)=83HMOVBL,38H;(BL)=38HSUBAL,BL;(AL)=4BHDAS;(AL)=45H,118,119,3.3.3邏輯運算與移位指令,一、邏輯運算指令二、移位指令當(dāng)有兩個操作數(shù)時,只能有一個操作數(shù)為存儲器操作數(shù)。操作數(shù)可以是字節(jié)或字,但必須等長。如果只有一個操作數(shù),則該操作數(shù)即是源又是目的。操作數(shù)不能是段寄存器。,120,一、邏輯運算指令,AND(and)邏輯與OR(or)邏輯或NOT(not)邏輯非XOR(exclusiveor)異或TEST(test)測試,121,NOT邏輯非,指令格式:NOTOPR執(zhí)行操作:OPR將OPR按位取反特點:不影響
50、標(biāo)志位注:對于存儲器操作數(shù),要說明其類型是字節(jié)還是字。例:MOVAX,0000HNOTAX;AX=0FFFFHNOTBYTEPTRBX,122,AND/OR/XOR邏輯與/或/異或,指令格式:AND/OR/XORDST,SRC執(zhí)行操作:DSTDST(,)SRC具體指令:AND/OR/XORreg,regAND/OR/XORreg,memAND/OR/XORreg,immAND/OR/XORmem,regAND/OR/XORmem,imm,123,影響標(biāo)志位AF位無意義;CF=OF=0;SF、ZF、PF根據(jù)運算結(jié)果設(shè)置。AND和OR指令可用于保留運算結(jié)果的某幾位,而屏蔽掉其它位(使其恒為0或1)
51、,特別某OPR自己和自己相“與”或相“或”時,OPR不變,但CF=0。XOR指令常用于使OPR中的若干位維持不變、若干位取反(不變位與“0”異或,取反位與“1”異或),或用于某reg和CF同時清0的場合(自己與自己異或)。,特點,124,AND和OR的特性:一個操作數(shù)和本身進行邏輯“與”或者邏輯“或”,則內(nèi)容不會改變,但影響SF、ZF和PF狀態(tài)標(biāo)志位,且OF和CF清零。MOVAX,DATA;(AX)DATAORAX,AX;影響標(biāo)志(用ANDAX,AX指令亦可)JZZERO;如為零,轉(zhuǎn)移到ZERO;否則,ZERO:,125,例1:屏蔽0、1兩位,使其為0,可用AND指令。,MOVAL,0BFHA
52、NDAL,0FCH;AL=0BCH10111111AND1111110010111100(0BCH),126,例2:屏蔽第5位,使其為1,可用OR指令。,MOVAL,43HORAL,20H;AL=63H01000011OR0010000001100011(63H),127,例3:XOR指令的應(yīng)用,操作數(shù)的某些位取反。如:XORCL,80H將CL寄存器中的第7位取反,其它位不變。測試某一操作數(shù)是否與另一給定的操作數(shù)相等。如:XORAX,042EHJZMATCH檢查AX內(nèi)容是否與024EH相等,若相等,則轉(zhuǎn)移到標(biāo)號為MATCH的語句執(zhí)行,否則執(zhí)行JZ下面的語句。,128,例從偏移地址TABLE開始
53、的內(nèi)存區(qū)中,存放著100個字節(jié)型數(shù)據(jù),要求將這些數(shù)進行累加,并將累加和的低位存SUM單元,高位存SUM+1單元。程序如下:LEABX,TABLE;(BX)數(shù)據(jù)表地址指針MOVCL,100;(CL)數(shù)據(jù)塊長度XORAX,AX;清AL、AH,并清進位CFLOOP:ADDAL,BX;加一個數(shù)到ALJNCGOON;如(CF)=0,轉(zhuǎn)移到GOONINCAH;否則,AH加1GOON:INCBX;地址指針加1DECCL;計數(shù)值減1JNZLOOP;如(CL)0,轉(zhuǎn)移到LOOPERMOVSUM,AX;否則,(SUM)(AL),(SUM+1)(AH)HLT;停止,129,TEST測試指令,指令格式:TESTOPR
54、1,OPR2執(zhí)行操作:OPR1OPR2具體指令:TESTreg,regTESTreg,memTESTreg,immTESTmem,imm,特點TEST與AND指令功能相同,但操作結(jié)果不送回目標(biāo)操作數(shù),即指令執(zhí)行后,兩操作數(shù)不變。只影響標(biāo)志位。CF=OF=0根據(jù)結(jié)果值SF、ZF。編程時,常在該指令后加條件轉(zhuǎn)移指令。,130,TEST常用于位測試,它與條件轉(zhuǎn)移指令一起,共同完成對特定位狀態(tài)的判斷,并實現(xiàn)相應(yīng)的程序轉(zhuǎn)移。TEST只比較指定的位,而CMP比較整個操作數(shù)(字節(jié)或字)。例如以下幾條指令判斷一個端口PORT的外設(shè)端口輸入的數(shù)據(jù),若第1、3、5位中的任一位不等于零,則轉(zhuǎn)移到NEXT。INAL,
55、PORT;從端口PORT輸入數(shù)據(jù)TESTAL,00101010B;測試第1、3、5位JNZNEXT;任一位不為0,則轉(zhuǎn)移到NEXTNEXT:,131,例4:檢測AL最低位是否為1,為1則轉(zhuǎn)移,可使用TEST指令。,MOVAL,6FHTESTAL,01HJNZTHERE;ZF=0,則AL第0位為1,轉(zhuǎn)移到THERETHERE:,132,二、移位和循環(huán)移位指令,移位指令邏輯左移SHL(shiftlogicalleft)算術(shù)左移SAL(shiftarithmeticleft)邏輯右移SHR(shiftlogicalright)算術(shù)右移SAR(shiftarithmeticright)循環(huán)移位指令循環(huán)
56、左移ROL(rotateleft)循環(huán)右移ROR(rotateright)帶進位循環(huán)左移RCL(rotateleftthroughcarry)帶進位循環(huán)右移RCR(rotaterightthroughcarry),133,移位指令SHL/SAL/SHR/SAR,指令格式:SHL/SAL/SHR/SAROPR,CNT;CNT=1或CL具體指令:SHL/SAL/SHR/SARreg,1SHL/SAL/SHR/SARmem.1SHL/SAL/SHR/SARreg,CLSHL/SAL/SHR/SARmem,CL無符號數(shù)2可使用SHL指令,左移1位;無符號數(shù)2可使用SHR指令,右移1位;符號數(shù)2可使用S
57、AL指令,左移1位;符號數(shù)2可使用SAR指令,右移1位。,SHL/SAL/SHR/SAR操作功能,SHL:,SAL:,SHR:,CF,0,M,CF,0,M,CF,M,0,SAR:,CF,M,135,例,MOVCL,5SARDI,CL指令執(zhí)行前:DS=0F800H,DI=180AH,(0F980H)=0064H指令執(zhí)行后:(0F980H)=0003H,CF=0相當(dāng)于:100D/32D=3D,136,例,5140H,MOVCL,2SHLSI,CL指令執(zhí)行前:SI=1450H(5200D)指令執(zhí)行后:SI=5140H,CF=0相當(dāng)于:5200D4D=20800D,137,例將一個16位無符號數(shù)乘以1
58、0。該數(shù)原來存放在以FACTOR為首地址的兩個連續(xù)的存儲單元中(低位在前,高位在后)。因為FACTOR10=(FACTOR8)+(FACTOR2),可用左移指令實現(xiàn)以上乘法運算。編程如下:MOVAX,F(xiàn)ACTOR;(AX)被乘數(shù)SHLAX,1;(AX)=FACTOR2MOVBX,AX;暫存BXSHLAX,1;(AX)=FACTOR4SHLAX,1;(AX)=FACTOR8ADDAX,BX;(AX)=FACTOR10HLT以上程序的執(zhí)行時間大約需26個時鐘。如用乘法指令編程,執(zhí)行時間將超過130個時鐘。,138,例,AH和AL中分別存有非壓縮的BCD碼數(shù),AH=03H,AL=04H(即AX=03
59、04H)用下列指令可轉(zhuǎn)換成壓縮的BCD碼,并存于AL中。MOVCL,4SHLAL,CL;AL=40H(AX=0340H)SHRAX,CL;AX=0034H(AL=34H),139,循環(huán)移位指令ROL/ROR/RCL/RCR,指令格式:ROL/ROR/RCL/RCROPR,m;m是移位位數(shù),為1或CL具體指令:ROL/ROR/RCL/RCRreg,1ROL/ROR/RCL/RCRmem,1ROL/ROR/RCL/RCRreg,CLROL/ROR/RCL/RCRmem,CL特點:只影響CF和OF標(biāo)志位。,140,ROL/ROR/RCL/RCR操作功能,ROL:,ROR:,RCL:,CF,M,CF,M,CF,M,RCR:,CF,M,例:一四字節(jié)數(shù)存放在AX、DX中,將此四字節(jié)數(shù)整個左移一位。,設(shè)DX=0FFF0H,AX=0AAAAHSALAX,1RCLDX,1,142,3.3.4串操作指令,數(shù)據(jù)串是存儲器中的一串字節(jié)或字的序列。串操作就是對串中的每一項都執(zhí)行的操作,如串傳送,查找,比較等,可以處理的數(shù)據(jù)串長度最大為64K。,143,1)串傳送指令MOVS(MOVeString)指令格式:REPMO
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 入院病人與家屬的初步溝通
- 水泥廠安全培訓(xùn)動畫課件
- 2026年山西省晉中市單招職業(yè)適應(yīng)性測試題庫必考題
- 2026年西北工業(yè)大學(xué)國際合作處招聘備考題庫及答案1套
- 2026廣西南寧馬山縣人力資源和社會保障局招聘外聘工作人員1人 參考題庫及答案1套
- 2026年合肥理工學(xué)院編外人員招聘12名備考題庫含答案
- 2025九年級物理上冊第十一章簡單機械和功一杠桿第1課時認(rèn)識杠桿習(xí)題課件新版蘇科版
- 川南幼兒師范高等??茖W(xué)校關(guān)于2025年第二批公開考核招聘教師及專職輔導(dǎo)員的備考題庫及完整答案詳解一套
- 2026年大連雙D高科產(chǎn)業(yè)發(fā)展有限公司公開選聘備考題庫含答案
- 2026年福建省泉州市安溪縣鳳城中學(xué)招聘教師參考題庫附答案
- 老年人高血壓的護理
- 糧油產(chǎn)品授權(quán)書
- 責(zé)任督學(xué)培訓(xùn)課件
- 關(guān)于安吉物流市場的調(diào)查報告
- 抑郁病診斷證明書
- 心電監(jiān)測技術(shù)操作考核評分標(biāo)準(zhǔn)
- 歷史時空觀念的教學(xué)與評價
- 維克多高中英語3500詞匯
- 《LED顯示屏基礎(chǔ)知識培訓(xùn)》
- 第五屆全國輔導(dǎo)員職業(yè)能力大賽案例分析與談心談話試題(附答案)
- LY/T 2501-2015野生動物及其產(chǎn)品的物種鑒定規(guī)范
評論
0/150
提交評論