微機(jī)與單片機(jī)匯編常用指令_第1頁
微機(jī)與單片機(jī)匯編常用指令_第2頁
微機(jī)與單片機(jī)匯編常用指令_第3頁
微機(jī)與單片機(jī)匯編常用指令_第4頁
微機(jī)與單片機(jī)匯編常用指令_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、數(shù)據(jù)傳送指令一 通用數(shù)據(jù)傳送指令指令英文全拼翻譯MOVMove傳送PUSHPush onto the stack進(jìn)棧POPPop from the stack出棧XCHGExchange交換MOV指令為雙操作數(shù)指令,兩個(gè)操作數(shù)中不能全為內(nèi)存操作數(shù)格式:MOV DST,SRC執(zhí)行操作:dst = src注:1目的數(shù)可以是通用寄存器,存儲(chǔ)單元和段寄存器(但不允許用CS段寄存器).2立即數(shù)不能直接送段寄存器3不允許在兩個(gè)存儲(chǔ)單元直接傳送數(shù)據(jù)4不允許在兩個(gè)段寄存器間直接傳送信息PUSH入棧指令及POP出棧指令:堆棧操作是以“后進(jìn)先出”的方式進(jìn)行數(shù)據(jù)操作。格式:PUSH SRC /Word執(zhí)行操作:(S

2、P)<-(SP)-2(SP)+1,(SP)<-(SRC)注:1.入棧的操作數(shù)除不允許用立即數(shù)外,可以為通用寄存器,段寄存器(全部)和存儲(chǔ)器。2.入棧時(shí)高位字節(jié)先入棧,低位字節(jié)后入棧。格式:POP DST /Word執(zhí)行操作:(DST)<-(SP+1),(SP)(SP)<-(SP)+2注:1出棧操作數(shù)除不允許用立即數(shù)和CS段寄存器外,可以為通用寄存器,段寄存器和存儲(chǔ)器。2執(zhí)行POP SS指令后,堆棧區(qū)在存儲(chǔ)區(qū)的位置要改變。3執(zhí)行POP SP 指令后,棧頂?shù)奈恢靡淖儭CHG(eXCHanG)交換指令:將兩操作數(shù)值交換。格式:XCHG OPR1,OPR2 /Byte/Wo

3、rd執(zhí)行的操作:(OPR1)<->(OPR2)注:1必須有一個(gè)操作數(shù)是在寄存器中2不能與段寄存器交換數(shù)據(jù)存儲(chǔ)器與存儲(chǔ)器之間不能交換數(shù)據(jù)。二 累加器專用傳送指令指令英文全拼翻譯INInput輸入OUTOutput輸出XLATTranslate換碼IN 輸入指令長(zhǎng)格式為:IN AL,PORT(字節(jié))IN AX,PORT(字)執(zhí)行的操作:(AL)<-(PORT)(字節(jié))(AX)<-(PORT+1,PORT)(字)短格式為:IN AL,DX(字節(jié))IN AX,DX(字)OUT 輸出指令長(zhǎng)格式為:OUT PORT,AL(字節(jié))OUT PORT,AX(字)執(zhí)行的

4、操作:(PORT)<-(AL)(字節(jié))(PORT+1,PORT)<-(AX)(字)短格式為:OUT DX,AL(字節(jié))OUT DX,AX(字)執(zhí)行的操作:(DX)<-(AL)(字節(jié))(DX)+1,(DX)<-AX(字)XLAT(TRANSLATE)換碼指令:把一種代碼轉(zhuǎn)換為另一種代碼。格式:XLAT (OPR 可選) /Byte執(zhí)行操作:(AL)<-(BX)+(AL)注:指令執(zhí)行時(shí)只使用預(yù)先已存入BX中的表格首地址,執(zhí)行后,AL中內(nèi)容則是所要轉(zhuǎn)換的代碼。三 有效地址送寄存器指令指令英文全拼翻譯LEALoad effective address有效地址送寄存器LDS

5、Load DS with Pointer指針?biāo)图拇嫫骱虳SLESLoad ES with Pointer指針?biāo)图拇嫫骱虴SLEA(Load Effective Address) :有效地址傳送寄存器指令格式:LEA REG,SRC /指令把源操作數(shù)SRC的有效地址送到指定的寄存器中。執(zhí)行操作:(REG)<-SRC注:1. SRC只能是各種尋址方式的存儲(chǔ)器操作數(shù),REG只能是16位寄存器2.MOV BX,OFFSET OPER_ONE 等價(jià)于LEA BX,OPER_ONE3.MOV SP,BX /將BX間接尋址的相繼的二個(gè)存儲(chǔ)單元的內(nèi)容送入SP中4.LEA SP,BX /將BX的內(nèi)容作為存

6、儲(chǔ)器有效地址送入SP中LDS(Load DS with pointer):指針?biāo)图拇嫫骱虳S指令格式:LDS REG,SRC /常指定SI寄存器。執(zhí)行的操作:(REG)<-(SRC)(DS)<-(SRC+2)注:把源操作數(shù)指定的4個(gè)相繼字節(jié)送到由指令指定的寄存器及DS寄存器中。該指令常指定SI寄存器。LES(Load ES with pointer) 指針?biāo)图拇嫫骱虴S指令格式:LES REG,SRC /常指定DI寄存器執(zhí)行的操作:(REG)<-(SRC)(ES)<-(SRC+2)/與LDS大致相同,不同之處是將ES代替DS而已。注:把源操作數(shù)指定的4個(gè)相繼字節(jié)送到由指

