微機原理第06次課第03章-3-NEW_第1頁
微機原理第06次課第03章-3-NEW_第2頁
微機原理第06次課第03章-3-NEW_第3頁
微機原理第06次課第03章-3-NEW_第4頁
微機原理第06次課第03章-3-NEW_第5頁
已閱讀5頁,還剩69頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

8086指令系統(tǒng)傳送類指令數(shù)據(jù)操作類指令串操作指令控制類指令本章要求微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第1頁!串操作類指令

串操作指令就是用一條指令實現(xiàn)對一串字符或數(shù)據(jù)的操作。

它主要由以下幾種指令組成:一、字符串傳送指令:MOVSB/MOVSW二、字符串比較指令:CMPSB/CMPSW三、字符串檢索指令:SCASB/SCASW四、取字符串指令:LODSB/LODSW五、存字符串指令:STOSB/STOSW返回串操作類指令特點微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第2頁!串操作指令針對數(shù)據(jù)塊或字符串的操作可實現(xiàn)存儲器到存儲器的數(shù)據(jù)傳送待操作的數(shù)據(jù)串稱為源串,目標(biāo)地址稱為目標(biāo)串串操作指令是唯一的一組能直接處理源和目的操作數(shù)都在存儲單元的指令微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第3頁!串操作指令流程取源串地址取目標(biāo)串地址設(shè)串長度傳送一個字節(jié)或字修改地址指針修改串長度值傳送完否?微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第4頁!串操作指令與重復(fù)前綴串操作指令前綴MOVSREPCMPSREPE/PEPZREPNE/REPNZSCASREPE/PEPZREPNE/REPNZLODSREPSTOSREP微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第5頁!怎樣編寫程序?DATASEGMENTDATAENDSEXTRASEGMENTEXTRAENDSCODESEGMENTCODEENDSASSUMECS:CODE,DS:DATA,ES:EXTRA

MOVAX,DATAMOVDS,AXMOVAX,EXTRAMOVES,AXBUFFER1DB‘Hello,everybody!’

BUFFER2DB17DUP(?)LEASI,BUFFER1LEADI,BUFFER2MOVCX,17CLDREPMOVSBSTA:ENDSTAOK!返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第6頁!字符串傳送指令說明用CLD指令將DF清零,地址指針自動加(MOVSB+1MOVSW+2)增址用STD指令將DF置1,地址指針自動減(MOVSB-1MOVSW-2)減址第二、三種格式明確地注明是傳送字節(jié)或字,隱含了兩個操作數(shù)的地址。種格式則應(yīng)在操作數(shù)明確是字還是字節(jié)操作,如:MOVSES:BYTEPTR[DI],DS:[SI]微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第7頁!字符串比較指令指令格式:

CMPSDST,SRC;(DI)(SI)字節(jié)CMPSB;

字節(jié)(DI)(DI)±1,(SI)(SI)±1CMPSW;

字(DI)(DI)±2,(SI)(SI)±2指令功能:把DS段由SI指出的字節(jié)或字和ES段由DI指出的字或字節(jié)相比較,并比較后修改SI和DI地址指針。指令影響標(biāo)志位,利用重復(fù)前綴可實現(xiàn)在兩個字符串中尋找個不等的元素或個相等的元素。指令說明…返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第8頁!串比較指令例

比較兩個字符串是否相等,并找出其中個不相等字符的首地址,將該地址送到BX中,不想等字符送到AL中。設(shè)MEM1為源串首地址,MEN2為目的串首地址,兩個字串長度均為200。LEASI,MEM1LEADI,MEM2MOVCX,200CLDREPECMPSBTESTCX,00FFHJZSTOPDECSIMOVAL,[SI]MOVBX,SISTOP:HLT返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第9頁!字符串檢索指令說明指令REPNZSCASB有以下兩種退出情況:

