版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
2.3指令系統共分為6類92種指令。(1)數據傳送(2)算術運算(3)邏輯運算和移位(4)串處理(5)控制轉移類(6)處理器控制12.3.1數據傳送類指令按功能分為四組:②輸入輸出指令;①通用數據傳送指令;③目標地址傳送指令;④標志傳送指令;MOVPUSHPOPXCHGXLATINOUTLEALDSLESLAHFSAHFPUSHFPOPF2■指令匯編格式:MOVdest,src操作:將一個源操作數(字節或字)傳送到目標操作數中。dest←(src)■受影響的狀態標志位:沒有(1)MOV(move)傳送1.通用數據傳送指令;32012-06.如下指令中正確的指令是【】
A.MOVDS,1234HB.MOVBX,1234H
C.MOVIP,1234HD.MOV1234H,AX2010-07.下列四條指令中正確的是【】
A.MOVDS,0100HB.MOVAL,0100H
C.SHRAL,4D.MOVAL,AH2009-04.下列四條指令中,錯誤的是【】
A.MOVAX,[DI]B.MOVAL,[DI+5]
C.MOVCS,AXD.MOVDS,AXBDC4SS:0000SP00000H棧頂棧底初始化時SPFFFFFH堆棧段...××H××H...12H34H......
8086/8088堆棧結構■指令匯編格式:PUSHsrc■
指令匯編格式:POPdest5注意:
1.源操作數可以是CPU內部的16位通用寄存器、段寄存器和內存操作數。2.入棧操作對象必須是16位數,不能是8位數。3.可以使用除立即數以外的其它尋址方式。PUSHBLPUSHDHPOPALPOPCL
■指令匯編格式:PUSHsrc■
指令匯編格式:POPdest62012-25.設SP=100H,AX=200H,當8086執行PUSHAX指令后,SP的值變為________。P572009-27.若堆棧指針SP的初值為3000H,執行PUSHAX指令后SP的值為___________。FEH或00FEH2FFEH7(4)XLAT(translate)轉換表■指令匯編格式:XLAT操作:BX和AL內容之和指出的內存字節單元的內容送到AL中。AL←(BX+AL)■受影響的狀態標志位:沒有■說明:XLAT指令用于查表。表的開始地址即表頭地址由BX寄存器給出。AL中的原始值是要尋址的表中元素地址的位移量,規定表中第一個字節的位移量為0。這是一種特殊的基址變址尋址方式,基址寄存器為BX,變址寄存器為AL。8MOVBX,2A00HMOVAL,3XLAT■
舉例DS:2A0041H+142H+243H+344H+445H+546H+647H+748H+849H+94AH+104BH+114CH+124DH+134EH+144FH+1550H+1651H+1752H+1853H.+1954H+2055H9IN(Input)輸入指令一般格式INAL,n;BAL←[n]
INAX,n;WAX←[n+1][n]
INAL,DX;BAL←[DX]
INAX,DX;WAX←[DX+1][DX]
功能:從I/O端口輸入數據至AL或AX。注意:輸入指令允許把一個字節或一個字由一個輸入端口傳送到AL或AX中。若端口地址超過255時,則用DX保存端口地址,這樣用DX作端口尋址最多可尋找64K個端口(必須用DX)。2.輸入輸出指令;10OUT(Output)輸出指令一般格式OUTn,AL;BAL→[n]
OUTn,AX;WAX→[n+1][n]
OUTDX,AL;BAL→[DX]
OUTDX,AX;WAX→[DX+1][DX]功能:將AL或AX的內容輸出至I/O端口。注意:該指令將AL或AX中的內容傳送到一個輸出端口。端口尋址方式與IN指令相同。112011-16.8088執行指令OUT12,AL時,數據總線傳送的內容是【】
A.AL的值B.AX的值
C.12D.12H2010-17.執行指令OUTDX,AL時【】
A.B.
C.D.AC12(1)LEA(loadeffectiveaddress)取有效地址■指令匯編格式:LEAreg16,mem操作:將指令中給出的存儲器操作數的有效地址(即地址的偏移量)送到指定的寄存器中。
reg16←mem的EA■受影響的狀態標志位:沒有■說明:LEA指令是將源操作數地址的偏移量,即有效地址傳送到目標操作數中。源操作數必須是一個存儲器操作數,目標操作數可以是任一16位通用寄存器、指針寄存器或變址寄存器。3.目標地址傳送指令;13指令LEA與LDS,LES的比較已知:DS=09A0H,BX=0048HLEADI,[BX]LDSDI,[BX]LESDI,[BX]→執行后:DI=0048H→執行后:DI=003EHDS=0816H→執行后:DI=003EHES=0816HDS=09A008H……3EH00H16H0048H0049H004AH004BH14■標志寄存器長度為16位,其中9個位有定義。××××OF
DFIFTFSF
ZF×AF×PF×CF1514131211109876543210標志寄存器FR4.標志傳送指令15●(1)LAHF指令(讀標志指令)指令格式:LAHF指令功能:將標志寄存器低8位→AH。●(2)SAHF(設置標志指令)指令格式:SAHF指令功能:將AH→標志寄存器低8位。SFZF
AFPFCF01234567AHLAHF的功能SFZF
AFPFCF01234567AHSAHF的功能16●
(3)PUSHF指令(標志進棧)指令格式:PUSHF指令功能:將16位標志寄存器入棧,同時修改棧指針SP。●(4)POPF指令(標志出棧)指令格式:POPF指令功能:將棧頂的一個字送標志寄存器,同時修改棧指針SP。注:字傳送方式16位標志寄存器中的16位數據傳送即狀態標志位OF、CF、AF、ZF、SF、PF的傳送及控制標志位IF、DF、TF的傳送17指令類型助記符算術運算加法(5)ADD,ADC,INC,AAA,DAA減法(7)SUB,SBB,DEC,NEG,CMP,AAS,DAS乘法(3)MUL,IMUL,AAM除法(3)DIV,IDIV,AAD轉換(2)CBW,CWD2.3.2算術運算指令181.加法指令(1)ADD(addition)加法(2)ADC(additionwithcarry)帶進位加(3)INC(incrementby1)增119(1)ADD(addition)加法■指令匯編格式:ADDdest,src操作:兩個操作數求和,結果存目標操作數中。dest←(dest)+(src)■受影響的狀態標志位:OF,SF,ZF,AF,PF,CF說明:dest和src不能同時為存儲器操作數和段寄存器。20例:ADDCL,10ADDDX,SIADDAX,MEMADD[BX],ALADD[DI],3000H21(2)ADC(additionwithcarry)帶進位加法■指令匯編格式:ADCdest,src操作:兩個操作數相加的同時,再加上CF。結果存入目標操作數中。dest←(dest)+(src)+CF■受影響的狀態標志位:OF,SF,ZF,AF,PF,CF■說明:ADC指令主要用于多精度數據相加。22(3)INC(incrementbyone)增1■指令匯編格式:INCdest操作:將指定的操作數加1,并將結果回送到目標操作數中。dest←(dest)+1■dest可以是寄存器(段寄存器除外)、變量。■dest不允許是立即數。■受影響的狀態標志位:OF,SF,ZF,AF,PF■說明:INC指令不影響CF。例:INCDLINCSIINCBYTEPTR[BX][SI]INCWORDPTR[DI]23指令格式:DAA指令功能:對AL中的由兩個組合BCD碼相加所得的結果進行調整,并將調整后的結果存于AL中。操作過程:如果AL的低4位大于9或者AF=1,則AL+6→AL,并置AF=1;如果AL的高4位大于9或者CF=1,則AL+60H→AL,并置CF=1。注意本指令使用時必須緊跟在ADD或ADC指令之后。而且,只能對AL中的結果進行調整,因此對多字節的十進制數運算,只能從低字節開始逐個字節的進行運算和調整。(4)DAA(組合BCD碼的加法調整指令)說明:指令會影響OF、SF、ZF、AF、PF、CF。242.減法指令(1)SUB(subtract)減法(2)SBB(subtractwithborrow)帶借位減(3)DEC(decrementby1)減1(4)NEG(negate)取補
CMP(compare)比較
DAS(decimaladjustforsubtract)25(1)SUB(subtract)減法■指令匯編格式:SUBdest,src操作:從目標操作數減去源操作數,結果存入目標操作數。
dest←(dest)-(src)■dest,src可以是寄存器(段寄存器除外)、變量。■src可以是立即數。■不允許dest和src同時為變量。■受影響的狀態標志位:OF,SF,ZF,AF,PF,CF例:SUBAL,98HSUBBX,CXSUBDX,WORDPTR[VAR1]SUB[BX],AXSUBWORDPTR[DI],1234H26(2)SBB(subtractwithborrow)帶借位減法■指令匯編格式:SBBdest,src操作:從目標操作數中減去源操作數和CF,結果存入目標操作數中。dest←(dest)-(src)-CF■dest,src可以是寄存器(段寄存器除外)、變量。■src可以是立即數。■不允許dest和src同時為變量。■受影響的狀態標志位:OF,SF,ZF,AF,PF,CF例:SBBAL,0SBBDL,CLSBBAX,[BX]SBB[1234H],ALSBBWORDPTR[1234H],56H27(3)DEC(decrementbyone)減1■指令匯編格式:DECdest操作:將指定的操作數減1,并將結果送回到目標操作數中。
dest←(dest)-1■dest,src可以是寄存器(段寄存器除外)、變量。■受影響的狀態標志位:OF,SF,ZF,AF,PF■說明:DEC指令不影響CF。例:DECBLDECCXDECBYTEPTR[BX]DECWORDPTR[BP][DI]28(4)NEG(negate)取補(取負)■指令匯編格式:NEGdest操作:從0中減去指令中給定的操作數,最后將結果送回到給定的操作數中。dest←0-(dest)■dest可以使寄存器(段寄存器除外)、變量。■dest不允許是立即數。■受影響的狀態標志位:OF,SF,ZF,AF,PF,CF例:NEGBHNEGAXNEGWORDPTR[SI+10]29(5)CMP(compare)比較■指令匯編格式:CMPdest,src操作:從目標操作數中減去源操作數
(dest)-(src)■dest,src可以是寄存器(段寄存器除外)、存儲器變量。■dest,src的位數必須相同。■指令不保留執行結果。■受影響的狀態標志位:OF,SF,ZF,AF,PF,CF例:CMPAL,0BHCMPCX,DICMPAX,GAMMACMPAREA2,15030分為無符號數與有符號數的比較,根據相減結果:a.無符號若ZF=1,則兩數相等若ZF=0,CF=1,則被減數小b.有符號OF=0時,若SF=0,則A>B若SF=1,則A<BOF=1時,若SF=1,則A>B若SF=0,則A<B31指令格式:DAS
指令功能:對AL中的由兩個組合BCD碼相減所得的結果進行調整,并將調整后的結果存于AL中。操作過程:調整方法與DAA類似,不同的只是當AL的低4位大于9或者AF=1,則AL-6→AL,并置AF=1;而當AL的高4位大于9或者CF=1時,則AL-60H→AL,并置CF=1。注意使用DAS指令必須緊跟在SUB或SBB指令之后。(6)DAS(組合BCD碼的減法調整指令)322012-08.設AL=1,8086執行指令SUBAL,2后,為0的標志是【】
A.CF B.OF
C.PFD.SF2009-05.指令CMPBL,DL運算結果將會【】
A.影響標志位,并把差值送BLB.不影響標志位,但將差值送BL
C.影響標志位,但不將差值送BLD.不影響標志位,也不計算差值2009-11.兩數相減其結果為零;則標志寄存器中必定為1的標志位是【】
A.CFB.DF
C.SFD.ZFBCD33(1)CBW(convertbytetoword)將字節轉換為字(2)CWD(convertwordtodoubleword)將字轉換為雙字5.轉換指令34指令類型助記符邏輯指令邏輯運算(5)AND,TEST,OR,XOR,NOT移位(3)SHL,SAL,SHR,SAR循環移位(4)ROL,ROR,RCL,RCR1.AND(and,logicalconjunction)邏輯與2.TEST(test,orlogicalcompare)測試3.OR(or,inclusive)邏輯或4.XOR(exclusiveor)異或5.NOT(not,orform1’scomplement)取反2.3.3邏輯運算指令351.AND邏輯與■指令匯編格式:ANDdest,src
dest←(dest)∧(src),CF←0,OF←0●
指令會影響SF,ZF,PF;總是將OF=0,CF=0;對AF不定。2.TEST測試■指令匯編格式:TESTdest,src(dest)∧(src),CF←0,OF←0●
指令會影響SF,ZF,PF;總是將OF=0,CF=0;對AF不定。3.OR邏輯或■指令匯編格式:ORdest,srcdest←(dest)∨(src),CF←0,OF←0●
指令會影響SF,ZF,PF;總是將OF=0,CF=0;對AF不定。364.XOR異或■指令匯編格式:XORdest,srcdest←(dest)⊕(src),CF←0,OF←0●
4)指令會影響SF,ZF,PF;總是將OF=0,CF=0;對AF不定。■說明:XOR指令可用來使操作數中的某些位取反,某些位不變。5.NOT取反■指令匯編格式:NOTdest
dest←dest●
對標志位影響不確定。37邏輯操作指令應用舉例將寄存器AL的第1,3,5,7位清0,其它位不變。
ANDAL,01010101B將寄存器AL的第1,3,5,7位置1,其它位不變。
ORAL,10101010B將寄存器AL的第1,3,5,7位取反,其它位不變。
XORAL,10101010B382011-08.設AL=80H,執行指令ORAL,AL后,被置位的標志是【】P74
A.CFB.OF
C.SFD.ZF2010-02.指令XORAL,AL執行后,則【】P75
A.CF=1B.SF=1
C.ZF=1D.OF=1CC39移位指令SHLdest,nSHRdest,nSALdest,nSARdest,nSHL
reg/mem,1/CL ;邏輯左移SHR
reg/mem,1/CL ;邏輯右移SAL
reg/mem,1/CL ;算術左移SARreg/mem,1/CL ;算術右移40循環移位指令ROLdest,nRORdest,nRCLdest,nRCRdest,nROL
reg/mem,1/CL ;不帶進位循環左移ROR
reg/mem,1/CL ;不帶進位循環右移RCL
reg/mem,1/CL ;帶進位循環左移RCRreg/mem,1/CL ;帶進位循環右移41指令類型助記符邏輯指令邏輯運算(5)AND,TEST,OR,XOR,NOT移位(3)SHL,SAL,SHR,SAR循環移位(4)ROL,ROR,RCL,RCR移位循環邏輯算術不帶進位帶進位左右CFdest0CFdest0CFdestCFdest0CFdestCFdestCFdestCFdestSHLSALRCLROLSHRSARRCRROR422012-15.設AL=10H,指令SHRAL,1執行后,AL的值為【】P76
A.08HB.10H
C.18HD.20H2011-24.設AL=80H,當執行指令SARAL,1后,AL中的內容是
。AC0H432.串操作指令串操作指令是8086指令系統中比較獨特的一類指令,采用比較特殊的數據串尋址方式,在操作主存連續區域的數據時,特別好用,因而常用重點掌握: MOVSSTOSLODS CMPSSCASREP一般了解: REPZ/REPEREPNZ/REPNE指令類型助記符串處理串操作(5)MOVS,CMPS,SCAS,LODS,STOS重復控制(3)REP,REPE,REPZ,REPNE,REPNZ44(1)MOVSB/MOVSW
數據串傳送指令(movestring)把字節或字操作數從主存的源地址傳送至目的地址MOVSB
;字節串傳送:[ES:DI]←[DS:SI] ;SI←SI±1,DI←DI±1MOVSW
;字串傳送:[ES:DI]←[DS:SI] ;SI←SI±2,DI←DI±245(2)CMPSB/CMPSW
數據串比較指令(comparestring)將主存中的源操作數減去目的操作數,以便設置標志,進而比較兩操作數之間的關系。CMPSB
;字節串比較:[DS:SI]-[ES:DI] ;SI←SI±1,DI←DI±1CMPSW
;字串比較:[DS:SI]-[ES:DI] ;SI←SI±2,DI←DI±2■受影響的標志位:OF,SF,ZF,AF,PF,CF46(3)SCASB/SCASW
數據串搜索指令(scanstring)將AL/AX減去目的操作數,以便設置標志,進而比較AL/AX與操作數之間的關系。SCASB
;字節串查找:AL-[ES:DI] ;DI←DI±1SCASW
;字串查找:AX-[ES:DI] ;DI←DI±2■受影響的標志位:OF,SF,ZF,AF,PF,CF47(4)LODSB/LODSW
取數據串元素指令(loadstring)把指定主存單元的數據傳送給AL或AXLODSB
;字節串讀取:AL←[DS:SI] ;SI←SI±1LODSW
;字串讀取:AX←[DS:SI] ;SI←SI±248(5)STOSB/STOSW
存數據串元素指令(storestring)把AL或AX數據傳送至目的地址STOSB
;字節串存儲:[ES:DI]←AL ;DI←DI±1STOSW
;字串存儲:[ES:DI]←AX ;DI←DI±249指令類型助記符控制轉移轉移無條件轉移(1)JMP條件轉移(19)JA/JNBE,JAE/JNB,JB/JNAE,JBE/JNA,JC,JCXZJE/JZ,JNS,JO,JS,JG/JNLE,JGE/JNL,JL/JNGEJLE/JNG,JNC,JNE/JNZ,JNO,JNP/JPO,JP/JPE循環控制(5)LOOP,LOOPE,LOOPZ,LOOPNE,LOOPNZ過程調用(2)CALL,RET中斷指令(3)INT,INTO,IRET2.3.5轉跳指令501.無條件轉移指令JMP■指令匯編格式:JMPtarget■受影響的狀態標志位:無■說明:指令中的target可以是直接標號、寄存器間接或存儲器間接尋址形式。JMP分為近轉跳(NearJump)和遠轉跳(FarJump)兩大類51代碼段代碼段格式:JMPSHORTtarget
;IP←IP+target(8位);-128≤target≤127格式:JMPNEARPTRtarget
;IP←IP+target(16位);-32768≤target≤32767格式:JMPFARPTRtarget
;CS←target的段;IP←target的偏移
實際編程時,匯編程序會根據目標地址的屬性,自動處理成短轉跳、近轉跳或遠轉跳程序員可用操作符short、nearptr
或farptr
強制成為需要的轉移類型代碼段代碼段52(2)Jxx指令(條件轉移指令)指令格式及操作Jxxtarget;target:目標地址;Jxx是短轉跳功能Jxx根據不同條件轉跳target。不同條件Jxx格式不同。說明Jxx對標志位沒有影響。53根據利用的標志位不同,分成三種情況:⑴判斷單個標志位狀態⑵比較無符號數高低⑶比較有符號數大小
Jxx指令實際雖然只有16條,但卻有30個助記符采用多個助記符,目的是為了方便記憶和使用54(1)判斷單個標志位狀態測試位指令格式轉移條件含義ZFJE/JZOPRZF=1相等/等于0JNE/JNZOPRZF=0不相等/不等于SFJSOPRSF=1是負數JNSOPRSF=0是正數PFJP/JPEOPRPF=1有偶數個“1”JNP/JPOOPRPF=0有奇數個“1”OFJOOPROF=1有溢出JNOOPROF=0無溢出CFJCOPRCF=1有進位/借位JNCOPRCF=0無進位/借位55(2)比較無符號數高低指令格式轉移條件含義名稱JB/JNAE/JC標號CF=1A<B低于(不高于或等于)JAE/JNB/JNC標號CF=0A>=B高于或等于(不低于)JA/JNBE標號CF=0且ZF=0A>B高于(不低于或等于)JBE/JNA標號CF=1或ZF=1A<=B低于或等于(不高于)無符號數的大小用高(Above)、低(Below)表示,需要利用CF確定高低、利用ZF標志確定相等(Equal)56(3)比較有符號數大小指令格式轉移條件含義名稱JG/JNLE標號SF=OF且ZF=0A>B大于(不小于或等于)JGE/JNL標號SF=OFA>=B大于或等于(不小于)JL/JNGE標號SF≠OFA<B小于(不大于或等于)JLE/JNG標號SF≠OF或ZF=1A<=B小于或等于(不大于)判斷有符號數的大(Greater)、小(Less),需要組合OF、SF標志、并利用ZF標志確定相等與否572.循環控制指令LOOPLOOPE/LOOPZLOOPNE/LOOPNZtarget標識循環體入口的標號LOOP(LOOP)循環LOOPZ/LOOPE(Loopwhilezero,orequal)當為零或相等時循環LOONZ/LOOPNE(Loopwhilenonzero,ornotequal)當不為零或不相等時循環58(1)LOOP重復控制指令■指令格式:LOOPtarget■功能:①CX←CX-1②若CX≠0,則使控制轉到target標識的循環入口處,繼續下一次循環,否則退出循環體,執行后續指令。■說明1)LOOP對標志位沒有影響;2)LOOP是短轉跳,即-128≤target≤+127.59過程(Procedure)相當于子程序,是完成特定功能的一段程序。當主程序(調用程序)需要執行這個功能時,采用CALL調用指令轉移到該過程(子程序)的起始處執行。當運行完子程序功能后,采用RET返回指令回到主程序繼續執行。
轉移指令有去無回過程調用需要返回,其中利用堆棧保存返回地址3.過程調用指令60■指令匯編格式:CALLproc■功能:CALL指令執行后,CPU執行proc。■說明:1)CALL對標志位沒有影響;2)proc表示被調用過程的名稱,是一個存儲器操作數。(1)CALL指令61過程調用分類①段內調用與段間調用段內調用:通過指令指針IP的變化實現的。段間調用:通過IP和CS的共同變化實現的。②直接調用與間接調用
直接調用:子程序的入口地址直接包含在指令代碼中。間接調用:子程序的入口地址通過寄存器或存儲器間接得到的。62(2)RET指令
■匯編格式:RET RETpop_value;
■功能:從被調用過程返回。1)從近過程返回
RET;IP←[SP+1:SP] ;SP←SP+2
RETpop_value;IP←[SP+1:SP] ;SP←SP+2;SP←SP+pop_value632)從遠過程返回
RET;IP←[SP+1:SP] ;SP←SP+2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 寶玉石鑒別工崗中專項實操考核試卷含答案
- 驗房師操作水平評優考核試卷含答案
- 信息通信營業員安全教育強化考核試卷含答案
- 陶瓷注漿成型工崗中實踐綜合技能考核試卷含答案
- 黃酒壓濾工崗前跨領域知識考核試卷含答案
- 民用機場場務設備機務員崗中退出機制考核試卷含答案
- 真空設備裝配調試工安全素養能力考核試卷含答案
- 工藝扎染工崗位復測考核試卷含答案
- 化工企業換熱器管理指導書范本
- 健康宣教段子文案
- 鋼材月結合同協議
- 檔案管理崗位競聘報告
- 人保財險車險合同范本
- 第六屆“四川工匠杯”職業技能大賽(互聯網營銷賽項)理論參考試題庫(含答案)
- 煤礦井下隨鉆測量定向鉆進技術
- 2024項目投資協議書
- 初中數學競賽雙十字相乘法因式分解練習100題及答案
- 私人房屋裝修安全免責協議書
- 自動控制原理 第3版 課件全套 陶洪峰 第1-8章 概論、控制系統數學模型-線性離散系統分析
- 微生物工程課件
- 新生兒患者抗菌藥物的應用課件
評論
0/150
提交評論