7、令指定的寄存器及ES寄存器中。該指令常指定DI寄存器。四 標(biāo)志寄存器傳送指令指令英文全拼翻譯LAHFLoad AH with flags標(biāo)志送AHSAHFstore AH into flagsAH送標(biāo)志寄存器PUSHFpush the flags標(biāo)志進(jìn)棧POPFpop the flags標(biāo)志出棧LAHF ( Load AH with Flags )標(biāo)志位送AH指令格式:LAHF .執(zhí)行操作:(AH)<-(PWS的低字節(jié))注:將PSW寄存器中的低8位的狀態(tài)標(biāo)志(條件碼)送入AH的相應(yīng)位,SF送D7位,ZF送D6位SAHF( Store AH into Flags )AH送標(biāo)志寄存

8、器指令格式:SAHF執(zhí)行操作: (PWS的低字節(jié))<-(AH)注:將AH寄存器的相應(yīng)位送到PSW寄存器的低8位的相應(yīng)位,AH的D7位送SF,D6位送ZF。PUSHF( PUSH the Flags)標(biāo)志進(jìn)棧指令格式:PUSHF執(zhí)行操作:(SP)<-(SP)-2SP=SP-1,(SP)=PSW的高8位,SP=SP-1,(SP)=PSW的低8位注:將標(biāo)志寄存器的值壓入堆棧頂部,同時(shí)棧指針SP值減2POPF( POP the Flags )標(biāo)志出棧指令格式:POPF執(zhí)行操作:(PWS)<-(SP)+1,(SP)(SP)<-(SP+2)PSW低8位=(SP),SP=SP+1,P

9、SW高8位=(SP),SP=SP+1注:與PUSHF相反,從堆棧的頂部彈出兩個(gè)字節(jié)送到PSW寄存器中,同時(shí)堆棧指針值加2算術(shù)指令一 加法指令指令英文全拼翻譯ADDadd加法ADCadd with carry帶進(jìn)位加法INCincrement加1ADD(ADD)加法指令格式:ADD DST,SRC /Byte/Word執(zhí)行操作: (DST)<-(SRC)+(DST)注:1兩個(gè)存儲(chǔ)器操作數(shù)不能通過ADD指令直接相加,即DST 和SRC必須有一個(gè)是通用寄存器操作數(shù)。2段寄存器不能作為SRC 和DST.3影響標(biāo)志位Auxiliary Crray Flag,Carry Flag,Over

10、flow Flag,Parity Flag,Sign Flag 和Zero Flag,如下所示:CF 根據(jù)最高有效位是否有進(jìn)(借)位設(shè)置的:有進(jìn)(借)位時(shí)CF=1,無進(jìn)(借)位時(shí)CF=0.OF 根據(jù)操作數(shù)的符號(hào)及其變化來設(shè)置的:若兩個(gè)操作數(shù)的符號(hào)相同,而結(jié)果的符號(hào)與之相反時(shí)OF=1,否則為0.ZF 根據(jù)結(jié)果來設(shè)置:不等于0時(shí)ZF=0,等于0時(shí)ZF=1SF 根據(jù)結(jié)果的最高位來設(shè)置:最高位為0,則SF=0.AF 根據(jù)相加時(shí)D3是否向D4進(jìn)(借)位來設(shè)置:有進(jìn)(借)位時(shí)AF=1,無進(jìn)(借)位時(shí)AF=0PF 根據(jù)結(jié)果的1的個(gè)數(shù)時(shí)否為奇數(shù)來設(shè)置:1的個(gè)數(shù)為奇數(shù)時(shí)PF=0,為偶數(shù)時(shí)PF=1ADC( ADd

11、 with Carry)帶進(jìn)位加法指令格式:ADC DST,SRC /Byte/Word執(zhí)行操作: (DST)<-(SRC)+(DST)+CF注:與ADD不同之處是還要加上進(jìn)位標(biāo)志位的值。INC( INCrement) 加1指令格式:INC OPR /Byte/Word執(zhí)行操作: (OPR)<-(OPR)+1注:1OPR可以是寄存器和存儲(chǔ)器操作數(shù),但不能是立即數(shù)和段寄存器2影響標(biāo)志位OF,SF,ZF,PF 和AF,不影響CF.二 減法指令指令英文全拼翻譯SUBsubtract減法SBBsubtract with borrow帶借位減法DECDecrement減1NEGNegate求

12、補(bǔ)CMPCompare比較SUB( SUBtract ) 不帶借位的減法指令格式:SUB DST,SRC /Byte/Word執(zhí)行操作:(DST)<-(DST)-(SRC)注:1DST和SRC尋址方式及規(guī)定與ADD相同。2影響全部標(biāo)志位。(判斷標(biāo)志位參見ADD)SBB ( SuBtract with Borrow) 帶借位減法指令格式:SBB DST,SRC /Byte/Word執(zhí)行操作:(DST)<-(DST)-(SRC)-CFDEC( DECrement ) 減1指令格式:DEC OPR /Byte/Word執(zhí)行操作:(OPR)<-(OPR)-1/除CF標(biāo)志位,

13、其余標(biāo)志位都受影響。NEG( NEGate ) 求補(bǔ)指令格式:NEG OPR執(zhí)行操作:(OPR)<- -(OPR) /將操作數(shù)按位求反后末位加1.CMP ( CoMPare ) 比較指令格式:CMP OPR1,OPR2執(zhí)行操作:(OPR1)-(OPR2) /與SUB指令一樣執(zhí)行運(yùn)算,但不保存結(jié)果。注:該指令與SUB指令一樣執(zhí)行減法操作,但不保存結(jié)果,只是根據(jù)結(jié)果設(shè)置條件標(biāo)志。比較情況無符號(hào)數(shù)有符號(hào)數(shù)A=BZF=1ZF=1A>BCF=0 && ZF=0SFOF=0 && ZF=0A<BCF=1 && ZF=0SFOF=1

