




下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄18086CPU旨令21.1.編寫說(shuō)明22指令索引表22.1. 8086CPU旨令22.2. 偽操作指令1418086CPU旨令1.1.編寫說(shuō)明對(duì)8086CPU勺指令逐條介紹2指令索引表2.1.8086CPU旨令序號(hào)指令分類指令說(shuō)明1數(shù)據(jù)傳送指令MOVDST,SRC為雙操作數(shù)指令,兩個(gè)操作數(shù)中必須有一個(gè)是寄存器.1 .目的數(shù)可以是通用寄存器,存儲(chǔ)單元和段寄存器(但不允許用CS段寄存器).2 .立即數(shù)不能直接送段寄存器3 .不允許在兩個(gè)存儲(chǔ)單元直接傳送數(shù)據(jù)4 .不允許在兩個(gè)段寄存器間直接傳送信息2數(shù)據(jù)傳送指令PUSHSRC堆棧操作是以"后進(jìn)先出"的方式進(jìn)行數(shù)據(jù)操作.入棧的
2、操作數(shù)除不允許用立即數(shù)外,可以為通用寄存器,段寄存器(全部)和存儲(chǔ)器.入棧時(shí)高位字節(jié)先入棧,低位字節(jié)后入棧.3數(shù)據(jù)傳送指令POPDST出棧操作數(shù)除不允許用立即數(shù)和CS段寄存器外,可以為通用寄存器,段寄存器和存儲(chǔ)器.執(zhí)行POPSS旨令后,堆棧區(qū)在存儲(chǔ)區(qū)的位置要改變.執(zhí)行POPSP指令后,棧頂?shù)奈恢靡淖?4數(shù)據(jù)傳送指令XCHGOPR1,OPR2執(zhí)行操作:Tmp=OPR1OPR1=OPR2OPR2=Tmp1 .必須有一個(gè)操作數(shù)是在寄存器中2 .不能與段寄存器交換數(shù)據(jù)3 .存儲(chǔ)器與存儲(chǔ)器之間不能交換數(shù)據(jù).5數(shù)據(jù)傳送指令XLAT(OPR可選)換碼指令:把一種代碼轉(zhuǎn)換為另一種代碼.執(zhí)行操作:AL=(BX
3、+AL)指令執(zhí)行時(shí)只使用預(yù)先已存入BX中的表格首地址,執(zhí)行后,AL中內(nèi)容則是所要轉(zhuǎn)換的代碼.6數(shù)據(jù)傳送指令LEAREG,SRC指令把源操作數(shù)SRC勺有效地址送到指定的寄存器中.執(zhí)行操作:REG=EAsrc注:SRCR能是各種尋址方式的存儲(chǔ)器操作數(shù),REG只能是16位寄存器MOWX,OFFSEOPER_ONE價(jià)于LEABX,OPER_ONMOVSP,BX/將BX間接尋址的相繼的二個(gè)存儲(chǔ)單元的內(nèi)容送入SP中LEASP,BX/將BX的內(nèi)容作為存儲(chǔ)器肩效地址送入SP中7數(shù)據(jù)傳送指令LDSREG,SRC/常指定SI寄存器。執(zhí)行操作:REG=(SRC),DS=(SRC+2)將SRC旨出的前二個(gè)存儲(chǔ)單元的內(nèi)
4、容送入指令中指定的寄存器中,后二個(gè)存儲(chǔ)單元送入DS段寄存器中。8數(shù)據(jù)傳送指令LESREG,SRC/常指定DI寄存器執(zhí)行操作:REG=(SRC),ES=(SRC+2)與LDS:®:相同,/、同之處是將ES代替DS而已.9數(shù)據(jù)傳送指令LAHFLAHF(LoadAHwithFlags)標(biāo)志位送AH指令/將PSVW存器中的低8位的狀態(tài)標(biāo)志(條件碼)送入AH的相應(yīng)位,SF送D7位,ZF送D6位執(zhí)行操作:AH=PSWW勺低位字節(jié)。10數(shù)據(jù)傳送指令SAHFSAHF(StoreAHintoFlags)AH送標(biāo)志寄存器指令將AH寄存器的相應(yīng)位送到PSW寄存器的低8位的相應(yīng)位,AH的D7位送SF,D6位
5、送ZF執(zhí)行操作:PSW的低位字節(jié)=AH11數(shù)據(jù)傳送指令PUSHFPUSHF(PUSHtheFlags)標(biāo)志進(jìn)棧指令/將標(biāo)志寄存器的值壓入堆棧頂部,同時(shí)棧指針SP值減2執(zhí)行操作:SP=SP-1,(SP尸PSW的高8位,SP=SP-1,(SP尸PSW勺彳氐8位12數(shù)據(jù)傳送指令POPFPOPF(POPtheFlags)標(biāo)志出棧指令與PUSHFf反,從堆棧的頂部彈出兩個(gè)字節(jié)送到PSW?存器中,同時(shí)堆棧指針值加2執(zhí)行操作:PSW低8位=(SP),SP=SP+1,PSW高8位=(SP),SP=SP+113數(shù)據(jù)傳送指令I(lǐng)N輸入輸出指令(IN,OUT)只限于使用累加器AX或AL與外部設(shè)備的端口傳送信息.(IN
6、put)輸入指令:信息從I/O通過(guò)累加器傳送到CPUINAL,PORT/直接的字節(jié)輸入,POR說(shuō)外設(shè)端口編號(hào)(即端口地址),只能取00H0FFH共256個(gè)端口地址.INAX,PORT/直接的字輸入,AX存儲(chǔ)連續(xù)兩個(gè)端口地址PORT+1,PORTINAL,DX/間接的字節(jié)輸入,端口地址范圍可通過(guò)DX設(shè)置為0000H0FFFFH共65536個(gè)端口地址INAX,DX間接的字輸入14數(shù)據(jù)傳送指令OUT(OUTput)輸出指令:信息從CPU!過(guò)累加器傳送到I/OOUTPORT,AL/直接的字節(jié)輸出,PORT規(guī)定與IN指令相同.OUTPORT,AXOUTDX,AL間接的字節(jié)輸出OUTDX,AXMOVAL,
7、05HOUT27H,AL/將字節(jié)05H傳送到地址15算術(shù)運(yùn)算指令A(yù)DD(ADD)27H的端口ADDDST,SRC/Byte/Word執(zhí)行操作:dst=dst+src1 .兩個(gè)存儲(chǔ)器操作數(shù)不能通過(guò)ADD旨令直接相加,即DST和SRC®須有一個(gè)是通用寄存器操作數(shù).2 .段寄存器不能作為SRC和DST.3 .影響標(biāo)志位AuxiliaryCrrayFlag,CarryFlag,OverflowFlag,ParityFlag,SignFlag和ZeroFlag,如下所?。篊F根據(jù)最高有效位是否有進(jìn)(借)位設(shè)置的:有進(jìn)(借)位時(shí)CF=1,無(wú)進(jìn)(借)位時(shí)CF=0.OF根據(jù)操作數(shù)的符號(hào)及其變化來(lái)設(shè)置
8、的:若兩個(gè)操作數(shù)的符號(hào)相同,而結(jié)果的符號(hào)與之相反時(shí)OF=1,否則為0.ZF根據(jù)結(jié)果來(lái)設(shè)置:不等于0時(shí)ZF=0,等于0時(shí)ZF=1SF根據(jù)結(jié)果的最高位來(lái)設(shè)置:最高位為0,則SF=0.AF根據(jù)相加時(shí)D3是否向D4進(jìn)(借)位來(lái)設(shè)置:有進(jìn)(借)位時(shí)AF=1,無(wú)進(jìn)(借)位時(shí)AF=0PF根據(jù)結(jié)果的1的個(gè)數(shù)時(shí)否為奇數(shù)來(lái)設(shè)置:1的個(gè)數(shù)為奇數(shù)時(shí)PF=0,為偶數(shù)時(shí)PF=116算術(shù)運(yùn)算指令A(yù)DCDST,SRCADC(ADdwithCarry)帶進(jìn)位加法指令A(yù)DCDST,SRC/Byte/Word執(zhí)行操作:dst=dst+src+CF/與ADD/、同之處是還要加上進(jìn)位標(biāo)志位的值.17算術(shù)運(yùn)算指令I(lǐng)NCOPRINC(IN
9、Creament)加1指令I(lǐng)NCOPR/Byte/Word執(zhí)行操作:OPR=OPR+11.OPR可以是寄存器和存儲(chǔ)器操作數(shù),但不能是立即數(shù)和段寄存器2.影響標(biāo)志位OF,SF,ZF,PF和AF,不影響CF.18算術(shù)運(yùn)算指令SUBDST,SRC減法運(yùn)算指令SUB(SUBtract)/、帶借位的減法指令SUBDST,SRC/Byte/Word執(zhí)行操作:dst=dst-src1 .DST和SRCM址方式及規(guī)定與AD刖同.2 .影響全部標(biāo)志位.(判斷標(biāo)志位參見(jiàn)ADD)19算術(shù)運(yùn)算指令SBBDST,SRCSBB(SuBtractwithBorrow)帶借位減法指令SBBDST,SRC/Byte/Word執(zhí)
10、行操作:dst=dst-src-CF20算術(shù)運(yùn)算指令DECOPRDEC(DECrement)減1指令DECOPR/Byte/Word執(zhí)行操作:OPR=OPR-1/除CF標(biāo)志位,其余標(biāo)志位都受影響.21算術(shù)運(yùn)算指令NEG(NEGate)求補(bǔ)指令NEGOPR執(zhí)行操作:opr=0-opr/將操作數(shù)按位求反后末位加1.22算術(shù)運(yùn)算指令CMP(CoMPare)比較指令CMPOPR1,OPR2執(zhí)行操作:OPRIOPR2/與SUB旨令一樣執(zhí)行運(yùn)算,但不保存結(jié)果.比情況無(wú)符號(hào)數(shù)有符號(hào)數(shù)A=BZF=1ZF=1A>BCF=0&&ZF=0SFAOF=0&&ZF=0A<BC
11、F=1&&ZF=0SFAOF=1&&ZF=0A>=BCF=0|ZF=1SFAOF=0|ZF=1A<=BCF=1|ZF=1SFAOF=1|ZF=123算術(shù)運(yùn)算指令MUL乘法運(yùn)算指令,無(wú)符號(hào)數(shù)乘法指令MULSRC/Byte/Word.執(zhí)行操作:Byte=>AX=AL*src/字節(jié)運(yùn)算時(shí)目的操作數(shù)用AL,乘積放在AX中Word=>DX=AX*src/字運(yùn)算時(shí)目的操作數(shù)用AX,DX存放乘積白高位字,AX放乘積的低位字1 .目的數(shù)必須是累加器AX或AL,指令中/、需寫出2 .源操作數(shù)SRCM以是通用寄存器和各種尋址方式的存儲(chǔ)器操作數(shù),而絕對(duì)不允許是
12、立即數(shù)或段寄存器.24算術(shù)運(yùn)算指令I(lǐng)MULIMUL(sIgnedMULtiple)有符號(hào)數(shù)乘法指令I(lǐng)MULSRC/與MUL旨令相同,但必須是帶符號(hào)數(shù)25算術(shù)運(yùn)算指令DIV除法運(yùn)算指令DIVSRC/Byte/Word其中:SRC的規(guī)定同乘法指令MUL執(zhí)行操作:Byte=>AX/src/字節(jié)運(yùn)算時(shí)目的操作數(shù)在AX中,結(jié)果的商在AL中,余數(shù)中AH中Word=>DX,AX/src/字運(yùn)算時(shí)目的操作數(shù)在DX高位字和AX低位字中,結(jié)果的商在AX中,余數(shù)在DX中存儲(chǔ)器操作數(shù)必須指明數(shù)據(jù)類型:BYTEPTRsrc或WORDPTRsrc26算術(shù)運(yùn)算指令I(lǐng)DIVIDIV(sIgnedDIVied)有符
13、號(hào)數(shù)除法指令I(lǐng)DIVSRC/Byte/Word與DIV指令相同,但必須是帶符號(hào)數(shù)27算術(shù)運(yùn)算指令CBW轉(zhuǎn)換指令CBW(ConvertBytetoWord)字節(jié)轉(zhuǎn)換為字指令CBW執(zhí)行操作:AL中的符號(hào)位(D7)擴(kuò)展到8位AH中,若AL中的D7=0,貝UAH=00H若AL中的D7=1,貝UAH=FFH.28算術(shù)運(yùn)算指令CWDCWD(ConvertWordtoDoubleword)?轉(zhuǎn)換為雙字指令CWD執(zhí)行操作:AX中的符號(hào)位(D15)擴(kuò)展到16位DX中,若AX中的D15=Q則DX=0000H若AX中的D15=1,則DX=FFFFH.29算術(shù)運(yùn)算指令DAA十進(jìn)制調(diào)整指令當(dāng)計(jì)算機(jī)進(jìn)行計(jì)算時(shí),必須先把十
14、進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),再進(jìn)行二進(jìn)制數(shù)運(yùn)算,最后將結(jié)果又轉(zhuǎn)換為十進(jìn)制數(shù)輸出.在計(jì)算機(jī)中,可用4位二進(jìn)制數(shù)表十位十進(jìn)制數(shù),這種代碼稱為BCD(BinaryCodedDecimal).BCD3又稱8421碼,在PC<中,BCD碼可用壓縮的BCD碼和非壓縮的BCD馬兩種格式表小.壓縮的BC則用4位二進(jìn)制數(shù)表十個(gè)十W數(shù),整個(gè)十進(jìn)數(shù)形式為一個(gè)順序的以4位為一組的數(shù)串.非壓縮的BC則以8位為一組表十個(gè)十進(jìn)制數(shù),8位中的低4位表示8421的BCDH,而高4位則沒(méi)有意義.壓縮的BC則調(diào)整指令DAA(DecimalAdjustforAddition)加法的十進(jìn)制調(diào)整指令DAA執(zhí)行操作:執(zhí)行之前必須先執(zhí)行AD
15、DIEADC旨令,加法指令必須巴兩個(gè)壓縮的BCM相加,并把結(jié)果存話在AL寄存器中.30算術(shù)運(yùn)算指令DASDAS(DecimalAdjustforSubtraction)減法的十進(jìn)制調(diào)整指令DAS執(zhí)行操作:執(zhí)行之前必須先執(zhí)行SUB<SBB旨令,減法指令必須把兩個(gè)壓縮的BCM相減,并氫結(jié)果存放在AL寄存器中.31算術(shù)運(yùn)算指令A(yù)AA非壓縮的BC則調(diào)整指令A(yù)AA(ASCIIAdjustforAddition)加法的ASCII調(diào)整指令A(yù)AA執(zhí)行操作:執(zhí)行之前必須先執(zhí)行ADDIEADC旨令,加法指令必須把兩個(gè)非壓縮的BCDK相加,并把結(jié)果存話在AL寄存器中.32算術(shù)運(yùn)AASAAS(ASCIIAdju
16、stforSubtraction)減法的ASCII算指令調(diào)整指令A(yù)AS執(zhí)行操作:執(zhí)行之前必須先執(zhí)行SUBESBBm令,減法指令必須把兩個(gè)非壓縮的BCD碼相減,并虱結(jié)果存放在AL寄存器中.33用操作指令MOVSMOVS(MOVeString)中傳送指令MOVS網(wǎng)字節(jié)用傳送DF=0SI=SI+1,DI=DI+1;DF=1,SI=SI-1,DI=DI-1MOVSW字用傳送DF=0SI=SI+2,DI=DI+2;DF=1,SI=SI-2,DI=DI-2執(zhí)行操作:DI=SI,將位于DS段的由SI所指出的存儲(chǔ)單元的字節(jié)或字傳送到位于ES段的由DI所指出的存儲(chǔ)單元,再修改SI和DI,從而指向卜一個(gè)元素.在執(zhí)
17、行該指令之前,必須附置SI和DI的初值,用STD或CLD&置DF值.MOVSDST,SRC/同上,不常用,DST和SRCH是用來(lái)用類型檢查,并不允許使用其它尋址方式來(lái)確定操作數(shù).1 .目的用必須在附加段中,即必須是ES:DI2 .源用允許使用段跨越前綴來(lái)修飾,但偏移地址必須是SI.34用操作指令STOSSTOS(STOreintoString)存入用指令STOSDSTSTOS困存放字節(jié)用(DI)=ALSTOSW存放字串(DI)=AX執(zhí)行品作:把AL或AX中的內(nèi)谷存放由DI指定的附加段的字節(jié)或字單元中,并根據(jù)DF值修改及數(shù)據(jù)類型修改DI的內(nèi)容.1 .在執(zhí)行該指令之前,必須把要存入的數(shù)據(jù)預(yù)
18、先存入AX或AL中,必須附置DI的初值.2 .DI所指向的存儲(chǔ)單元只能在附加段中,即必須是ES:DI35用操作指令LODSLODS(LOaDfromString)從申取指令LODSSRCLODSB/從字節(jié)用取AL=(SI)LODSW/從字用取AX=(SI±1)(SI)執(zhí)行操作:把由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 .源用允許使用段超越前綴來(lái)改變數(shù)據(jù)存儲(chǔ)的段區(qū).36用操作REPREP(REPeat)重復(fù)操OT綴指令REPStringP
19、rimitive/其中:StringPrimitive可為MOVS,STO豉LODS旨令執(zhí)行操作:使REP前綴后的用指令重復(fù)執(zhí)行,每執(zhí)行一次CX=CX-1直至CX=0寸退出REP.37用操作指令CLD方向標(biāo)志設(shè)置CLD(CLearDirectionflag)消除方向標(biāo)志指令執(zhí)行操作:令DF=0,其后SI,DI執(zhí)行增量操作STD(SeTDirectionflag)設(shè)置方向標(biāo)志指令38用操作指令STDSTD執(zhí)行操作:令DF=1,其后SI,DI執(zhí)行減量操作39用操作指令CMPSCMPS(CoMPareString)用比較指令CMPSSRC,DSTCMPSB/字節(jié)P比較(SI)-(DI)CMPSW字串
20、比較(SI+1)(SI)-(DI+1)(DI)執(zhí)行操作:把由SI指向的數(shù)據(jù)段中的一個(gè)字節(jié)或字與由DI指向的附加段中的一個(gè)字節(jié)或字相減,不保留結(jié)果,只根據(jù)結(jié)果置標(biāo)志位.40用操作指令SCASSCAS(SCAnString)用掃描指令SCASDSTSCASBSCASW執(zhí)行操作:把AX或AL的內(nèi)容與由DI指向的在附加段中的一個(gè)字節(jié)或字相減,不保留結(jié)果,根據(jù)結(jié)果置標(biāo)志位.41邏輯運(yùn)算指令和移位指令A(yù)ND(and)邏輯與指令A(yù)ND,OR,XOR和TEST都是雙字節(jié)操作指令,操作數(shù)的尋址方式的規(guī)定與算術(shù)運(yùn)算指令相同.NO無(wú)單字節(jié)操作指令,不允許使用立即數(shù).邏輯運(yùn)算均是按位進(jìn)行操作,真值表如下:A:邏輯運(yùn)算
21、指令A(yù)ND(and)邏輯與指令A(yù)NDDST,SRC/Byte/Word執(zhí)行操作:dst=dst&src1 .AND指令執(zhí)行后,將使CF=0,OF=0,AF®無(wú)定義,指令執(zhí)行結(jié)果影響SF,ZF和PF標(biāo)志位.2 .AND指令典型用法A:用于屏蔽某些位,即使某些位為0.屏敝AL的高4位:即將高4位和0000B相與,低4位和1111B相與MOVAL,39H/AL=00111001B39HADDAL,0FH/AL=00001001B09H即00111001B39H&00001111B0FH=00001001B09H3.AND指令典型用法B:取出某一位的值(見(jiàn)TEST)42邏輯運(yùn)
22、算指令和移位指令OROR(or)邏輯或指令ORDST,SRC/Byte/Word執(zhí)行操作:dst=dst|src1.OR指令執(zhí)行后,將使CF=0,OF=0,AF位無(wú)定義,指令執(zhí)行結(jié)果影響SF,ZF和PF標(biāo)志位.2.常用于將某些位置1.將AL的第5位置1:MOVAL,4AH/AL=01001010B4AHORAL,10H/AL=01011010B5AH即01001010B4AH|00010000B10H=01011010B5AH43邏輯運(yùn)算指令和移位指令XORXOR(eXclusiveOR)邏輯異或指令XORDST,SRC/Byte/Word執(zhí)行操作:dst=dstAsrc1 .XOR旨令常用于
23、使某個(gè)操作數(shù)清零,同時(shí)使CF=0,清除進(jìn)位標(biāo)志.2 .XOR旨令使某些位維持不變則與'0'相異或,若要使某些位取反則與'1'相異或.將AL的圖4位維持/、父,低4位取反:MOVAL,B8H/AL=10111000BB8HXORAL,0FH/AL=10110111BB7H即10111000BB8Ha000011110FH=10110111BB7H測(cè)試某一個(gè)操作數(shù)是否與另一確定操作數(shù)相等:XORAX,042EHJZ./如果AX=042EH,貝UZF=TRUE(1),執(zhí)行JZ.44邏輯運(yùn)算指令和移位指令NOTNOTOPR/Byte/Word執(zhí)行操作:opr=-opr/
24、0110010165H=100110109AH1 .操作數(shù)不能使用立即數(shù)或段寄存器操作數(shù),可使用通用寄存器和各種方式尋址的存儲(chǔ)器操作數(shù).2 .NOT指令不影響任何標(biāo)志位。將AL各位取反:MOVAL,65H/AL=01100101B65HNOTAL/AL=10011010B9AH即01100101B65H=10011010B9AH45邏輯運(yùn)算指令和移位指令TESTTEST(test)指令TESTOPR1,OPR2/Byte/Word執(zhí)行操作:opr1&opr21 .兩個(gè)操作數(shù)相與的結(jié)果不保存,結(jié)果影響標(biāo)志位PF,SF和ZF,使CF=0,OF=0,而AF位無(wú)定義.2 .TEST指令常用于在
25、不改變?cè)械牟僮鲾?shù)的情況卜,檢測(cè)某一位或某幾位的條件是否滿足.只要令用來(lái)測(cè)試的操作數(shù)對(duì)應(yīng)檢測(cè)位為1,其余位為0,相與后判斷零標(biāo)志ZF值的真假.檢測(cè)某位是否為1:令用來(lái)測(cè)試的操作數(shù)對(duì)應(yīng)檢測(cè)位為1,其余位為0,TEST指令后,若該小1貝UJNZ.TESTAL,000000001B/測(cè)試AL最低位是否為1二令用來(lái)測(cè)試的操作數(shù)對(duì)應(yīng)檢測(cè)位為1,其余位為0,執(zhí)行TEST指令JNZTHER/最彳氐位若為1,貝UZF=FALSE(0),執(zhí)行JNZTHER,否則執(zhí)行卜一條指令.或者:先對(duì)操作數(shù)求反,令用來(lái)測(cè)試的操作數(shù)對(duì)應(yīng)檢測(cè)位為1,其余位為0,TEST指令后,若該位為1則JZ.MOVDL,AL/將AL傳送到DL
26、,主要是/、要影響AL的值.以下測(cè)試AL的b2位是否為1NOTDL/先對(duì)操作數(shù)求反TEST00000100B/令用來(lái)測(cè)試的操作數(shù)對(duì)應(yīng)檢測(cè)位為1,其余位為0,執(zhí)行TEST指令JZTHER若AL的b2fit1,則ZF=TRUE(1),執(zhí)行JZTHER46邏輯運(yùn)算指令和移位指令SHLB:移位指令所有的移位指令都影響標(biāo)志位CRORPF、SF和ZF.AF無(wú)定義.非循環(huán)邏輯移位:把操作數(shù)看成無(wú)符數(shù)來(lái)進(jìn)行移位.SHL(SHiftlogicalLeft)邏輯左移指令SHLOPR,CNT/Byte/Word執(zhí)行操作:使OPM移CNT©:,并使戢低CNT©:為全0.1.OPR®作數(shù)不
27、能使用立即數(shù)或段寄存器操作數(shù),可使用通用寄存器和各種方式尋址的存儲(chǔ)器操作數(shù).2.移位次數(shù)由CNTft定.每次將OPR勺最高位移出并移到CF,最低位補(bǔ)0.MOVCL,7/若移位多次,先預(yù)置移位次數(shù)CLSHLDX,CL/CNT可取1或CL寄存器操作數(shù)47邏輯運(yùn)算指令和移位指令SHRSHR(SHiftlogicalRight)邏輯右移指令SHROPR,CNT/Byte/Word同SHL,每次將OPR的最低位D0移出并移到CF.最高位補(bǔ)0.48邏輯運(yùn)算指令和移位指令SAL非循環(huán)算術(shù)移位:將操作數(shù)看成有符號(hào)數(shù)來(lái)進(jìn)行移位.SAL(ShiftArithmeticLeft)算術(shù)左移指令SALOPR,CNT/B
28、yte/WordSAL指令與SHLjf令完全相同49邏輯運(yùn)算指令SARSAR(ShiftArithmeticRight)算術(shù)右移指令SAROPR,CNT/Byte/Word和移位指令SAR旨令每次移位時(shí),將最高位移入次高位的同時(shí)最高位值/、變,最低位D0移出并移到CF.50邏輯運(yùn)算指令和移位指令ROL循環(huán)移位指令ROL(ROtateLeft)循環(huán)左移指令ROLOPR,CNT/Byte/Word每次移位時(shí),最高位移出并同時(shí)移到CF和最低位D0.51邏輯運(yùn)算指令和移位指令RORROR(ROtateRight)循環(huán)右移指令ROROPR,CNTByte/Word每次移位時(shí),最低位D0移出并同時(shí)移到CF
29、和最高位.52邏輯運(yùn)算指令和移位指令RCL帶進(jìn)位循環(huán)移位指令RCL(RotateLeftthroughCarry)帶進(jìn)位循環(huán)左移指令RCLOPR,CNT7Byte/Word53邏輯運(yùn)算指令和移位指令RCRRCR(RotateRightthroughCarry)帶進(jìn)位循環(huán)左移指令RCROPR,CNT/Byte/Word54控制轉(zhuǎn)移指令JMPJMP(JuMP)無(wú)條件轉(zhuǎn)移指令名稱段內(nèi)直接短跳轉(zhuǎn)格式JMPSHORTOPR執(zhí)行操作IP=IP+8位偏移量段內(nèi)直接近轉(zhuǎn)移JMPNEARPTROPFRP=IP+16位偏移量段內(nèi)間接轉(zhuǎn)移JMPWORDTROPFRP=(EA)段IWW移JMPFARPTROF)RP=
30、OPR®移地RE,CS=OP段地址段問(wèn)問(wèn)接轉(zhuǎn)移JMPDWORDPTFOPR;【IP=(EA),CS=(EA+2)1 .無(wú)條件轉(zhuǎn)移到指定的地址去執(zhí)行從該地址開(kāi)始的指令.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)容.55控制轉(zhuǎn)移指令JZ條件轉(zhuǎn)移指令:根據(jù)條指令所設(shè)置的條件碼(標(biāo)志位)來(lái)判斷測(cè)試條件.根據(jù)五個(gè)標(biāo)志位:ZF、SF、OFPF、CF的兩種狀態(tài)(0FALSER1TRUIET生10種測(cè)試條件.NameFlagFlag=TRUE1Flag=FALSE0ZeroFalgZFJ
31、ZOPR/結(jié)果為零轉(zhuǎn)移JNZOPR/結(jié)果不為零轉(zhuǎn)移SignFalgSFJSOPR/結(jié)果為負(fù)轉(zhuǎn)移JNSOPR/結(jié)果為止轉(zhuǎn)移OverflowFlagOFJOOPR/溢出轉(zhuǎn)移JNOOPR/不溢出轉(zhuǎn)移ParityFlagPFJPOPR/結(jié)果為偶轉(zhuǎn)移JNPOPR/結(jié)果為奇轉(zhuǎn)移CarryFlagCFJCOPR/有進(jìn)位轉(zhuǎn)移JNCOPR/無(wú)進(jìn)位轉(zhuǎn)移兩個(gè)數(shù)比較:情況無(wú)符號(hào)數(shù)有符號(hào)數(shù)指令滿足條件指令滿足條件A<BJCCF=1JLSFAOF=1&&ZF=0A>BJNCCF=0JNLSFAOF=0|ZF=1A<BJNACF=1|ZF=1JLGSFAOF=1|ZF=1A>BJAC
32、F=0&&ZF=0JGSFAOF=0&&ZF=056控制轉(zhuǎn)移指令JNZ57控制轉(zhuǎn)移指令JS58控制轉(zhuǎn)移指令JNS59控制轉(zhuǎn)移指令JO60控制轉(zhuǎn)移指令JNO61控制轉(zhuǎn)移指令JP62控制轉(zhuǎn)移指令JNP63控制轉(zhuǎn)JC646566676869707172移指令移指令控制轉(zhuǎn)移指令移指令移指令移指令移指令移指令移指令移指令JNCJAJNAJLJNLJLGJGJCXZOPRLOOP737475控制轉(zhuǎn)移指令控制轉(zhuǎn)移指令控制轉(zhuǎn)移指令LOOPZOPRLOOPNZOPRCALL測(cè)試CX轉(zhuǎn)移指令JCXZOPR/CX=0時(shí)轉(zhuǎn)移LOOP(LOOP)環(huán)指令LOOPOPRLOOPZOPR測(cè)試條
33、件:是個(gè)標(biāo)號(hào)CX*0/OPR在程序中實(shí)際測(cè)試條件:ZF=1&&CX*0測(cè)試條件:ZF=0&&CX*0LOOPNZOPR執(zhí)行操作:先執(zhí)行CX=CX-1再檢測(cè)上面白測(cè)試條件,如滿足則IP=IP+符號(hào)擴(kuò)展的D8,不滿足則退出循環(huán).過(guò)程調(diào)用及返回指令CALL(CALL)過(guò)程調(diào)用指令CALLDST/DST在程序中實(shí)際是子程序標(biāo)號(hào)執(zhí)行操作:先將過(guò)程的返回地址(即CALL的下一條指令的首地址)存入堆棧,然后轉(zhuǎn)移到過(guò)程入口地址執(zhí)行子程序.調(diào)用方式格式斷點(diǎn)保護(hù)入棧情況過(guò)程入匚地段內(nèi)直接CALLNEARPTIPR1R(SP-1)(SP-2)IP,CS不進(jìn)棧CS值保才變,IP一等不D
34、ST段內(nèi)間CALLWORDPTRSP-1)(SP-2)CS值保才等不接(EAIP,CS不進(jìn)棧變,IP一(EA)段問(wèn)宜接CALLFARPTRPR1(SP-1)(SP-2)一CS,(SP-3)(SP-4)-IPIPADS-址,CS一址%移地DSTO段問(wèn)問(wèn)接,、.r-7*、rCALLDWORDPTR(EQ(SP-1)(SP-2)一CS,(SP-3)(SP-4)-IPIP(EAA+2),CS-(寓符作說(shuō)明.RET(RETurn)?程序返回指令RETRETEXP/帶立即數(shù)返回子程序返回指令RETM在子程序末尾,它使子程序在執(zhí)行完全部任務(wù)后返回主程序繼續(xù)執(zhí)行被打斷后的程序.返回地址在子程序調(diào)用時(shí)入棧保存的
35、斷點(diǎn)地址-IP或IP和CS.767778798081控制轉(zhuǎn)移指令處理器控制指令處理器控制指令處理器控制指令處理器控制指令處理器控制指令RETCLCCMCSTCNOPHLTCLC(CLearCarry)進(jìn)位位置0指令CLC/執(zhí)行操作后,CF=0CMC(CoMplementCarry)進(jìn)位位求反指令CMC/執(zhí)行操作后,CF=!CFSTC(SeTCarry)進(jìn)位位置1指令STC/執(zhí)行操作后,CF=1NOP(NoOperetion)無(wú)操作指令NOP/此指令不執(zhí)行任何操作,具機(jī)器碼占一個(gè)字節(jié)單元HLT(HaLT)停機(jī)指令HLT執(zhí)行操作后,使機(jī)器暫停工作,使處理器CPUt于停機(jī)狀態(tài),以等待一次外部中斷到來(lái)
36、,中斷結(jié)束后,程序繼續(xù)執(zhí)行,CPU繼續(xù)工作.2.2.偽操作指令82同一個(gè)程序中,標(biāo)號(hào)或變量只能定義一次.標(biāo)號(hào)有三種屬性:段、偏移、類型(NEARPTR,WORPTR,FAR8384PRT,DWORDPTR)數(shù)值回送操作符:TYPELEGNTHSIZE、OFFSETSEGTYPEexpression(orlabel)如果表達(dá)式是變量,則回送該變量以字節(jié)數(shù)表示的類型:DB為1,DW2,DD為4如果表達(dá)式是標(biāo)號(hào),則回送該標(biāo)號(hào)類型的數(shù)值:NEA時(shí)-1,FAR為-2.如果表達(dá)式是常量,則回送0.arrayDWA110H,B02CH,C322HADDAX,TYPEarray等價(jià)于ADDAX,2LENGTH
37、variable對(duì)于變量使用DUP勺情況,將回送分配給該變量的單元數(shù);對(duì)其它情況則回送1.feesDW100DUP(?)MOVCX,LEGNTHfees等價(jià)于MOVCX,100SIZEvariable回送分配給該變量的字節(jié)數(shù)MOVCX,SIZEfees等價(jià)于MOVCX,200OFFSETvariable(orlable)回送變量或標(biāo)號(hào)的偏移地址MOVBX,OFFSETOPER_OW于LEABX,OPER_ONE旬,將OPER_ONE偏移地址送入BXSEGvariable(orlable)回送變量或標(biāo)號(hào)的段地址.若OPER_ONEDATA_SEG據(jù)段中的一個(gè)變量,下面語(yǔ)句取得DATA_SEG首地
38、址MOVDS,SEGOPER_ONE價(jià)于MOVAX,DATA_SEGMODS,AX屬性操作符:PTRTHIS、HIGHLOWHIGHWORCLOWWORDtypePTRexpression用來(lái)給已分配的存儲(chǔ)地址賦予另一種屬性,使該地址具有另一種類型.表示按expression表達(dá)式尋址,按指定的類型type看待.即PTR是給后面的expression操作數(shù)賦予新的數(shù)據(jù)類型或地址類型.MOVBYTEPTRBX,5/存入字節(jié)(Byte)單元MOVWORDPTRBX,5/存入字(Word)單元THIStype指定與當(dāng)前地址計(jì)數(shù)器相等的一個(gè)地址單元的類型.type是NEARFARPROCCt可以是BY
39、PEWORD.first_typeEQUTHISBYTEword_tableDW100DUP(?)止匕時(shí),first_type的偏移地址與word_table完全相同,但它是字節(jié)類型HIGH(LOW)express字節(jié)分離操作符,HIGH取高位字節(jié),LOW取低位字節(jié).HIGHWORD(LOWWORD)exprefe離操作符,HIGHWOR取高位字,LOWWORD低位字.CONSTEQU0ABCDHMOVAH,HIGHTCOW于MOVAH,0ABH85數(shù)據(jù)定義語(yǔ)句:variable_nameMnemonicoper1,oper2.常用的助記符Mnemonic有:定義字節(jié),表小具后母?jìng)€(gè)操件數(shù)占后一
40、個(gè)字節(jié)(1Byte)單DB-兀DW定義字,表小表小其后每個(gè)操作數(shù)占啟一個(gè)字(2Byte)單元定義雙字,表示表示其后每個(gè)操作數(shù)占啟兩個(gè)字(4Byte)1<1<.單兀DQ定義四個(gè)字,表示表示其后每個(gè)操作數(shù)占有四個(gè)字(8Byte)單元DT定義十個(gè)字節(jié),表示表示其后每個(gè)操作數(shù)占有十個(gè)字Dl(10Byte)單元,形成壓縮BCDK.data_byteDB10,4,10H,?/共定義了4個(gè)字節(jié),其中?是保留單元data_wordDW100,?,100H/共定義了3個(gè)字(6Byte)str_aaDB'ABCDEFG'/定義和初始化多于兩個(gè)能上能下字符的字符串時(shí),只能使用DB偽指令.86符號(hào)定義語(yǔ)句(即常量)nameEQUexpression/定義PURGEiamelname2./解除CONSTANTEQU256表示CO
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二孩生育健康知識(shí)指南
- 蝸牛和黃鸝鳥(niǎo)音樂(lè)教育
- 產(chǎn)后媽媽健康管理指南
- 信息技術(shù)培訓(xùn)總結(jié)
- 顱腦急危重癥與康復(fù)疑難病例的多學(xué)科診療實(shí)踐
- 外科縫合換藥病例分析
- 義務(wù)教育標(biāo)準(zhǔn)管理
- 妊娠合并糖尿病病例分析
- 【隨州】2025年湖北隨州市隨縣事業(yè)單位專項(xiàng)招聘殯儀館人員4人筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 【深圳】2025年廣東深圳市福田區(qū)招聘高層次緊缺專業(yè)人才20人筆試歷年典型考題及考點(diǎn)剖析附帶答案詳解
- 艾梅乙反歧視培訓(xùn)課件
- 浙江省杭州市2024-2025學(xué)年高二下學(xué)期6月期末教學(xué)質(zhì)量檢測(cè)英語(yǔ)試題(含答案)
- 2025年河南省中考地理試題(含答案)
- 2025安全生產(chǎn)月一把手講安全公開(kāi)課三十二(91P)
- DB64-266-2018 建筑工程資料管理規(guī)程
- 人教鄂教版六年級(jí)下冊(cè)科學(xué)期末專題訓(xùn)練:實(shí)驗(yàn)題、綜合題(含答案)
- 2025年經(jīng)濟(jì)法與金融監(jiān)管專業(yè)考試試題及答案
- 基于項(xiàng)目式學(xué)習(xí)的小學(xué)勞動(dòng)教育課程教學(xué)設(shè)計(jì)
- 2025屆湖北省武漢市武昌區(qū)南湖中學(xué)英語(yǔ)七年級(jí)第二學(xué)期期末達(dá)標(biāo)檢測(cè)試題含答案
- 等離子體泡跨尺度耦合-洞察及研究
- 2025課件:紅色基因作風(fēng)建設(shè)七一黨課
評(píng)論
0/150
提交評(píng)論