微機原理與接口技術指令系統(tǒng)整理_第1頁
微機原理與接口技術指令系統(tǒng)整理_第2頁
微機原理與接口技術指令系統(tǒng)整理_第3頁
微機原理與接口技術指令系統(tǒng)整理_第4頁
微機原理與接口技術指令系統(tǒng)整理_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、目錄18086CPU旨令21.1.編寫說明22指令索引表22.1. 8086CPU旨令22.2. 偽操作指令1418086CPU旨令1.1.編寫說明對8086CPU勺指令逐條介紹2指令索引表2.1.8086CPU旨令序號指令分類指令說明1數(shù)據(jù)傳送指令MOVDST,SRC為雙操作數(shù)指令,兩個操作數(shù)中必須有一個是寄存器.1 .目的數(shù)可以是通用寄存器,存儲單元和段寄存器(但不允許用CS段寄存器).2 .立即數(shù)不能直接送段寄存器3 .不允許在兩個存儲單元直接傳送數(shù)據(jù)4 .不允許在兩個段寄存器間直接傳送信息2數(shù)據(jù)傳送指令PUSHSRC堆棧操作是以"后進先出"的方式進行數(shù)據(jù)操作.入棧的

2、操作數(shù)除不允許用立即數(shù)外,可以為通用寄存器,段寄存器(全部)和存儲器.入棧時高位字節(jié)先入棧,低位字節(jié)后入棧.3數(shù)據(jù)傳送指令POPDST出棧操作數(shù)除不允許用立即數(shù)和CS段寄存器外,可以為通用寄存器,段寄存器和存儲器.執(zhí)行POPSS旨令后,堆棧區(qū)在存儲區(qū)的位置要改變.執(zhí)行POPSP指令后,棧頂?shù)奈恢靡淖?4數(shù)據(jù)傳送指令XCHGOPR1,OPR2執(zhí)行操作:Tmp=OPR1OPR1=OPR2OPR2=Tmp1 .必須有一個操作數(shù)是在寄存器中2 .不能與段寄存器交換數(shù)據(jù)3 .存儲器與存儲器之間不能交換數(shù)據(jù).5數(shù)據(jù)傳送指令XLAT(OPR可選)換碼指令:把一種代碼轉換為另一種代碼.執(zhí)行操作:AL=(BX

3、+AL)指令執(zhí)行時只使用預先已存入BX中的表格首地址,執(zhí)行后,AL中內(nèi)容則是所要轉換的代碼.6數(shù)據(jù)傳送指令LEAREG,SRC指令把源操作數(shù)SRC勺有效地址送到指定的寄存器中.執(zhí)行操作:REG=EAsrc注:SRCR能是各種尋址方式的存儲器操作數(shù),REG只能是16位寄存器MOWX,OFFSEOPER_ONE價于LEABX,OPER_ONMOVSP,BX/將BX間接尋址的相繼的二個存儲單元的內(nèi)容送入SP中LEASP,BX/將BX的內(nèi)容作為存儲器肩效地址送入SP中7數(shù)據(jù)傳送指令LDSREG,SRC/常指定SI寄存器。執(zhí)行操作:REG=(SRC),DS=(SRC+2)將SRC旨出的前二個存儲單元的內(nèi)

4、容送入指令中指定的寄存器中,后二個存儲單元送入DS段寄存器中。8數(shù)據(jù)傳送指令LESREG,SRC/常指定DI寄存器執(zhí)行操作:REG=(SRC),ES=(SRC+2)與LDS:®:相同,/、同之處是將ES代替DS而已.9數(shù)據(jù)傳送指令LAHFLAHF(LoadAHwithFlags)標志位送AH指令/將PSVW存器中的低8位的狀態(tài)標志(條件碼)送入AH的相應位,SF送D7位,ZF送D6位執(zhí)行操作:AH=PSWW勺低位字節(jié)。10數(shù)據(jù)傳送指令SAHFSAHF(StoreAHintoFlags)AH送標志寄存器指令將AH寄存器的相應位送到PSW寄存器的低8位的相應位,AH的D7位送SF,D6位