14、 && ZF=0A>=BCF=0 | ZF=1SFOF=0 | ZF=1A<=BCF=1 | ZF=1SFOF=1 | ZF=1三 乘法指令指令英文全拼翻譯MULUnsigned Multiple無符號(hào)數(shù)乘法IMULSigned Multiple帶符號(hào)數(shù)乘法MUL( unsigned MULtiple ) 無符號(hào)數(shù)乘法指令格式:MUL SRC /Byte/Word .執(zhí)行操作:字操作:(AX)<-(AL)*(SRC) /字節(jié)運(yùn)算時(shí)目的操作數(shù)用AL,乘積放在AX中字節(jié)操作: (DX,AX)<-(AX)*(SRC) /字運(yùn)算時(shí)目的操作數(shù)用AX,DX存放乘積的

15、高位字,AX放乘積的低位字注:1目的數(shù)必須是累加器AX 或AL,指令中不需寫出源操作數(shù)SRC可以是通用寄存器和各種尋址方式的存儲(chǔ)器操作數(shù),而絕對(duì)不允許是立即數(shù)或段寄存器。IMUL(sIgned MULtiple) 有符號(hào)數(shù)乘法指令格式:IMUL SRC /與MUL指令相同,但必須是帶符號(hào)數(shù)四 除法指令指令英文全拼翻譯DIVUnsigned divide無符號(hào)數(shù)除法IDIVSigned divide帶符號(hào)數(shù)除法CBWConvert byte to word字節(jié)轉(zhuǎn)換為字CWDContert word to double word字轉(zhuǎn)換為雙字DIV ( unsigned DIVide) 無

16、符號(hào)數(shù)除法指令格式:DIV SRC /Byte/Word 其中:SRC的規(guī)定同乘法指令MUL執(zhí)行操作:字節(jié)操作:(AL)<-(AX)/(SRC)的商(AH)<-(AX)/(SRC)的余數(shù)字操作:(AX)<-(DX,AX)/(SRC)的商(DX)<-(DX,AX)/(SRC)的余數(shù)注:存儲(chǔ)器操作數(shù)必須指明數(shù)據(jù)類型:BYTE PTR src 或WORD PTR srcIDIV (sIgned DIVied) 有符號(hào)數(shù)除法指令格式:IDIV SRC執(zhí)行的操作:與DIV相同,但操作數(shù)必須是帶符號(hào)數(shù),商和余數(shù)也均為帶符號(hào)數(shù),且余數(shù)的符號(hào)與被除數(shù)的符號(hào)相同。CBW(Con

17、vert Byte to Word) 字節(jié)轉(zhuǎn)換為字指令格式:CBW執(zhí)行操作:AL中的符號(hào)位(D7)擴(kuò)展到8位AH中,若AL中的D7=0,則AH=00H,若AL中的D7=1,則AH=FFH.CWD(Convert Word to Double word) 字轉(zhuǎn)換為雙字指令格式:CWD執(zhí)行操作:AX中的符號(hào)位(D15)擴(kuò)展到16位DX中,若AX中的D15=0,則DX=0000H,若AX中的D15=1,則DX=FFFFH注:這兩條指令都不影響條件碼。邏輯指令一邏輯運(yùn)算指令指令英文全拼翻譯ANDand邏輯與ORor邏輯或NOTnot邏輯非XORexclusive or異或TESTtest測(cè)試AND,O

18、R,XOR和 TEST都是雙字節(jié)操作指令,操作數(shù)的尋址方式的規(guī)定與算術(shù)運(yùn)算指令相同。NOT是單字節(jié)操作指令,不允許使用立即數(shù)。邏輯運(yùn)算均是按位進(jìn)行操作,真值表如下:AND (位與&)OR ( 位或| )XOR ( 位異或 )1& 1 = 11 | 1 = 11 1 = 01 & 0 = 01 | 0 = 11 0 = 10 & 1 = 00 | 1 = 10 1 = 10 & 0 = 00 | 0 = 00 0 = 0AND(and) 邏輯與指令格式:AND DST,SRC /Byte/Word執(zhí)行操作:(DST)<-(DST)(SRC)

19、注:1AND指令執(zhí)行后,將使CF=0,OF=0,AF位無定義,指令執(zhí)行結(jié)果影響SF,ZF和PF標(biāo)志位。2AND指令典型用法A:用于屏蔽某些位,即使某些位為0.例子:屏蔽AL的高4位:即將高4位和0000B相與,低4位和1111B相與MOV AL,39H /AL= 0011 1001B39HADD AL,0FH / AL= 0000 1001B09H 即0011 1001B39H & 0000 1111B0FH = 0000 1001B09HAND指令典型用法B:取出某一位的值(見TEST)OR(or) 邏輯或指令格式:OR DST,SRC /Byte/Word執(zhí)行操作:(DST)<

20、;-(DST) | (SRC)注:1OR指令執(zhí)行后,將使CF=0,OF=0,AF位無定義,指令執(zhí)行結(jié)果影響SF,ZF和PF標(biāo)志位。2常用于將某些位置1.例子:將AL的第5位置1:MOV AL,4AH / AL=0100 1010B4AHOR AL,10H / AL=0101 1010B5AH 即0100 1010B4AH | 0001 0000B10H =0101 1010B 5AHXOR(eXclusive OR) 邏輯異或指令格式:XOR DST,SRC /Byte/Word執(zhí)行操作:(DST)<-(DST)(SRC)注:1XOR指令常用于使某個(gè)操作數(shù)清零,同時(shí)使CF=0,清除進(jìn)位標(biāo)