(1)字符串中某字節(jié)與AL中的字節(jié)相等,從而退出。(2)字符串中沒有字節(jié)與AL中的字節(jié)相等,但檢索完畢,從而退出??赏ㄟ^ZF檢測來判斷當(dāng)前處于哪種情況,ZF=1,為前一種情況,ZF=0,為后一種情況,ZF與CX無關(guān)。返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第10頁!存字符串指令指令格式:STOSDST;

STOSB;

字節(jié)(AL)(DI),(DI)(DI)±1STOSW;

字(AX)(DI),(DI)(DI)±2指令功能:把AL中的字節(jié)或AX中的字,存到ES段由DI寄存器指出內(nèi)存單元,并自動修改地址指針。加上前綴REP后,可使一串內(nèi)存單元中填滿相同的數(shù)。返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第11頁!子程序調(diào)用和返回指令子程序結(jié)構(gòu)相當(dāng)于高級語言中的過程。為了方便模塊化程序設(shè)計,往往把程序中某些具有獨立功能的部分編寫成獨立的程序模塊,稱之為程序。子程序調(diào)用和返回指令都不影響標(biāo)志位。一、子程序調(diào)用指令:CALL二、子程序返回指令:RET返回指令說明:微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第12頁!子程序調(diào)用指令該類指令提供了子程序內(nèi)直接調(diào)用指令、段內(nèi)間接調(diào)用指令、段間直接調(diào)用指令和段間間接調(diào)用指令。一、段內(nèi)直接調(diào)用二、段內(nèi)間接調(diào)用三、段間直接調(diào)用四、段間間接調(diào)用

指令說明…返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第13頁!段內(nèi)間接調(diào)用指令格式:CALLDST;

(SP)(SP)-2,((SP)-2,(SP)-1)(IP)(IP)(EA)例如:CALLAX;段內(nèi)間接調(diào)用,調(diào)用地址由AX給出。(IP)(AX)返回子過程與原調(diào)用程序在同一代碼段,在調(diào)用之前只需保護斷點的偏移地址微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第14頁!段間間接調(diào)用指令格式:CALLDST;(SP)(SP)-2,((SP)-2,(SP)-1)(CS)(SP)(SP)-2,((SP)-2,(SP)-1)(IP)(IP)(EA)尋址方式確定的有效地址(CS)(EA+2)

例如:CALLDWORDPTR[DI];段間間接調(diào)用,指令給出調(diào)用段地址和偏移量的存放地址微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第15頁!子程序調(diào)用指令說明調(diào)用指令在執(zhí)行時,會把下一條指令的地址推入堆棧,這個地址叫返回地址。在段內(nèi)調(diào)用的情況下,只把返回地址的偏移量推入堆棧,在段間調(diào)用的情況下,把返回地址的段地址和偏移量都推入堆棧。返回斷點入口地址微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第16頁!子程序返回指令:RET指令格式:RET;(IP)((SP)+1,(SP))(SP)(SP)+2指令說明:返回指令RET作為子程序的最后一條指令用來返回高一層的程序。執(zhí)行時,會從堆棧頂部彈出返回地址出棧送IP寄存器(段內(nèi)或段間)和CS寄存器(段間)。8086指令系統(tǒng)中,段內(nèi)返回指令和段間返回指令形式是一樣的。不影響標(biāo)志位。

返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第17頁!無條件轉(zhuǎn)移和條件轉(zhuǎn)移指令一、無條件轉(zhuǎn)移指令無條件轉(zhuǎn)移到目標(biāo)地址,執(zhí)行新的指令二、條件轉(zhuǎn)移指令在具備一定條件的情況下轉(zhuǎn)移到目標(biāo)地址返回通過修改指令的偏移地址或段地址及偏移地址實現(xiàn)程序的轉(zhuǎn)移微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第18頁!無條件轉(zhuǎn)移指令格式指令格式:JMPLABEL

(1)段內(nèi)直接短轉(zhuǎn)移:格式:JMPSHORTOPR;(IP)(IP)+8位移量;8位移量是一個帶符號數(shù),轉(zhuǎn)移范圍在–128--+127