5、送ZF執(zhí)行操作:PSW的低位字節(jié)=AH11數(shù)據(jù)傳送指令PUSHFPUSHF(PUSHtheFlags)標志進棧指令/將標志寄存器的值壓入堆棧頂部,同時棧指針SP值減2執(zhí)行操作:SP=SP-1,(SP尸PSW的高8位,SP=SP-1,(SP尸PSW勺彳氐8位12數(shù)據(jù)傳送指令POPFPOPF(POPtheFlags)標志出棧指令與PUSHFf反,從堆棧的頂部彈出兩個字節(jié)送到PSW?存器中,同時堆棧指針值加2執(zhí)行操作:PSW低8位=(SP),SP=SP+1,PSW高8位=(SP),SP=SP+113數(shù)據(jù)傳送指令IN輸入輸出指令(IN,OUT)只限于使用累加器AX或AL與外部設備的端口傳送信息.(IN

6、put)輸入指令:信息從I/O通過累加器傳送到CPUINAL,PORT/直接的字節(jié)輸入,POR說外設端口編號(即端口地址),只能取00H0FFH共256個端口地址.INAX,PORT/直接的字輸入,AX存儲連續(xù)兩個端口地址PORT+1,PORTINAL,DX/間接的字節(jié)輸入,端口地址范圍可通過DX設置為0000H0FFFFH共65536個端口地址INAX,DX間接的字輸入14數(shù)據(jù)傳送指令OUT(OUTput)輸出指令:信息從CPU!過累加器傳送到I/OOUTPORT,AL/直接的字節(jié)輸出,PORT規(guī)定與IN指令相同.OUTPORT,AXOUTDX,AL間接的字節(jié)輸出OUTDX,AXMOVAL,

7、05HOUT27H,AL/將字節(jié)05H傳送到地址15算術運算指令ADD(ADD)27H的端口ADDDST,SRC/Byte/Word執(zhí)行操作:dst=dst+src1 .兩個存儲器操作數(shù)不能通過ADD旨令直接相加,即DST和SRC®須有一個是通用寄存器操作數(shù).2 .段寄存器不能作為SRC和DST.3 .影響標志位AuxiliaryCrrayFlag,CarryFlag,OverflowFlag,ParityFlag,SignFlag和ZeroFlag,如下所?。篊F根據(jù)最高有效位是否有進(借)位設置的:有進(借)位時CF=1,無進(借)位時CF=0.OF根據(jù)操作數(shù)的符號及其變化來設置

8、的:若兩個操作數(shù)的符號相同,而結果的符號與之相反時OF=1,否則為0.ZF根據(jù)結果來設置:不等于0時ZF=0,等于0時ZF=1SF根據(jù)結果的最高位來設置:最高位為0,則SF=0.AF根據(jù)相加時D3是否向D4進(借)位來設置:有進(借)位時AF=1,無進(借)位時AF=0PF根據(jù)結果的1的個數(shù)時否為奇數(shù)來設置:1的個數(shù)為奇數(shù)時PF=0,為偶數(shù)時PF=116算術運算指令ADCDST,SRCADC(ADdwithCarry)帶進位加法指令ADCDST,SRC/Byte/Word執(zhí)行操作:dst=dst+src+CF/與ADD/、同之處是還要加上進位標志位的值.17算術運算指令INCOPRINC(IN

9、Creament)加1指令INCOPR/Byte/Word執(zhí)行操作:OPR=OPR+11.OPR可以是寄存器和存儲器操作數(shù),但不能是立即數(shù)和段寄存器2.影響標志位OF,SF,ZF,PF和AF,不影響CF.18算術運算指令SUBDST,SRC減法運算指令SUB(SUBtract)/、帶借位的減法指令SUBDST,SRC/Byte/Word執(zhí)行操作:dst=dst-src1 .DST和SRCM址方式及規(guī)定與AD刖同.2 .影響全部標志位.(判斷標志位參見ADD)19算術運算指令SBBDST,SRCSBB(SuBtractwithBorrow)帶借位減法指令SBBDST,SRC/Byte/Word執(zhí)

10、行操作:dst=dst-src-CF20算術運算指令DECOPRDEC(DECrement)減1指令DECOPR/Byte/Word執(zhí)行操作:OPR=OPR-1/除CF標志位,其余標志位都受影響.21算術運算指令NEG(NEGate)求補指令NEGOPR執(zhí)行操作:opr=0-opr/將操作數(shù)按位求反后末位加1.22算術運算指令CMP(CoMPare)比較指令CMPOPR1,OPR2執(zhí)行操作:OPRIOPR2/與SUB旨令一樣執(zhí)行運算,但不保存結果.比情況無符號數(shù)有符號數(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算術運算指令MUL乘法運算指令,無符號數(shù)乘法指令MULSRC/Byte/Word.執(zhí)行操作:Byte=>AX=AL*src/字節(jié)運算時目的操作數(shù)用AL,乘積放在AX中Word=>DX=AX*src/字運算時目的操作數(shù)用AX,DX存放乘積白高位字,AX放乘積的低位字1 .目的數(shù)必須是累加器AX或AL,指令中/、需寫出2 .源操作數(shù)SRCM以是通用寄存器和各種尋址方式的存儲器操作數(shù),而絕對不允許是

12、立即數(shù)或段寄存器.24算術運算指令IMULIMUL(sIgnedMULtiple)有符號數(shù)乘法指令IMULSRC/與MUL旨令相同,但必須是帶符號數(shù)25算術運算指令DIV除法運算指令DIVSRC/Byte/Word其中:SRC的規(guī)定同乘法指令MUL執(zhí)行操作:Byte=>AX/src/字節(jié)運算時目的操作數(shù)在AX中,結果的商在AL中,余數(shù)中AH中Word=>DX,AX/src/字運算時目的操作數(shù)在DX高位字和AX低位字中,結果的商在AX中,余數(shù)在DX中存儲器操作數(shù)必須指明數(shù)據(jù)類型:BYTEPTRsrc或WORDPTRsrc26算術運算指令IDIVIDIV(sIgnedDIVied)有符

13、號數(shù)除法指令IDIVSRC/Byte/Word與DIV指令相同,但必須是帶符號數(shù)27算術運算指令CBW轉換指令CBW(ConvertBytetoWord)字節(jié)轉換為字指令CBW執(zhí)行操作:AL中的符號位(D7)擴展到8位AH中,若AL中的D7=0,貝UAH=00H若AL中的D7=1,貝UAH=FFH.28算術運算指令CWDCWD(ConvertWordtoDoubleword)?轉換為雙字指令CWD執(zhí)行操作:AX中的符號位(D15)擴展到16位DX中,若AX中的D15=Q則DX=0000H若AX中的D15=1,則DX=FFFFH.29算術運算指令DAA十進制調(diào)整指令當計算機進行計算時,必須先把十

14、進制數(shù)轉換為二進制數(shù),再進行二進制數(shù)運算,最后將結果又轉換為十進制數(shù)輸出.在計算機中,可用4位二進制數(shù)表十位十進制數(shù),這種代碼稱為BCD(BinaryCodedDecimal).BCD3又稱8421碼,在PC<中,BCD碼可用壓縮的BCD碼和非壓縮的BCD馬兩種格式表小.壓縮的BC則用4位二進制數(shù)表十個十W數(shù),整個十進數(shù)形式為一個順序的以4位為一組的數(shù)串.非壓縮的BC則以8位為一組表十個十進制數(shù),8位中的低4位表示8421的BCDH,而高4位則沒有意義.壓縮的BC則調(diào)整指令DAA(DecimalAdjustforAddition)加法的十進制調(diào)整指令DAA執(zhí)行操作:執(zhí)行之前必須先執(zhí)行AD

15、DIEADC旨令,加法指令必須巴兩個壓縮的BCM相加,并把結果存話在AL寄存器中.30算術運算指令DASDAS(DecimalAdjustforSubtraction)減法的十進制調(diào)整指令DAS執(zhí)行操作:執(zhí)行之前必須先執(zhí)行SUB<SBB旨令,減法指令必須把兩個壓縮的BCM相減,并氫結果存放在AL寄存器中.31算術運算指令AAA非壓縮的BC則調(diào)整指令AAA(ASCIIAdjustforAddition)加法的ASCII調(diào)整指令AAA執(zhí)行操作:執(zhí)行之前必須先執(zhí)行ADDIEADC旨令,加法指令必須把兩個非壓縮的BCDK相加,并把結果存話在AL寄存器中.32算術運AASAAS(ASCIIAdju

16、stforSubtraction)減法的ASCII算指令調(diào)整指令AAS執(zhí)行操作:執(zhí)行之前必須先執(zhí)行SUBESBBm令,減法指令必須把兩個非壓縮的BCD碼相減,并虱結果存放在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所指出的存儲單元的字節(jié)或字傳送到位于ES段的由DI所指出的存儲單元,再修改SI和DI,從而指向卜一個元素.在執(zhí)

17、行該指令之前,必須附置SI和DI的初值,用STD或CLD&置DF值.MOVSDST,SRC/同上,不常用,DST和SRCH是用來用類型檢查,并不允許使用其它尋址方式來確定操作數(shù).1 .目的用必須在附加段中,即必須是ES:DI2 .源用允許使用段跨越前綴來修飾,但偏移地址必須是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ù)預

18、先存入AX或AL中,必須附置DI的初值.2 .DI所指向的存儲單元只能在附加段中,即必須是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ù)必須在存儲器中預先定義(用DB或DW)必須預置SI的初值.2 .源用允許使用段超越前綴來改變數(shù)據(jù)存儲的段區(qū).36用操作REPREP(REPeat)重復操OT綴指令REPStringP

19、rimitive/其中:StringPrimitive可為MOVS,STO豉LODS旨令執(zhí)行操作:使REP前綴后的用指令重復執(zhí)行,每執(zhí)行一次CX=CX-1直至CX=0寸退出REP.37用操作指令CLD方向標志設置CLD(CLearDirectionflag)消除方向標志指令執(zhí)行操作:令DF=0,其后SI,DI執(zhí)行增量操作STD(SeTDirectionflag)設置方向標志指令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ù)段中的一個字節(jié)或字與由DI指向的附加段中的一個字節(jié)或字相減,不保留結果,只根據(jù)結果置標志位.40用操作指令SCASSCAS(SCAnString)用掃描指令SCASDSTSCASBSCASW執(zhí)行操作:把AX或AL的內(nèi)容與由DI指向的在附加段中的一個字節(jié)或字相減,不保留結果,根據(jù)結果置標志位.41邏輯運算指令和移位指令AND(and)邏輯與指令AND,OR,XOR和TEST都是雙字節(jié)操作指令,操作數(shù)的尋址方式的規(guī)定與算術運算指令相同.NO無單字節(jié)操作指令,不允許使用立即數(shù).邏輯運算均是按位進行操作,真值表如下:A:邏輯運算