21、志。2XOR指令使某些位維持不變則與'0' 相異或,若要使某些位取反則與'1'相異或。例子:將AL的高4位維持不變,低4位取反:MOV AL,B8H /AL=1011 1000BB8HXOR AL,0FH /AL=1011 0111BB7H 即1011 1000BB8H 0000 11110FH=1011 0111BB7H例子:測(cè)試某一個(gè)操作數(shù)是否與另一確定操作數(shù)相等:XOR AX,042EHJZ . /如果AX=042EH,則ZF=TRUE(1),執(zhí)行JZ.NOT (not) 邏輯非指令格式:NOT OPR /Byte/Word執(zhí)行操作:(OPR)&

22、lt;(OPR) / 01100101 65H =10011010 9AH1操作數(shù)不能使用立即數(shù)或段寄存器操作數(shù),可使用通用寄存器和各種方式尋址的存儲(chǔ)器操作數(shù)。2NOT指令不影響任何標(biāo)志位。例子:將AL各位取反:MOV AL,65H /AL=0110 0101B65HNOT AL /AL=1001 1010B9AH 即 0110 0101B65H=1001 1010B9AHTEST(test) 指令格式:TEST OPR1,OPR2 /Byte/Word執(zhí)行操作:opr1 & opr2注:1兩個(gè)操作數(shù)相與的結(jié)果不保存,結(jié)果影響標(biāo)志位PF,SF和ZF,使CF=0,OF=0,而AF位無定義

23、。2TEST指令常用于在不改變?cè)械牟僮鲾?shù)的情況下,檢測(cè)某一位或某幾位的條件是否滿足。只要令用來測(cè)試的操作數(shù)對(duì)應(yīng)檢測(cè)位為1,其余位為0,相與后判斷零標(biāo)志ZF值的真假。例:檢測(cè)某位是否為1:令用來測(cè)試的操作數(shù)對(duì)應(yīng)檢測(cè)位為1,其余位為0,TEST指令后,若該位為1則JNZ.TEST AL,0000 00001B /測(cè)試AL最低位是否為1: 令用來測(cè)試的操作數(shù)對(duì)應(yīng)檢測(cè)位為1,其余位為0,執(zhí)行TEST指令JNZ THER/最低位若為1,則ZF=FALSE(0),執(zhí)行JNZ THER,否則執(zhí)行下一條指令。或者:先對(duì)操作數(shù)求反,令用來測(cè)試的操作數(shù)對(duì)應(yīng)檢測(cè)位為1,其余位為0,TEST指令后,若該位為1則JZ

24、.MOV DL,AL /將AL 傳送到DL,主要是不要影響AL的值。 以下測(cè)試AL的b2位是否為1NOT DL /先對(duì)操作數(shù)求反TEST 0000 0100B /令用來測(cè)試的操作數(shù)對(duì)應(yīng)檢測(cè)位為1,其余位為0,執(zhí)行TEST指令JZ THER /若AL的b2位為1,則ZF=TRUE(1),執(zhí)行JZ THERB:移位指令所有的移位指令都影響標(biāo)志位CF、OF、PF、SF和ZF、AF無定義。非循環(huán)邏輯移位:把操作數(shù)看成無符數(shù)來進(jìn)行移位。移位指令指令英文全拼翻譯SHLshift logical left邏輯左移SALshift arithmetic left算術(shù)左移SHRshift logical rig

25、ht邏輯右移SARshift arithmetic right算術(shù)右移ROLRotate left循環(huán)左移RORRotate right循環(huán)右移RCLRotate left through carry帶進(jìn)位循環(huán)左移RCRRotate right through carry帶進(jìn)位循環(huán)右移SHL( SHift logical Left )邏輯左移指令格式:SHL OPR,CNT /Byte/Word執(zhí)行操作:使OPR左移CNT位,并使最低CNT位為全0.1OPR操作數(shù)不能使用立即數(shù)或段寄存器操作數(shù),可使用通用寄存器和各種方式尋址的存儲(chǔ)器操作數(shù)。2移位次數(shù)由CNT決定。每次將OPR的最高位移出并移到

26、CF,最低位補(bǔ)0.MOV CL,7 /若移位多次,先預(yù)置移位次數(shù)CLSHL DX,CL /CNT可取1或CL寄存器操作數(shù)SHR(SHift logical Right) 邏輯右移指令格式:SHR OPR,CNT /Byte/Word執(zhí)行操作:同SHL,每次將OPR的最低位D0移出并移到CF.最高位補(bǔ)0.非循環(huán)算術(shù)移位:將操作數(shù)看成有符號(hào)數(shù)來進(jìn)行移位。SAL(Shift Arithmetic Left) 算術(shù)左移指令格式:SAL OPR,CNT /Byte/Word執(zhí)行操作:SAL指令與SHL指令完全相同SAR(Shift Arithmetic Right) 算術(shù)右移指令格式:SAR OPR,C

27、NT /Byte/Word執(zhí)行操作:SAR指令每次移位時(shí),將最高位移入次高位的同時(shí)最高位值不變,最低位D0移出并移到CF.循環(huán)移位指令ROL( ROtate Left) 循環(huán)左移指令格式:ROL OPR,CNT /Byte/Word執(zhí)行操作:每次移位時(shí),最高位移出并同時(shí)移到CF和最低位D0.ROR (ROtate Right)循環(huán)右移指令格式:ROR OPR,CNT /Byte/Word執(zhí)行操作:每次移位時(shí),最低位D0移出并同時(shí)移到CF和最高位。帶進(jìn)位循環(huán)移位指令RCL(Rotate Left through Carry)帶進(jìn)位循環(huán)左移指令格式:RCL OPR,CNT /Byte/W