例如:JMPSHORT10H;轉(zhuǎn)移地址偏移量在指令中給出

(2)段內(nèi)直接近轉(zhuǎn)移:格式:JMPNEARPTROPR(IP)(IP)+16位移量;16位移量是一個帶符號數(shù),轉(zhuǎn)移范圍在段內(nèi)任意位置例如:JMP1000H;段內(nèi)直接轉(zhuǎn)移,轉(zhuǎn)移地址偏移量在指令中給出返回下一頁微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第19頁!無條件轉(zhuǎn)移指令格式

(5)段間間接轉(zhuǎn)移:格式:JMPDWORDPTROPR;(IP)(EA)(CS)(EA+2)EA值由OPR的尋址方式確定。它可以使用除立即數(shù)以外的任一種尋址方式。

例如:JMPDWORDPTR[SI]段間間接轉(zhuǎn)移,轉(zhuǎn)移地址在SI,SI+1,SI+2,SI+3所指的內(nèi)存單元中,前兩個字節(jié)為偏移量,后兩個字節(jié)為段地址。返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第20頁!單個條件標(biāo)志轉(zhuǎn)移指令指令格式:

JZ/JEOPR;結(jié)果為0或相等,則轉(zhuǎn)移ZF=1JNZ/JNEOPR;結(jié)果不為0或不相等,則轉(zhuǎn)移ZF=0

JSOPR;結(jié)果為負(fù),則轉(zhuǎn)移

SF=1

JNSOPR;

結(jié)果為正,則轉(zhuǎn)移

SF=0

JOOPR;

溢出,則轉(zhuǎn)移

OF=1

返回下一頁微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第21頁!比較兩個無符號數(shù)指令格式:

JB/JNAE/JCOPR;

低于,不高于也不等于,或進位為1,則轉(zhuǎn)移

CF=1

JNB/JAE/JNCOPR;

不低于,高于或等于,或進位為0,則轉(zhuǎn)移

CF=0JBE/JNAOPR;

低于或等于,不高于,則轉(zhuǎn)移

CF=1或ZF=1

JNBE/JAOPR;

不低于也不等于,高于,則轉(zhuǎn)移

CF=0且ZF=0返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第22頁!CX寄存器值判斷指令格式:JCXZOPR;根據(jù)CX內(nèi)容修改情況產(chǎn)生不同的分支。CX值為0,則轉(zhuǎn)移

返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第23頁!調(diào)用指令與轉(zhuǎn)移指令的比較用于調(diào)用一個子過程調(diào)用前須保護斷點地址子過程執(zhí)行結(jié)束后要返回原調(diào)用處繼續(xù)執(zhí)行原程序斷點恢復(fù)返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第24頁!無條件循環(huán)指令LOOP指令格式:LOOPLABEL;指令功能:先將CX的內(nèi)容減1,再判斷CX中是否為0,為0則退出,否則循環(huán)。操作:

DECCXJNZ符號地址

返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第25頁!條件循環(huán)指令LOOPNZ/LOOPNE指令格式:LOOPNZ/LOOPNEOPR;指令功能:先將CX的內(nèi)容減1,再判斷CX中是否為0,并且判斷ZF是否為1。如果ZF=0,并且CX=0,則繼續(xù)循環(huán);只有在CX=0,或ZF=1情況下,則退出循環(huán)。指令說明:(1)CX中的值為0時,并不會影響標(biāo)志位ZF,ZF由前面其它指令來決定。(2)該指令用于查找不相等的情況。返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第26頁!中斷控制指令一、一般中斷指令:INTn二、溢出中斷指令:INTO三、中斷返回指令:IRET思考:中斷與過程調(diào)用的區(qū)別?返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第27頁!INTn中斷指令指令格式:INTn執(zhí)行的操作:(SP)(SP)-2((SP)+1,(SP))(PSW)(SP)(SP)-2((SP)+1,(SP))(CS)(SP)(SP)-2((SP)+1,(SP))(IP)(IP)(n*4)(CS)(n*4+2)指令說明:指令在執(zhí)行完以上操作后,再把IF和TF位置0,但不影響其余的標(biāo)志位。中斷類型碼n=0?255P149微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第28頁!中斷指令例INT21HIPLIPHCSLCSHSP=1200FLAGSLFLAGSHSP=11FA執(zhí)行INT指令后保護斷點微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第29頁!溢出中斷指令指令格式:INTO相當(dāng)于