21、指令AND(and)邏輯與指令ANDDST,SRC/Byte/Word執(zhí)行操作:dst=dst&src1 .AND指令執(zhí)行后,將使CF=0,OF=0,AF®無定義,指令執(zhí)行結果影響SF,ZF和PF標志位.2 .AND指令典型用法A:用于屏蔽某些位,即使某些位為0.屏敝AL的高4位:即將高4位和0000B相與,低4位和1111B相與MOVAL,39H/AL=00111001B39HADDAL,0FH/AL=00001001B09H即00111001B39H&00001111B0FH=00001001B09H3.AND指令典型用法B:取出某一位的值(見TEST)42邏輯運

22、算指令和移位指令OROR(or)邏輯或指令ORDST,SRC/Byte/Word執(zhí)行操作:dst=dst|src1.OR指令執(zhí)行后,將使CF=0,OF=0,AF位無定義,指令執(zhí)行結果影響SF,ZF和PF標志位.2.常用于將某些位置1.將AL的第5位置1:MOVAL,4AH/AL=01001010B4AHORAL,10H/AL=01011010B5AH即01001010B4AH|00010000B10H=01011010B5AH43邏輯運算指令和移位指令XORXOR(eXclusiveOR)邏輯異或指令XORDST,SRC/Byte/Word執(zhí)行操作:dst=dstAsrc1 .XOR旨令常用于