28、ordRCR (Rotate Right through Carry)帶進(jìn)位循環(huán)右移指令格式:RCR OPR,CNT /Byte/Word串處理指令一 與REP相配合工作的MOVS,STOS和LODS指令指令英文全拼翻譯REPrepeat重復(fù)操作MOVSMOVe String串傳送指令STOSSTOre into String存入串指令LODSLOaD from String從串取指令CLDClear direction flag使地址自動(dòng)增量STDSet direction flag使地址自動(dòng)減量REP(REPeat)重復(fù)操作前綴格式:REP String Primitive執(zhí)行的

29、操作:1)如(CX)=0則退出REP,否則往下執(zhí)行。2)(CX)<-(CX)-13)執(zhí)行其中的串操作4)重復(fù)1)3)注:其中String Primitive可為MOVS,LODS或STOS指令.MOVS 串傳送指令格式:MOVS ES:BYTE PTRDI,DS:SI可有三種MOVS DST,SRCMOVSB/字節(jié)串傳送DF=0,SI = SI + 1,DI = DI + 1 ;DF = 1,SI = SI - 1,DI = DIMOVSW/字串傳送DF=0,SI = SI + 2,DI = DI + 2 ;DF = 1,SI = SI - 2,DI = DI - 2MOVSD

30、/雙字串傳送DF=0,SI = SI + 4,DI = DI + 4 ;DF = 1,SI = SI - 4,DI = DI - 4MOVSX/符號(hào)傳送MOVZX/零傳送執(zhí)行的操作:1)如(CX)=0則退出REP,否則往下執(zhí)行。2)(CX)<-(CX)-13)執(zhí)行其中的串操作4)重復(fù)1)3).MOVS 串傳送指令注:當(dāng)方向標(biāo)志DF=1時(shí)用,其中第二、三種格式明確地注明是傳送字節(jié)或字,第一種格式則應(yīng)在操作數(shù)中表明是字還是字節(jié)操作,例如:1)(DI)<-(SI)2)字節(jié)操作: (SI)<-(SI)+(或-)1,(DI)<-(DI)+(或-)1/當(dāng)方向標(biāo)志DF=0時(shí)用3)字操

31、作: (SI)<-(SI)+(或-)2,(DI)<-(DI)+(或-)2當(dāng)方向標(biāo)志DF=0時(shí)用/當(dāng)方向標(biāo)志DF=1時(shí)用-該指令不影響條件碼。STOS(STOre into String) 存入串指令格式:STOS DSTSTOSB /存放字節(jié)串( DI ) = ALSTOSW /存放字串( DI ) = AX執(zhí)行操作:把AL或AX中的內(nèi)容存放由DI指定的附加段的字節(jié)或字單元中,并根據(jù)DF值修改及數(shù)據(jù)類型修改DI的內(nèi)容。字節(jié)操作:(DT)(AL),(DI)(DI)±1字操作:(DI)(AX),(DI)(DI)±2注:1在執(zhí)行該指令之前,必須把要存入的數(shù)據(jù)預(yù)先存入A

32、X或AL中,必須預(yù)置DI的初值。2DI所指向的存儲(chǔ)單元只能在附加段中,即必須是ES:DI3該指令把AL或AX的內(nèi)容存入由(DI)指定的附加段的某單元中,并根據(jù)DF的值及數(shù)據(jù)類型修改DI的內(nèi)容,當(dāng)它與REP聯(lián)用時(shí),可把AL或AX的內(nèi)容存入一個(gè)長(zhǎng)度為(CX)的緩沖區(qū)中。LODS ( LOaD from String ) 從串取指令格式:LODS SRCLODSB /從字節(jié)串取AL=(SI)LODSW /從字串取AX= (SI±1) (SI)執(zhí)行操作:字節(jié)操作:(AL)<-(SI),(SI)<-(SI)+-1字操作:(AX)<-(SI),(SI)<-(SI

33、)+-2把由SI指定的數(shù)據(jù)段中字節(jié)或字單元的內(nèi)容送入AL或AX中,并根據(jù)DF值及數(shù)據(jù)類型修改SI的內(nèi)容。注:1在執(zhí)行該指令之前,要取的數(shù)據(jù)必須在存儲(chǔ)器中預(yù)先定義(用DB或DW),必須預(yù)置SI的初值。2源串允許使用段超越前綴來改變數(shù)據(jù)存儲(chǔ)的段區(qū)。3該指令把由(SI)指定的數(shù)據(jù)段中某單元的內(nèi)容送到AL或AX中,并根據(jù)方向標(biāo)志及數(shù)據(jù)類型修改SI的內(nèi)容。指令允許使用段跨越前綴來指定非數(shù)據(jù)段的存儲(chǔ)區(qū)。該指令也不影響條件碼。4一般說來,該指令不和REP聯(lián)用。有時(shí)緩沖區(qū)中的一串字符需要逐次取出來測(cè)試時(shí),可使用本指令。CLD(CLear Direction flag) 清除方向標(biāo)志指令格式:CLD執(zhí)行操作:令