INT4執(zhí)行的操作:(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)返回若OF=1,則啟動一個類型為4的中斷過程,給出一個出錯標(biāo)志,如果OF=0,不做任何操作。INTO指令通常安排在有符號數(shù)加減運算指令之后。微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第30頁!處理器控制指令該類指令主要有以下兩大類指令組成:一、標(biāo)志操作指令二、其他處理器控制指令返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第31頁!進位標(biāo)志CF操作指令指令組成:(1)STC進位位置1指令:CF1(2)CLC進位位置0指令:CF0(3)CMC進位位求反指令:CFCF指令說明:用在多字節(jié)或字運算中,用來傳遞低位向高位的進位,STC置1,CLC清0,CMC求反。返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第32頁!中斷允許標(biāo)志IF操作指令指令組成:STI中斷標(biāo)志位置1指令:IF1CLI中斷標(biāo)志位置0指令:IF0指令說明:STI置1,開放中斷;CLI清0,屏蔽外部中斷。返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第33頁!暫停指令指令格式:HLT指令說明:該指令經(jīng)常和中斷過程聯(lián)系在一起,常用于外部硬件中斷。返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第34頁!等待指令指令格式:

WAIT指令說明:該指令一般是和ESC指令配合使用。8086用ESC指令使協(xié)處理器工作以后,自己還可以執(zhí)行一些其他操作,此時處于并行工作狀態(tài)。要取回協(xié)處理器的處理結(jié)果??砂才乓粭l等待指令WAIT指令過程中,不斷測試CPU的TEST引腿上的信號。返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第35頁!結(jié)束語第3章掌握:指令的格式及意義指令對操作數(shù)的要求及對標(biāo)志位的影響指令的應(yīng)用返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第36頁!實驗操作步驟用debug

命令對所編寫的程序進行調(diào)試,格式如下:debugxx.exe回車常用的debug命令:

“T”回車,單步運行程序并顯示寄存器狀態(tài)。“R”回車,顯示各寄存器內(nèi)容?!癉DS:XX”回車,察看數(shù)據(jù)段中偏移量為XXH的內(nèi)存單元中的內(nèi)容。“U”回車,反匯編當(dāng)前機器碼,也就是顯示待執(zhí)行的匯編語句?!癎XX”回車,執(zhí)行內(nèi)存中的可執(zhí)行代碼,直到偏移量為XXH的代碼為止?!癚”回車,退出DEBUG調(diào)試狀態(tài)。在提示符狀態(tài)下輸入“Exit”命令,退出DOS模式。微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第37頁!怎樣編寫程序?DATASEGMENTDATAENDSEXTRASEGMENTEXTRAENDSCODESEGMENTCODEENDSASSUMECS:CODE,DS:DATA,ES:EXTRA

MOVAX,DATAMOVDS,AXMOVAX,EXTRAMOVES,AXBUFFER1DB‘Hello,everybody!’

BUFFER2DB17DUP(?)LEASI,BUFFER1LEADI,BUFFER2MOVCX,17CLDREPMOVSBSTA:ENDSTAOK!返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第38頁!串操作指令的特點源串一般存放在數(shù)據(jù)段,偏移地址由SI指定。允許段重設(shè)目標(biāo)串必須在附加段,偏移地址由DI指定指令自動修改地址指針,修改方向由DF決定。DF=0增地址方向;DF=1減地址方向數(shù)據(jù)塊長度值由CX指定可增加自動重復(fù)前綴以實現(xiàn)自動修改CX內(nèi)容微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第39頁!重復(fù)前綴REP無條件重復(fù)REPE相等重復(fù)REPZ為零重復(fù)REPNE不相等重復(fù)REPNZ不為零重復(fù)條件重復(fù)CX≠0ZF=1CX≠0ZF=0CX≠0重復(fù)微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第40頁!示例LEASI,BUFFER1LEADI,BUFFER2MOVCX,17CLDREPMOVSB

