周小課匯編語言程序設(shè)計(jì).ppt_第1頁
周小課匯編語言程序設(shè)計(jì).ppt_第2頁
周小課匯編語言程序設(shè)計(jì).ppt_第3頁
周小課匯編語言程序設(shè)計(jì).ppt_第4頁
周小課匯編語言程序設(shè)計(jì).ppt_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

復(fù)習(xí),數(shù)據(jù)傳送類指令算術(shù)運(yùn)算類指令邏輯操作類指令,主要內(nèi)容,字符串操作指令控制轉(zhuǎn)移指令處理器控制指令電地暖,包括:MOVS、LODS、STOS、CMPS、SCAS(傳送)(?。ù妫ū容^)(搜索)共同點(diǎn):源串DS:SI目的串ES:DI完成一次字符處理后,自動(dòng)修改指針,用DF規(guī)定串處理方向:DF=0:SI、DI增1(字節(jié)串)、2(字串)DF=1:SI、DI減1(字節(jié)串)、2(字串),字符串操作類,指令格式:MOVS目的串,源串目的串、源串僅用于說明傳送的是字節(jié)、字,因此可使用代替符而省去目的串、源串代替符:MOVSB/MOVSW(不帶操作數(shù))B:字節(jié)W:字指令功能:將源串中一個(gè)字節(jié)或字傳送到目的串中,并修改指針,指向串中的下一個(gè)元素:ES:DIDS:SI(DI)(DI)1、2(SI)(SI)1、2,MOVS串傳送指令,重復(fù)前綴REP(Repeat)的功能:如果(CX)=0,則完成REP操作,跳出循環(huán);CX的值減1;執(zhí)行一次串操作指令;轉(zhuǎn)到第一步重復(fù)REP操作。例:將源串復(fù)制到目的串(串長為100):,MOVSI,offsetSOURCEMOVDI,offsetDESTMOVCX,100CLDREPMOVSB,MOVSI,offsetSOURCEMOVDI,offsetDESTMOVCX,100CLDCOPY:MOVAL,SIMOVDI,ALINCSIINCDIDECCXJNZCOPY,等價(jià)于,MOVS和REP,指令格式:LODS源串;代替符:LODSB/LODSWSTOS目的串;代替符:STOSB/STOSW指令功能:LODS:將源串中一個(gè)字節(jié)、字傳送到AL/AX,并修改指針:(AL)DS:SI(SI)(SI)1、2STDS:將累加器AL/AX傳送到目的串中,并修改指針:ES:DI(AL)(DI)(DI)1、2,串元素的取存指令LODS和STOS,指令格式:CMPS目的串,源串代替符:CMPSB/CMPSW指令功能:將源串和目的串中的字節(jié)、字進(jìn)行CMP操作,并修改指針:DS:SI-ES:DI,影響標(biāo)志位,不保存結(jié)果(DI)(DI)1、2(SI)(SI)1、2對標(biāo)志寄存器的影響:影響OF、SF、ZF、AF、PF、CF,CMPS串比較指令,前綴REPE/REPZ的功能:當(dāng)串未結(jié)尾(CX0)且串相等(ZF=1)時(shí)繼續(xù)比較。如果(CX)=0,則完成REPE/REPZ操作,跳出循環(huán);CX的值減1;執(zhí)行一次串操作指令;如果零標(biāo)志位Z=1,則轉(zhuǎn)回第一步;如果Z=0,則完成REPE/REPZ操作,跳出循環(huán)。例:比較兩個(gè)串是否相同:MOVSI,offsetSOURCEMOVDI,offsetDESTMOVCX,100REPECMPSW;重復(fù)比較JNZDIFF;如果Z=0,說明兩個(gè)串中有某個(gè)字不相同;否則,兩個(gè)串相同,CMPS和REPE/REPZ指令,指令格式:SCAS目的串代替符:SCASB/SCASW指令功能:比較AL/AX與目的串中元素(字節(jié)或字)的大小,并修改指針:CMPAL/AX,ES:DI,影響標(biāo)志位(DI)(DI)1、2對標(biāo)志寄存器的影響:影響OF、SF、ZF、AF、PF、CF,SCAS串搜索指令,REPNE/REPNZ的功能:當(dāng)串未結(jié)尾(CX0)且串元素與累加器內(nèi)容不相同(ZF=0)時(shí)繼續(xù)搜索,直到CX=0或ZF=1才執(zhí)行下一條指令。如果(CX)=0,則完成REPNE/REPNZ操作,跳出循環(huán);CX的值減1;執(zhí)行一次串操作指令;如果零標(biāo)志位Z=0,則轉(zhuǎn)回第一步;如果Z=1,則完成REPNE/REPNZ操作,跳出循環(huán)。例:查找串中是否含有元素0FFH:MOVDI,offsetDESTMOVCX,100;串長為100MOVAL,0FFH;搜索的元素REPNESCASB;不相等時(shí)繼續(xù)搜索下一個(gè)字節(jié)JNEERR;如果找不到(AL),則進(jìn)行出錯(cuò)處理;已找到(AL),SCAS和REPE/REPZ指令,SCAS指令舉例,例:搜索某一數(shù)據(jù)塊BLOCK中是否有關(guān)鍵字KEY?若有,把搜索次數(shù)記下來(若次數(shù)為0,表示未搜索到關(guān)鍵字),且記錄下存放關(guān)鍵字的地址。(設(shè)BLOCK在附加段):MOVDI,offsetBLOCK;設(shè)定數(shù)據(jù)塊的地址指針MOVCX,COUNT;數(shù)據(jù)塊長度設(shè)在CX中MOVAL,KEY;將關(guān)鍵字送入ALCLD;設(shè)置方向標(biāo)志DF=0REPNESCASB;ZF=0繼續(xù)搜索,ZF=1搜索到了JZFOUNDMOVDI,0;串結(jié)束且不相等,即找不到KEY,0DIJMPDONEFOUND:DECDI;DI-1MOVPOINTR,DI;保存關(guān)鍵字地址到POINTR單元MOVBX,offsetBLOCKSUBDI,BXINCDI;找到KEY,DI中為搜索次數(shù)DONE:HLT;停機(jī),轉(zhuǎn)移指令:無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令循環(huán)指令:LOOP、LOOPE/LOOPZ、LOOPNE/LOOPNZ調(diào)用返回指令:CALL、RET中斷指令:INT、INTO、IRET,控制轉(zhuǎn)移類,JMP指令格式:直接轉(zhuǎn)移方式:JMP目標(biāo)標(biāo)號指令功能:控制程序無條件地轉(zhuǎn)移到目標(biāo)單元指令用法:段內(nèi)轉(zhuǎn)移方式段間轉(zhuǎn)移方式,轉(zhuǎn)移指令,指令格式:Jcc目標(biāo)標(biāo)號cc:轉(zhuǎn)移條件目標(biāo)標(biāo)號:8086:只能是短程轉(zhuǎn)移,轉(zhuǎn)移位移量:-128+127指令功能:根據(jù)當(dāng)前標(biāo)志寄存器或計(jì)數(shù)寄存器器CX的狀態(tài),決定是否轉(zhuǎn)移對標(biāo)志寄存器的影響:條件轉(zhuǎn)移指令對標(biāo)志寄存器不產(chǎn)生影響,條件轉(zhuǎn)移指令,無符號數(shù)比較大?。簳r(shí)轉(zhuǎn)移:JA/JNBE轉(zhuǎn)移條件:C=0且Z=0時(shí)轉(zhuǎn)移:JAE/JNB/JNC轉(zhuǎn)移條件:C=0時(shí)轉(zhuǎn)移:JB/JNAE/JC轉(zhuǎn)移條件:C=1時(shí)轉(zhuǎn)移:JBE/JNA轉(zhuǎn)移條件:C=1或Z=1A:Above,大;B:Below,小;E:Equal,等;N:Not,非對無符號數(shù):CF:“0”說明“”;“1”說明“時(shí)轉(zhuǎn)移:JG/JNLE時(shí)轉(zhuǎn)移:JGE/JNL時(shí)轉(zhuǎn)移:JL/JNGE時(shí)轉(zhuǎn)移:JLE/JNG指令中:G:Greater,大;L:Less,?。籈:Equal,等;N:Not,非,條件轉(zhuǎn)移指令,判斷是否相等=時(shí)轉(zhuǎn)移:JE/JZ(轉(zhuǎn)移條件:ZF=1)時(shí)轉(zhuǎn)移:JNE/JNZ(轉(zhuǎn)移條件:ZF=0)判斷是否溢出溢出時(shí)轉(zhuǎn)移:JO(轉(zhuǎn)移條件:OF=1)不溢出時(shí)轉(zhuǎn)移:JNO(轉(zhuǎn)移條件:OF=0)判斷奇偶狀態(tài)偶狀態(tài)時(shí)轉(zhuǎn)移:JP/JPE(轉(zhuǎn)移條件:PF=1)奇狀態(tài)時(shí)轉(zhuǎn)移:JNP/JPO(轉(zhuǎn)移條件:PF=0),條件轉(zhuǎn)移指令,判斷符號位符號位為1時(shí)轉(zhuǎn)移:JS(轉(zhuǎn)移條件:S=1)符號位為0時(shí)轉(zhuǎn)移:JNS(轉(zhuǎn)移條件:S=0)判斷CX/ECX是否為0CX=0時(shí)轉(zhuǎn)移:JCXZ轉(zhuǎn)移條件:CX=0,條件轉(zhuǎn)移指令,LOOP指令格式:LOOP標(biāo)號指令功能:控制循環(huán),以CX為遞減計(jì)數(shù)器,CX的值減1CX=0嗎?若CX=0:結(jié)束循環(huán),執(zhí)行下一條指令若CX0:跳轉(zhuǎn)到標(biāo)號處LOOPAGAINDECCXJNZAGAIN,等價(jià),循環(huán)指令,循環(huán)指令舉例,例:用循環(huán)實(shí)現(xiàn)軟件延時(shí)MOVCX,0F000H;置循環(huán)初值NEXT:NOP;空操作F000H次,產(chǎn)生延時(shí)LOOPNEXTLOOPE/LOOPZ指令:使CX自減1,若CX0且ZF=1,則循環(huán)轉(zhuǎn)移至目標(biāo)標(biāo)號。LOOPNE/LOOPNZ指令:使CX自減1,若CX0且ZF=0,則循環(huán)轉(zhuǎn)移至目標(biāo)標(biāo)號。,指令功能:CALL:過程調(diào)用指令格式:CALL子程序名/目標(biāo)地址RET:過程返回指令格式:RET若是段內(nèi)調(diào)用,只需將斷點(diǎn)處IP的值放在堆棧中保存;若是段間調(diào)用,則需將斷點(diǎn)處CS和IP的值都放入堆棧中保存。,調(diào)用、返回指令,指令格式:INTn;n為8位中斷類型號指令功能:引起中斷類型號為n的中斷:PUSHF;清除標(biāo)志寄存器中的中斷允許標(biāo)志IF和追蹤標(biāo)志TF,以屏蔽中斷,禁止追蹤方式;把當(dāng)前的CS、IP先后壓入棧中(SP減4),以保留斷點(diǎn);以段間間接調(diào)用的方式調(diào)用中斷程序,即n4IP,n4+2CSINTO為溢出中斷指令,是INT的特例。,中斷指令I(lǐng)NT(Interrupt),指令格式:IRET指令功能:用在中斷程序的最后,用于返回主程序:IP出棧,SP+2;CS出棧,SP再+2;標(biāo)志寄存器FLAGS出棧,SP再+2,中斷返回指令,標(biāo)志操作指令:CLC、STC、CMC、CLD、STD、CLI、STI其他處理器控制指令:NOP、HLT,處理器控制類,指令功能:修改進(jìn)位標(biāo)志CF、方向標(biāo)志DF或中斷允許標(biāo)志IF:修改進(jìn)位標(biāo)志CFCLC:CF=0STC:CF=1CMC:CF取反修改方向標(biāo)志DFCLD:DF=0STD:DF=1修改中斷允許標(biāo)志IFCLI:IF=0STI:IF=1,標(biāo)志位操作指令,(1)NOP(NoOperation

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論