23、使某個操作數(shù)清零,同時使CF=0,清除進位標志.2 .XOR旨令使某些位維持不變則與'0'相異或,若要使某些位取反則與'1'相異或.將AL的圖4位維持/、父,低4位取反:MOVAL,B8H/AL=10111000BB8HXORAL,0FH/AL=10110111BB7H即10111000BB8Ha000011110FH=10110111BB7H測試某一個操作數(shù)是否與另一確定操作數(shù)相等:XORAX,042EHJZ./如果AX=042EH,貝UZF=TRUE(1),執(zhí)行JZ.44邏輯運算指令和移位指令NOTNOTOPR/Byte/Word執(zhí)行操作:opr=-opr/

24、0110010165H=100110109AH1 .操作數(shù)不能使用立即數(shù)或段寄存器操作數(shù),可使用通用寄存器和各種方式尋址的存儲器操作數(shù).2 .NOT指令不影響任何標志位。將AL各位取反:MOVAL,65H/AL=01100101B65HNOTAL/AL=10011010B9AH即01100101B65H=10011010B9AH45邏輯運算指令和移位指令TESTTEST(test)指令TESTOPR1,OPR2/Byte/Word執(zhí)行操作:opr1&opr21 .兩個操作數(shù)相與的結果不保存,結果影響標志位PF,SF和ZF,使CF=0,OF=0,而AF位無定義.2 .TEST指令常用于在