34、DF=0,其后SI,DI執(zhí)行增量操作該指令使DF=0,在執(zhí)行串操作指令時(shí)可使地址自動(dòng)增量STD(SeT Direction flag) 設(shè)置方向標(biāo)志指令格式:STD執(zhí)行操作:令DF=1,其后SI,DI執(zhí)行減量操作該指令使DF=1,在執(zhí)行串操作指令時(shí)可使地址自動(dòng)減量。二與REPE/REPZ和REPNZ/REPNE聯(lián)合工作的CMPS和SCAS指令指令英文全拼翻譯REPE/REPZRepeat Equal to Zero等于零時(shí)重復(fù)操作REPNE/REPNZRepeat Not Equal to Zero不等于零時(shí)重復(fù)操作CMPSCoMPare String串比較指令SCASSCAn String串

35、掃描指令.REPE/REPZ 當(dāng)相等/為零時(shí)重復(fù)串操作格式:REPE(或REPZ) String Primitive其中String Primitive可為CMPS或SCAS指令。執(zhí)行的操作:1)如(CX)=0或ZF=0(即某次比較的結(jié)果兩個(gè)操作數(shù)不等)時(shí)退出,否則往下執(zhí)行2)(CX)<-(CX)-13)執(zhí)行其后的串指令4)重復(fù)1)3).REPNE/REPNZ 當(dāng)不相等/不為零時(shí)重復(fù)串操作格式:REPNE(或REPNZ) String Primitive其中String Primitive可為CMPS或SCAS指令執(zhí)行的操作:除退出條件(CX=0)或ZF=1外,其他操

36、作與REPE完全相同。CMPS(CoMPare String) 串比較指令格式:CMPS SRC,DSTCMPSB /字節(jié)串比較(SI)-(DI)CMPSW /字串比較(SI+1)(SI) - (DI+1)(DI)執(zhí)行操作:把由SI指向的數(shù)據(jù)段中的一個(gè)字節(jié)或字與由DI指向的附加段中的一個(gè)字節(jié)或字相減,不保留結(jié)果,只根據(jù)結(jié)果置標(biāo)志位。1)(SI)-(DI)2)字節(jié)操作:(SI)<-(SI)+-1,(DI)<-(DI)+-1字操作:(SI)<-(SI)+-2,(DI)<-(DI)+-2注:指令把由(SI)指向的數(shù)據(jù)段中的一個(gè)字(或字節(jié))與由(DI)指向的附加段中的一個(gè)字(或

37、字節(jié))相減,但不保存結(jié)果,只根據(jù)結(jié)果設(shè)置條件碼,指令的其它特性和MOVS指令的規(guī)定相同。.SCAS (SCAn String ) 串掃描指令格式:SCAS DSTSCASBSCASW執(zhí)行操作:把AX或AL的內(nèi)容與由DI指向的在附加段中的一個(gè)字節(jié)或字相減,不保留結(jié)果,根據(jù)結(jié)果置標(biāo)志位。字節(jié)操作:(AL)-(DI),(DI)<-(DI)+-1字操作:(AL)-(DI),(DI)<-(DI)+-2注:該指令把AL(或AX)的內(nèi)容與由(DI)指定的在附加段中的一個(gè)字節(jié)(或字)進(jìn)行比較,并不保存結(jié)果,只根據(jù)結(jié)果置條件碼。指令的其他特性和MOVS的規(guī)定相同??刂妻D(zhuǎn)移指令一 

38、JMP ( JuMP ) 無條件轉(zhuǎn)移指令名稱格式執(zhí)行操作段內(nèi)直接短跳轉(zhuǎn)JMP SHORT OPRIP=IP+8 位偏移量段內(nèi)直接近轉(zhuǎn)移JMP NEAR PTR OPRIP=IP+16位偏移量段內(nèi)間接轉(zhuǎn)移JMP WORD PTR OPRIP=(EA)段間直接轉(zhuǎn)移JMP FAR PTR OPRIP=OPR 偏移地址,CS=OPR 段地址段間間接轉(zhuǎn)移JMP DWORD PTR OPRIP=(EA),CS=(EA+2)1)段內(nèi)直接短轉(zhuǎn)移格式:JMP SHORT OPR執(zhí)行的操作:(IP)<-(IP)+8位位移量2)段內(nèi)直接近轉(zhuǎn)移格式:JMP NEAR PTR OPR執(zhí)行的操作:(IP)

39、<-(IP)+16位位移量3)段內(nèi)間接轉(zhuǎn)移格式:JMP WORD PTR OPR執(zhí)行的操作:(IP)<-(EA)4)段間直接(遠(yuǎn))轉(zhuǎn)移格式:JMP FAR PTR OPR執(zhí)行的操作:(IP)<-OPR的段內(nèi)偏移地址(CS)<-OPR所在段的段地址5)段間間接轉(zhuǎn)移格式:JMP DWORD PTR OPR執(zhí)行的操作:(IP)<-(EA)(CS)<-(EA+2)1無條件轉(zhuǎn)移到指定的地址去執(zhí)行從該地址開始的指令。2段內(nèi)轉(zhuǎn)移是指在同一代碼段的范圍內(nèi)進(jìn)行轉(zhuǎn)移,只需改變IP寄存器內(nèi)容。3段間轉(zhuǎn)移則要轉(zhuǎn)移到另一個(gè)代碼段執(zhí)行程序,此時(shí)要改變IP寄存器和CS段寄存器的內(nèi)容。二

40、條件轉(zhuǎn)移指令:指令英文全拼翻譯JZ/JEJump if zero,or equal結(jié)果為零(或相等)則轉(zhuǎn)移JNZ/JNEJump if not zero,or not equal結(jié)果不為零(或不相等)則轉(zhuǎn)移JSJump if sign結(jié)果為負(fù)則轉(zhuǎn)移JNSJump if not sign結(jié)果為正則轉(zhuǎn)移JOJump if overflow溢出則轉(zhuǎn)移JNOJump if not overflow不溢出則轉(zhuǎn)移JP/JPEJump if parity,or parity even奇偶位為1則轉(zhuǎn)移JNP/ JPOJump if not parity,or parity odd奇偶位為0則轉(zhuǎn)移JB/JNAE