LEASI,BUFFER1LEADI,BUFFER2MOVCX,17CLDAGAIN:

MOVSBDECCXJNZAGAIN

LEASI,BUFFER1LEADI,BUFFER2MOVCX,17AGAIN:

MOVAL,[SI]MOV[DI],ALINCSIINCDI

DECCXJNZAGAINREP執(zhí)行的操作:1)如(CX)=0則退出REP,否則往下執(zhí)行.2)(CX)=(CX)-13)執(zhí)行其后的串指令4)重復(fù)1)~~3)編寫程序?qū)崿F(xiàn):將BUFFER1中的17個數(shù)傳送到BUFFER2中去。微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第41頁!字符串傳送指令指令格式:

MOVSDST,SRC;(DI)(SI)字節(jié)

MOVSB;

字節(jié)(DI)(DI)±1,(SI)(SI)±1

MOVSW;

字(DI)(DI)±2,(SI)(SI)±2指令功能:把DS段由SI指出的字節(jié)或字傳送到ES段由DI指出存儲單元中,并修改SI和DI地址指針。MOVSB完成字節(jié)操作,MOVSW完成字操作,通常指令前面加重復(fù)前綴REP,數(shù)據(jù)串長度送CX寄存器。指令說明…返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第42頁!串傳送指令例用串傳送指令實現(xiàn)200B數(shù)據(jù)的傳送:

LEASI,MEM1LEADI,MEM2MOVCX,200CLDREPMOVSBHLT返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第43頁!字符串比較指令說明指令前綴有以下三種形式:(1)REP重復(fù)(2)REPZ/REPE相等/為零則重復(fù)(3)REPNZ/REPNE不相等/不為零則重復(fù)微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第44頁!字符串檢索指令指令格式:

SCASDST;

SCASB;

字節(jié)(AL)-(DI),(DI)(DI)±1SCASW

;

字(AX)-(DI),(DI)(DI)±2指令功能:用AL中的字節(jié)或AX中的字,與位于ES段由DI寄存器指出內(nèi)存單元的字節(jié)或字相比較。通過前綴控制,可以實現(xiàn)AL中的字節(jié)或AX中的字與內(nèi)存單元相等或不等的比較。指令說明…返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第45頁!取字符串指令指令格式:LODSSRC;

LODSB;字節(jié)(AL)(SI),(SI)(SI)±1LODSW;字(AX)(SI),(SI)(SI)±2指令功能:將位于DS段由SI寄存器指出內(nèi)存單元的內(nèi)容取到AL或AX中。返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第46頁!控制類指令此類指令主要由以下幾部分組成:一、子程序調(diào)用和返回指令

二、無條件轉(zhuǎn)移和條件轉(zhuǎn)移指令三、循環(huán)控制指令四、中斷控制指令五、處理器控制指令返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第47頁!調(diào)用指令的執(zhí)行過程將調(diào)用指令的下一條指令的地址(斷點)壓入堆棧獲取子過程的入口地址(子過程第1條指令的偏移地址)(執(zhí)行子過程,含相應(yīng)參數(shù)的保存及恢復(fù))將斷點偏移地址由堆棧彈出,返回原程序返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第48頁!段內(nèi)直接調(diào)用指令格式:CALLDST;

(SP)(SP)-2,((SP)-2,(SP)-1)(IP)(IP)(IP)+16位偏移量例如:CALL1000H;段內(nèi)直接調(diào)用,調(diào)用地址在指令中給出返回子過程與原調(diào)用程序在同一代碼段,在調(diào)用之前只需保護斷點的偏移地址微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第49頁!段間直接調(diào)用指令格式:CALLDST;(SP)(SP)-2,((SP)-2,(SP)-1)(CS)段地址(SP)(SP)-2,((SP)-2,(SP)-1)(IP)偏移地址