25、不改變原有的操作數(shù)的情況卜,檢測某一位或某幾位的條件是否滿足.只要令用來測試的操作數(shù)對應檢測位為1,其余位為0,相與后判斷零標志ZF值的真假.檢測某位是否為1:令用來測試的操作數(shù)對應檢測位為1,其余位為0,TEST指令后,若該小1貝UJNZ.TESTAL,000000001B/測試AL最低位是否為1二令用來測試的操作數(shù)對應檢測位為1,其余位為0,執(zhí)行TEST指令JNZTHER/最彳氐位若為1,貝UZF=FALSE(0),執(zhí)行JNZTHER,否則執(zhí)行卜一條指令.或者:先對操作數(shù)求反,令用來測試的操作數(shù)對應檢測位為1,其余位為0,TEST指令后,若該位為1則JZ.MOVDL,AL/將AL傳送到DL

26、,主要是/、要影響AL的值.以下測試AL的b2位是否為1NOTDL/先對操作數(shù)求反TEST00000100B/令用來測試的操作數(shù)對應檢測位為1,其余位為0,執(zhí)行TEST指令JZTHER若AL的b2fit1,則ZF=TRUE(1),執(zhí)行JZTHER46邏輯運算指令和移位指令SHLB:移位指令所有的移位指令都影響標志位CRORPF、SF和ZF.AF無定義.非循環(huán)邏輯移位:把操作數(shù)看成無符數(shù)來進行移位.SHL(SHiftlogicalLeft)邏輯左移指令SHLOPR,CNT/Byte/Word執(zhí)行操作:使OPM移CNT©:,并使戢低CNT©:為全0.1.OPR®作數(shù)不

27、能使用立即數(shù)或段寄存器操作數(shù),可使用通用寄存器和各種方式尋址的存儲器操作數(shù).2.移位次數(shù)由CNTft定.每次將OPR勺最高位移出并移到CF,最低位補0.MOVCL,7/若移位多次,先預置移位次數(shù)CLSHLDX,CL/CNT可取1或CL寄存器操作數(shù)47邏輯運算指令和移位指令SHRSHR(SHiftlogicalRight)邏輯右移指令SHROPR,CNT/Byte/Word同SHL,每次將OPR的最低位D0移出并移到CF.最高位補0.48邏輯運算指令和移位指令SAL非循環(huán)算術移位:將操作數(shù)看成有符號數(shù)來進行移位.SAL(ShiftArithmeticLeft)算術左移指令SALOPR,CNT/B

28、yte/WordSAL指令與SHLjf令完全相同49邏輯運算指令SARSAR(ShiftArithmeticRight)算術右移指令SAROPR,CNT/Byte/Word和移位指令SAR旨令每次移位時,將最高位移入次高位的同時最高位值/、變,最低位D0移出并移到CF.50邏輯運算指令和移位指令ROL循環(huán)移位指令ROL(ROtateLeft)循環(huán)左移指令ROLOPR,CNT/Byte/Word每次移位時,最高位移出并同時移到CF和最低位D0.51邏輯運算指令和移位指令RORROR(ROtateRight)循環(huán)右移指令ROROPR,CNTByte/Word每次移位時,最低位D0移出并同時移到CF