41、/JCJump if below,or not above or equal,or carry低于,或者不高于或等于,或進(jìn)位位為1則轉(zhuǎn)移JNB/JAE/JNCJump if not below,or above or equal,or not carry不低于,或者高于或者等于,或進(jìn)位位為0則轉(zhuǎn)移根據(jù)上一條指令所設(shè)置的條件碼(標(biāo)志位)來判斷測(cè)試條件。JZ(或JE)(Jump if zero,or equal) 結(jié)果為零(或相等)則轉(zhuǎn)移格式:JE(或JZ) OPR測(cè)試條件:ZF=1.JNZ(或JNE)(Jump if not zero,or not equal) 結(jié)果不為零(或不相等)則轉(zhuǎn)移格式

42、:JNZ(或JNE) OPR測(cè)試條件:ZF=0.JS(Jump if sign) 結(jié)果為負(fù)則轉(zhuǎn)移格式:JS OPR測(cè)試條件:SF=1.JNS(Jump if not sign) 結(jié)果為正則轉(zhuǎn)移格式:JNS OPR測(cè)試條件:SF=0.JO(Jump if overflow) 溢出則轉(zhuǎn)移格式:JO OPR測(cè)試條件:OF=1.JNO(Jump if not overflow) 不溢出則轉(zhuǎn)移格式:JNO OPR測(cè)試條件:OF=0.JP(或JPE)(Jump if parity,or parity even) 奇偶位為1則轉(zhuǎn)移格式:JP OPR測(cè)試條件:PF=1.JNP(或JPO)(Jump if no

43、t parity,or parity odd) 奇偶位為0則轉(zhuǎn)移格式:JNP(或JPO) OPR測(cè)試條件:PF=0.JB(或JNAE,JC)(Jump if below,or not above or equal,or carry) 低于,或者不高于或等于,或進(jìn)位位為1則轉(zhuǎn)移格式:JB(或JNAE,JC) OPR測(cè)試條件:CF=1.JNB(或JAE,JNC)(Jump if not below,or above or equal,or not carry) 不低于,或者高于或者等于,或進(jìn)位位為0則轉(zhuǎn)移格式:JNB(或JAE,JNC) OPR測(cè)試條件:CF=02)比較兩個(gè)無符號(hào)數(shù),并根據(jù)比較的結(jié)

44、果轉(zhuǎn)移.JB(或JNAE,JC)格式:同上.JNB(或JAE,JNC)格式:同上.JBE(或JNA)(Jump if below or equal,or not above) 低于或等于,或不高于則轉(zhuǎn)移格式:JBE(或JNA) OPR測(cè)試條件:CFVZF=1.JNBE(或JA)(Jump if not below or equal,or above) 不低于或等于,或者高于則轉(zhuǎn)移格式:JNBE(或JA) OPR測(cè)試條件:CFVZF=0根據(jù)五個(gè)標(biāo)志位:ZF、SF、OF、PF、CF的兩種狀態(tài)(0 FALSE或1 TRUE)產(chǎn)生10種測(cè)試條件。名稱簡(jiǎn)寫格式Flag = TRUE 1Flag =FAL

45、SE 0Zero FalgZFJE/JZOPR結(jié)果為零轉(zhuǎn)移JNE/JNZOPR結(jié)果不為零轉(zhuǎn)移Sign FalgSFJS OPR結(jié)果為負(fù)轉(zhuǎn)移JNSOPR結(jié)果為正轉(zhuǎn)移Overflow FlagOFJO OPR溢出轉(zhuǎn)移JNOOPR不溢出轉(zhuǎn)移Parity FlagPFJP/JPE OPR結(jié)果為偶轉(zhuǎn)移 JNP/JPOOPR結(jié)果為奇轉(zhuǎn)移Carry FlagCFJC OPR有進(jìn)位轉(zhuǎn)移 JNCOPR無進(jìn)位轉(zhuǎn)移情況指令滿足條件指令滿足條件A < BJCCF=1JLSFOF=1&& ZF=0A BJNCCF=0JNLSFOF=0 |

46、 ZF=1A BJNACF=1 | ZF=1JLGSFOF=1 | ZF=1A > BJACF=0 && ZF=0JGSFOF=0 && ZF=0三 比較兩個(gè)無符號(hào)數(shù),并根據(jù)比較的結(jié)果轉(zhuǎn)移指令英文全拼翻譯JB/JNAE/JCJump if less,or not greater or equal小于,或者不大于或者等于則轉(zhuǎn)移JNB/JAE/JNCJump if not less,or greater or equal不小于,或者大于或者等于則轉(zhuǎn)移JBE/JNAJump if below or equal,or not above低于或等于,或不高于則轉(zhuǎn)移J

47、NBE/JAJump if not below or equal,or above不低于或等于,或者高于則轉(zhuǎn)移.JB(或JNAE,JC)格式:同上.JNB(或JAE,JNC)格式:同上.JBE(或JNA)(Jump if below or equal,or not above) 低于或等于,或不高于則轉(zhuǎn)移格式:JBE(或JNA) OPR測(cè)試條件:CFVZF=1.JNBE(或JA)(Jump if not below or equal,or above) 不低于或等于,或者高于則轉(zhuǎn)移格式:JNBE(或JA) OPR測(cè)試條件:CFVZF=0四 比較兩個(gè)帶符號(hào)數(shù),并根據(jù)比較的結(jié)果轉(zhuǎn)移指令英文全拼翻譯