例如:CALL2500:3600;段間直接調(diào)用,調(diào)用段地址和偏移量在指令中給出返回子過程與原調(diào)用程序不在同一代碼段,在調(diào)用之前需保護斷點的段基地址和偏移地址。先將斷點的CS壓棧,再壓入IP微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第50頁!示例設(shè)(DS)=6000H,(SI)=0560H,指令CALLDWORDPTR[DI]

的操作示意圖XXHXXHXXHXXHIPCSCALL┇┇┇┇代碼段數(shù)據(jù)段60560H返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第51頁!子程序返回指令該指令有以下兩條:一、子程序返回指令:RET二、帶參數(shù)的返回指令:RETn

所有返回指令都不影響標(biāo)志位返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第52頁!帶參數(shù)的返回指令:RETn指令格式:RETEXP;

(IP)((SP)+1,(SP))(SP)(SP)+2(SP)(SP)+D16指令說明:EXP是一個表達(dá)式,根據(jù)它的值計算出常數(shù)為指令中的位移量n。n可以表示為0~FFFFH范圍中的任何一個偶數(shù)。應(yīng)用范圍:主程序為某個子程序提供一定的參數(shù)或參數(shù)地址,在進入子程序之前,主程序?qū)⑦@些參數(shù)或參數(shù)的地址壓入堆棧中,通過堆棧供子程序調(diào)用,子程序使用后,這些參數(shù)已無使用價值,堆棧中不需要保存這些參數(shù),因而在返回指令RET中提供參數(shù)n在返回同時堆棧指針自動增加幾個字節(jié),以去掉堆棧中的幾個字節(jié)。返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第53頁!無條件轉(zhuǎn)移指令:JMP指令功能:無條件轉(zhuǎn)移指令可以轉(zhuǎn)移到內(nèi)存中存放的任何程序段。指令必須指定轉(zhuǎn)移的目標(biāo)地址(或稱轉(zhuǎn)移地址)。無條件轉(zhuǎn)移指令不影響標(biāo)志位。指令分類:段內(nèi)轉(zhuǎn)移和段間轉(zhuǎn)移。段內(nèi)轉(zhuǎn)移只須改變IP寄存器的內(nèi)容,用新的轉(zhuǎn)移目標(biāo)地址代替原有的IP的值就可以。段間則轉(zhuǎn)到另一段去執(zhí)行程序,因此,不僅要修改IP寄存器的內(nèi)容,而且還要修改CS寄存器的內(nèi)容。指令格式…返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第54頁!無條件轉(zhuǎn)移指令格式

(3)段內(nèi)間接轉(zhuǎn)移:格式:JMPWORDPTROPR;(IP)(EA);EA值由OPR的尋址方式確定。它可以使用除立即數(shù)以外的任一種尋址方式。

例如:JMPCX;段內(nèi)間接轉(zhuǎn)移,轉(zhuǎn)移地址偏移量由CX給出

(4)段間直接(遠(yuǎn))轉(zhuǎn)移:格式:JMPFARPTROPR;(IP)OPR的段內(nèi)偏移地址;(CS)OPR所在段的段地址

例如:JMP2000:0100H;段間直接轉(zhuǎn)移,轉(zhuǎn)移段地址和偏移量在指令中給出返回下一頁微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第55頁!條件轉(zhuǎn)移指令條件轉(zhuǎn)移指令是以某一個標(biāo)志位的值或者某幾個標(biāo)志位的值作為判斷是否進行轉(zhuǎn)移的依據(jù),如果滿足要求則轉(zhuǎn)移,否則執(zhí)行后續(xù)指令。條件轉(zhuǎn)移指令可以分為以下幾大類:一、根據(jù)單個條件標(biāo)志的設(shè)置情況轉(zhuǎn)移二、比較兩個無符號數(shù)三、比較兩個帶符號數(shù)四、CX寄存器值判斷