29、和最高位.52邏輯運算指令和移位指令RCL帶進位循環(huán)移位指令RCL(RotateLeftthroughCarry)帶進位循環(huán)左移指令RCLOPR,CNT7Byte/Word53邏輯運算指令和移位指令RCRRCR(RotateRightthroughCarry)帶進位循環(huán)左移指令RCROPR,CNT/Byte/Word54控制轉移指令JMPJMP(JuMP)無條件轉移指令名稱段內(nèi)直接短跳轉格式JMPSHORTOPR執(zhí)行操作IP=IP+8位偏移量段內(nèi)直接近轉移JMPNEARPTROPFRP=IP+16位偏移量段內(nèi)間接轉移JMPWORDTROPFRP=(EA)段IWW移JMPFARPTROF)RP=

30、OPR®移地RE,CS=OP段地址段問問接轉移JMPDWORDPTFOPR;【IP=(EA),CS=(EA+2)1 .無條件轉移到指定的地址去執(zhí)行從該地址開始的指令.2 .段內(nèi)轉移是指在同一代碼段的范圍內(nèi)進行轉移,只需改變IP寄存器內(nèi)容.3 .段間轉移則要轉移到另一個代碼段執(zhí)行程序,此時要改變IP寄存器和CS段寄存器的內(nèi)容.55控制轉移指令JZ條件轉移指令:根據(jù)條指令所設置的條件碼(標志位)來判斷測試條件.根據(jù)五個標志位:ZF、SF、OFPF、CF的兩種狀態(tài)(0FALSER1TRUIET生10種測試條件.NameFlagFlag=TRUE1Flag=FALSE0ZeroFalgZFJ

31、ZOPR/結果為零轉移JNZOPR/結果不為零轉移SignFalgSFJSOPR/結果為負轉移JNSOPR/結果為止轉移OverflowFlagOFJOOPR/溢出轉移JNOOPR/不溢出轉移ParityFlagPFJPOPR/結果為偶轉移JNPOPR/結果為奇轉移CarryFlagCFJCOPR/有進位轉移JNCOPR/無進位轉移兩個數(shù)比較:情況無符號數(shù)有符號數(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控制轉移指令JNZ57控制轉移指令JS58控制轉移指令JNS59控制轉移指令JO60控制轉移指令JNO61控制轉移指令JP62控制轉移指令JNP63控制轉JC646566676869707172移指令移指令控制轉移指令移指令移指令移指令移指令移指令移指令移指令JNCJAJNAJLJNLJLGJGJCXZOPRLOOP737475控制轉移指令控制轉移指令控制轉移指令LOOPZOPRLOOPNZOPRCALL測試CX轉移指令JCXZOPR/CX=0時轉移LOOP(LOOP)環(huán)指令LOOPOPRLOOPZOPR測試條

33、件:是個標號CX*0/OPR在程序中實際測試條件:ZF=1&&CX*0測試條件:ZF=0&&CX*0LOOPNZOPR執(zhí)行操作:先執(zhí)行CX=CX-1再檢測上面白測試條件,如滿足則IP=IP+符號擴展的D8,不滿足則退出循環(huán).過程調(diào)用及返回指令CALL(CALL)過程調(diào)用指令CALLDST/DST在程序中實際是子程序標號執(zhí)行操作:先將過程的返回地址(即CALL的下一條指令的首地址)存入堆棧,然后轉移到過程入口地址執(zhí)行子程序.調(diào)用方式格式斷點保護入棧情況過程入匚地段內(nèi)直接CALLNEARPTIPR1R(SP-1)(SP-2)IP,CS不進棧CS值保才變,IP一等不D

34、ST段內(nèi)間CALLWORDPTRSP-1)(SP-2)CS值保才等不接(EAIP,CS不進棧變,IP一(EA)段問宜接CALLFARPTRPR1(SP-1)(SP-2)一CS,(SP-3)(SP-4)-IPIPADS-址,CS一址%移地DSTO段問問接,、.r-7*、rCALLDWORDPTR(EQ(SP-1)(SP-2)一CS,(SP-3)(SP-4)-IPIP(EAA+2),CS-(寓符作說明.RET(RETurn)?程序返回指令RETRETEXP/帶立即數(shù)返回子程序返回指令RETM在子程序末尾,它使子程序在執(zhí)行完全部任務后返回主程序繼續(xù)執(zhí)行被打斷后的程序.返回地址在子程序調(diào)用時入棧保存的

35、斷點地址-IP或IP和CS.767778798081控制轉移指令處理器控制指令處理器控制指令處理器控制指令處理器控制指令處理器控制指令RETCLCCMCSTCNOPHLTCLC(CLearCarry)進位位置0指令CLC/執(zhí)行操作后,CF=0CMC(CoMplementCarry)進位位求反指令CMC/執(zhí)行操作后,CF=!CFSTC(SeTCarry)進位位置1指令STC/執(zhí)行操作后,CF=1NOP(NoOperetion)無操作指令NOP/此指令不執(zhí)行任何操作,具機器碼占一個字節(jié)單元HLT(HaLT)停機指令HLT執(zhí)行操作后,使機器暫停工作,使處理器CPUt于停機狀態(tài),以等待一次外部中斷到來

36、,中斷結束后,程序繼續(xù)執(zhí)行,CPU繼續(xù)工作.2.2.偽操作指令82同一個程序中,標號或變量只能定義一次.標號有三種屬性:段、偏移、類型(NEARPTR,WORPTR,FAR8384PRT,DWORDPTR)數(shù)值回送操作符:TYPELEGNTHSIZE、OFFSETSEGTYPEexpression(orlabel)如果表達式是變量,則回送該變量以字節(jié)數(shù)表示的類型:DB為1,DW2,DD為4如果表達式是標號,則回送該標號類型的數(shù)值:NEA時-1,FAR為-2.如果表達式是常量,則回送0.arrayDWA110H,B02CH,C322HADDAX,TYPEarray等價于ADDAX,2LENGTH

37、variable對于變量使用DUP勺情況,將回送分配給該變量的單元數(shù);對其它情況則回送1.feesDW100DUP(?)MOVCX,LEGNTHfees等價于MOVCX,100SIZEvariable回送分配給該變量的字節(jié)數(shù)MOVCX,SIZEfees等價于MOVCX,200OFFSETvariable(orlable)回送變量或標號的偏移地址MOVBX,OFFSETOPER_OW于LEABX,OPER_ONE旬,將OPER_ONE偏移地址送入BXSEGvariable(orlable)回送變量或標號的段地址.若OPER_ONEDATA_SEG據(jù)段中的一個變量,下面語句取得DATA_SEG首地

38、址MOVDS,SEGOPER_ONE價于MOVAX,DATA_SEGMODS,AX屬性操作符:PTRTHIS、HIGHLOWHIGHWORCLOWWORDtypePTRexpression用來給已分配的存儲地址賦予另一種屬性,使該地址具有另一種類型.表示按expression表達式尋址,按指定的類型type看待.即PTR是給后面的expression操作數(shù)賦予新的數(shù)據(jù)類型或地址類型.MOVBYTEPTRBX,5/存入字節(jié)(Byte)單元MOVWORDPTRBX,5/存入字(Word)單元THIStype指定與當前地址計數(shù)器相等的一個地址單元的類型.type是NEARFARPROCCt可以是BY

39、PEWORD.first_typeEQUTHISBYTEword_tableDW100DUP(?)止匕時,first_type的偏移地址與word_table完全相同,但它是字節(jié)類型HIGH(LOW)express字節(jié)分離操作符,HIGH取高位字節(jié),LOW取低位字節(jié).HIGHWORD(LOWWORD)exprefe離操作符,HIGHWOR取高位字,LOWWORD低位字.CONSTEQU0ABCDHMOVAH,HIGHTCOW于MOVAH,0ABH85數(shù)據(jù)定義語句:variable_nameMnemonicoper1,oper2.常用的助記符Mnemonic有:定義字節(jié),表小具后母個操件數(shù)占后一

40、個字節(jié)(1Byte)單DB-兀DW定義字,表小表小其后每個操作數(shù)占啟一個字(2Byte)單元定義雙字,表示表示其后每個操作數(shù)占啟兩個字(4Byte)1<1<.單兀DQ定義四個字,表示表示其后每個操作數(shù)占有四個字(8Byte)單元DT定義十個字節(jié),表示表示其后每個操作數(shù)占有十個字Dl(10Byte)單元,形成壓縮BCDK.data_byteDB10,4,10H,?/共定義了4個字節(jié),其中?是保留單元data_wordDW100,?,100H/共定義了3個字(6Byte)str_aaDB'ABCDEFG'/定義和初始化多于兩個能上能下字符的字符串時,只能使用DB偽指令.86符號定義語句(即常量)nameEQUexpression/定義PURGEiamelname2./解除CONSTANTEQU256表示CO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論