48、JL/LNGEJump if less,or not greater or equal小于,或者不大于或者等于則轉(zhuǎn)移JNL/JGEJump if not less,or greater or equal不小于,或者大于或者等于則轉(zhuǎn)移JLE/JNGJump if less or equal,or not greater小于或等于,或者不大于則轉(zhuǎn)移JNLE/JGJump if not less or equal,or greater不小于或等于,或者大于則轉(zhuǎn)移.JL(或LNGE)(Jump if less,or not greater or equal) 小于,或者不大于或者等于則轉(zhuǎn)移格式:JL(

49、或JNGE) OPR測(cè)試條件:SFVOF=1.JNL(或JGE)(Jump if not less,or greater or equal)不小于,或者大于或者等于則轉(zhuǎn)移格式:JNL(或JGE) OPR測(cè)試條件:SFVOF=0.JLE(或JNG)(Jump if less or equal,or not greater) 小于或等于,或者不大于則轉(zhuǎn)移格式:JLE(或JNG) OPR測(cè)試條件:(SFVOF)VZF=1.JNLE(或JG)(Jump if not less or equal,or greater) 不小于或等于,或者大于則轉(zhuǎn)移格式:JNLE(或JG) OPR測(cè)試條件:(SFVOF)

50、VZF=0五 測(cè)試CX的值為0則轉(zhuǎn)移指令.JCXZ(Jump if CX register is zero) CX寄存器的內(nèi)容為零則轉(zhuǎn)移格式:JCXZ OPR/CX=0時(shí)轉(zhuǎn)移測(cè)試條件:(CX)=0注:條件轉(zhuǎn)移全為8位短跳!六 循環(huán)指令LOOP(LOOP)循環(huán)指令格式:LOOP OPR測(cè)試條件:CX 0 /OPR在程序中實(shí)際是個(gè)標(biāo)號(hào).LOOPNZ/LOOPNE 當(dāng)不為零或不相等時(shí)循環(huán)指令格式:LOOPNZ(或LOOPNE) OPR測(cè)試條件:(CX)<>0且ZF=0注:這三條指令的步驟是:1)(CX)<-(CX)-12)檢查是否滿足測(cè)試條件,如滿足則(IP)<-(

51、IP)+D8的符號(hào)擴(kuò)充。過程調(diào)用及返回指令CALL(CALL) 過程調(diào)用指令格式:CALL DST /DST在程序中實(shí)際是子程序標(biāo)號(hào)執(zhí)行操作:先將過程的返回地址(即CALL的下一條指令的首地址)存入堆棧,然后轉(zhuǎn)移到過程入口地址執(zhí)行子程序。調(diào)用方式格式斷點(diǎn)保護(hù)入棧情況過程入口地址段內(nèi)直接CALL NEAR PTR PR1(SP-1)(SP-2)IP,CS不進(jìn)棧CS值保持不變IPDST段內(nèi)間接CALL WORD PTR (EA)(SP-1)(SP-2)IP,CS不進(jìn)棧CS值保持不變IP(EA)段間直接CALL FAR PTR PR1(SP-1)(SP-2)CS,(SP-3)(SP-4)IPIPDS

52、T偏移地址CSDST段地址段間間接CALL DWORD PTR (EA)(SP-1)(SP-2)CS,(SP-3)(SP-4)IPIP(EA),CS(EA+2)注:為了表明是段內(nèi)調(diào)用,可使用NEAR PTR屬性操作符作說明。RET(RETurn)子程序返回指令格式:RETRET EXP /帶立即數(shù)返回注:子程序返回指令RET放在子程序末尾,它使子程序在執(zhí)行完全部任務(wù)后返回主程序繼續(xù)執(zhí)行被打斷后的程序。返回地址在子程序調(diào)用時(shí)入棧保存的斷點(diǎn)地址-IP或IP和CS.中斷指令.INT指令格式:INT TYPE或INT執(zhí)行的操作:(SP)<-(SP)-2(SP)+1,(SP)<-(PSW)(

53、SP)<-(SP)-2(SP)+1,(SP)<-(CS)(SP)<-(SP)-2(SP)+1,(SP)<-(IP)(IP)<-(TYPE*4)(CS)<-(TYPE*4+2).INTO 若溢出則中斷執(zhí)行的操作:若OF=1則:(SP)<-(SP)-2(SP)+1,(SP)<-(PSW)(SP)<-(SP)-2(SP)+1,(SP)<-(CS)(SP)<-(SP)-2(SP)+1,(SP)<-(IP)(IP)<-(10H)(CS)<-(12H).IRET 從中斷返回指令格式:IRET執(zhí)行的操作:(IP)<-(

54、SP)+1,(SP)(SP)<-(SP)+2(CS)<-(SP)+1,(SP)(SP)<-(SP)+2(PSW)<-(SP)+1,(SP)(SP)<-(SP)+2處理機(jī)控制指令一標(biāo)志處理指令指令英文全拼翻譯CLCClear carry進(jìn)位位置0指令CF<-0CMCComplement carry進(jìn)位位求反指令CF<-CFSTCSet carry進(jìn)位位置1指令CF<-1CLDClear direction方向標(biāo)志置0指令DF<-0STDSet direction方向標(biāo)志置1指令DF<-1CLIClear interrupt中斷標(biāo)志置0指令I(lǐng)F<-0STISet interrupt中斷標(biāo)志置1指令I(lǐng)F<-0二其他處理機(jī)控制指令指令英文全拼翻譯NOPNo Opreation無操作HLTHalt停機(jī)WAITWait等待E

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論