指令說明…返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第56頁!單個條件標(biāo)志轉(zhuǎn)移指令

JNOOPR;

不溢出,則轉(zhuǎn)移

OF=0

JP/JPEOPR;

奇偶位為1,則轉(zhuǎn)移

PF=1

JNP/JPOOPR;

奇偶位為0,則轉(zhuǎn)移

PF=0

JB/JNAE/JCOPR;低于(不高于也不等于)或進位為1,則轉(zhuǎn)移CF=1JNB/JAE/JNCOPR;不低于(高于或等于)或進位為0,則轉(zhuǎn)移CF=0返回上一頁微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第57頁!比較兩個帶符號數(shù)指令格式:

JL/JNGEOPR;

小于,不大于也不等于,則轉(zhuǎn)移SF⊕OF=1且ZF=0JNL/JGEOPR;

不小于,大于或等于,則轉(zhuǎn)移SF⊕OF=0或ZF=1JLE/JNGOPR;

小于或等于,不大于,則轉(zhuǎn)移(SF⊕OF)或ZF=1JNLE/JGOPR;

不小于也不等于,大于,則轉(zhuǎn)移(SF⊕OF)且ZF=0返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第58頁!條件轉(zhuǎn)移指令說明指令說明:(1)所有條件轉(zhuǎn)移指令都是相對轉(zhuǎn)移形式,-128--+127范圍。(2)比較兩個數(shù)的大小后轉(zhuǎn)移,要看是有符號數(shù)還是無符號數(shù)。無符號數(shù)用“高于”和“低于”來判斷,有符號數(shù)用“大于”和“小于”來判斷。(3)大部分可以用兩種助記符表示。微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第59頁!循環(huán)控制指令指令所控制的目的地址都是-128--+127范圍內(nèi),循環(huán)次數(shù)由CX寄存器指定。該類指令主要有以下三種:一、LOOP循環(huán)指令二、LOOPZ/LOOPE指令三、LOOPNZ/LOOPNE指令返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第60頁!條件循環(huán)指令LOOPZ/LOOPE指令格式:LOOPZ/LOOPEOPR;指令功能:先將CX的內(nèi)容減1,再判斷CX中是否為0,并且判斷ZF是否為1。如果ZF=0,或CX=0,則退出;只有在ZF=1并且CX≠0情況下,才繼續(xù)循環(huán)。指令說明:(1)CX中的值為0時,并不會影響標(biāo)志位ZF,ZF由前面其它指令來決定(2)該指令可用于查找相等的情況。返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第61頁! MOVAX,DATA1 MOVBX,DATA2 CMPAX,BX JLNEXT1 MOVCX,AX JMPNEXT2NEXT1:MOVCX,BXNEXT2:MOVAH,4CH INT21H下面程序的功能是什么?微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第62頁!中斷指令中斷與過程調(diào)用:中斷是隨機事件或異常事件引起,調(diào)用則是事先已在程序中安排好響應(yīng)中斷請求不僅要保護斷點地址,還要保護FLAGS內(nèi)容調(diào)用指令在指令中直接給出子程序入口地址,中斷指令只給出中斷向量碼,入口地址則在向量碼指向的內(nèi)存單元中返回P150微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第63頁!中斷指令nх4=存放中斷服務(wù)子程序入口地址的單元地址nх4

XXHXXHXXHXXH入口偏移地址IP入口段地址CS操作總結(jié):將FLAGS壓入堆棧將INT指令下一條指令的CS、IP壓棧取中斷服務(wù)程序入口地址微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第64頁!中斷指令例執(zhí)行INT21H指令后IP=?CS=?21Hх4=0084H23H11H00H20HIP

CS返回微機原理第06次課第03章-3-NEW共74頁,您現(xiàn)在瀏覽的是第65頁!中斷返回指令指令格式:IRET執(zhí)行的操作:(IP)((SP)+1,(SP))(SP)(SP)+2

溫馨提示

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

評論

0/150

提交評論