微機(jī)原理 第三章6

上傳人:方*** 文檔編號:252892408 上傳時間:2024-11-21 格式:PPT 頁數(shù):21 大?。?15KB
收藏 版權(quán)申訴 舉報(bào) 下載
微機(jī)原理 第三章6_第1頁
第1頁 / 共21頁
微機(jī)原理 第三章6_第2頁
第2頁 / 共21頁
微機(jī)原理 第三章6_第3頁
第3頁 / 共21頁

下載文檔到電腦,查找使用更方便

30 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《微機(jī)原理 第三章6》由會員分享,可在線閱讀,更多相關(guān)《微機(jī)原理 第三章6(21頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、單擊此處編輯母版文本樣式,第二級,第三級,第四級,第五級,*,*,單擊此處編輯母版標(biāo)題樣式,3.2.5,調(diào)用,/,轉(zhuǎn)移,/,循環(huán)控制,/,中斷指令,轉(zhuǎn)移可分成兩類:段內(nèi)或段間轉(zhuǎn)移。,段內(nèi)轉(zhuǎn)移:只要改變,IP,寄存器的內(nèi)容,指在同一段的范圍之內(nèi)進(jìn)行轉(zhuǎn)移,即用新的轉(zhuǎn)移目標(biāo)地址代替原有的,IP,值。,段間轉(zhuǎn)移:要修改,IP,、,CS,寄存器的內(nèi)容,轉(zhuǎn)到另一段去執(zhí)行程序。,即,轉(zhuǎn)移目標(biāo)地址,=,新的段地址和偏移地址組成。,目標(biāo)地址可以是:直接方式,/,間接方式給出。,代碼段,代碼段,代碼段,代碼段,第,3,章,Pentium,的指令系統(tǒng),2024/11/21,1,1.,子程序調(diào)用和返回指令,CALL,

2、label,主程序,RET,子程序,回到,CALL,指令后的指令處,返回地址,CALL 1000H,段內(nèi)直接,CALLEAX,段內(nèi)間接,CALL2500H,:,3600H,段間直接,CALLDWORD PTR DI,段間間接,第,3,章,Pentium,的指令系統(tǒng),2024/11/21,2,放在子程序的末尾,使子程序在功能完成后返回調(diào)用程序繼續(xù)執(zhí)行。,*為能準(zhǔn)確返回 ,返回指令類型與調(diào)用指令類型相對應(yīng)。,在子程序調(diào)用時,需要保存返回地址,返回地址入棧,在子程序返回時:將返回地址出棧,段內(nèi)返回,出棧偏移地址,IP,IPSS:SP,,,SPSP,2,段間返回,出棧偏移地址,IP,和段地址,CS,I

3、PSS:SP,,,SPSP,2,CSSS:SP,,,SPSP,2,返回指令,RET,第,3,章,Pentium,的指令系統(tǒng),2024/11/21,3,RET n,帶參數(shù)的返回指令:,RET,指令,可以帶有一個立即數(shù),i16,,則堆棧指針,SP,將增加,即,SPSP+i16,,,這個特點(diǎn)使得程序可以方便地廢除若干執(zhí)行,CALL,指令以前入棧的參數(shù),RET,返回指令有,4,種:,段內(nèi)返回 段間返回,段內(nèi)帶立即數(shù)返回 段間帶立即數(shù)返回,n,只能為偶數(shù),第,3,章,Pentium,的指令系統(tǒng),2024/11/21,4,(AX),(BX),(CX),(SP),code segment,main proc

4、 far,push ax,push bx,push cx,call sub,ret,main endp,sub proc near,ret 6,sub endp,code ends,(SP),堆棧段,(SP),(IP),第,3,章,Pentium,的指令系統(tǒng),2024/11/21,5,JMP1000H,;段內(nèi)直接,JMPCX,;段內(nèi)間接,JMP1000H,:,2000H,;段間直接,JMP DWORD PTR SI,;段間間接,JMP dest,;,必須指定轉(zhuǎn)移目標(biāo)地址,(,或轉(zhuǎn)向地址,),。,2.,無條件轉(zhuǎn)移指令和條件轉(zhuǎn)移指令,JMP/J*,(其中,*代表各種條件),1),無條件轉(zhuǎn)移指令,J

5、MP,例:已知,(BX)=1000H,,,(SI)=2000H ,(DS)=2000H,(23000H)=0250H,(23002H)=2000H,JMP DWORD PTR BXSI,則:(,BX,),+,(,SI,),=3000H,(IP)=,(,PA,),=(16d,(DS)+(BX)+(SI)=(23000H)=0250H,(,CS,),=(PA+2)=2000H,第,3,章,Pentium,的指令系統(tǒng),2024/11/21,6,JE/JZ,JNE/JNZ,JG/JNLE,JNG/JLE,JL/JNGE,JNL/JGE,JNA/JBE,JB/JNAE,JNB/JAE,JA/JNBE,J

6、S,JNS,JO,JNO,JP,NP,JCXZ,JECXZ,2),條件轉(zhuǎn)移指令,J*,根據(jù)單個條件標(biāo)志的設(shè)置情況轉(zhuǎn)移,根據(jù)兩個無符號數(shù)比較結(jié)果轉(zhuǎn)移,比較兩個帶符號數(shù),,并根據(jù)比較結(jié)果轉(zhuǎn)移,第,3,章,Pentium,的指令系統(tǒng),2024/11/21,7,注意幾點(diǎn):,所有條件轉(zhuǎn)移指令都是相對轉(zhuǎn)移形式,段內(nèi)范圍。,當(dāng)需往一個較遠(yuǎn)地方進(jìn)行條件轉(zhuǎn)移時,,選用條件轉(zhuǎn)移轉(zhuǎn)到附近一個單元,,然后,再用無條件轉(zhuǎn)移轉(zhuǎn)到較遠(yuǎn)的目的地。,條件轉(zhuǎn)移指令中,相當(dāng)一部分指令是在比較完二個,數(shù)大小后,根據(jù)結(jié)果而決定是否轉(zhuǎn)移,,條件轉(zhuǎn)移指令不影響標(biāo)志位,第,3,章,Pentium,的指令系統(tǒng),2024/11/21,8,按轉(zhuǎn)移

7、條件不同,條件轉(zhuǎn)移指令可以分為四大類:,以單個狀態(tài)標(biāo)志作為轉(zhuǎn)移條件助記符轉(zhuǎn)移條件,助記符,轉(zhuǎn)移條件,助記符,轉(zhuǎn)移條件,JZ/JE,ZF=1,JNZ/JNE,ZF=0,JS,SF=1,JNS,SF=0,JO,OF=1,JNO,OF=0,JP/JPE,PF=1,JNP/JPO,PF=0,JC,CF=1,JNC,CF=0,以,CX,的值為,0,作為轉(zhuǎn)移條件,助記符,轉(zhuǎn)移條件,JCXZ/JECXZ,(E)CX=0,第,3,章,Pentium,的指令系統(tǒng),2024/11/21,9,助記符,轉(zhuǎn)移條件,JA/JNBE,CFZF=0,高于,/,不低于等于,JAE/JNB/JNC,CF=0,高于或等于,/,不低

8、于,/,無進(jìn)位,JB/JNAE/JC,CF=1,低于,/,不高于等于,/,有進(jìn)位,JBE/JNA,CFZF=1,低于或等于,/,不高于,以兩個無符號數(shù)比較的結(jié)果作為轉(zhuǎn)移條件,以兩個帶符號數(shù)比較的結(jié)果作為轉(zhuǎn)移條件,助記符,轉(zhuǎn)移條件,JG/JNLE,(,SFOF,),ZF=0,大于,/,不小于等于,JGE/JNL,SFOF=0,大于或等于,/,不小于,JL/JNGE,SFOF=1,小于,/,不大于等于,JLE/JNG,(,SFOF,),ZF=1,小于或等于,/,不大于,第,3,章,Pentium,的指令系統(tǒng),2024/11/21,10,條件轉(zhuǎn)移指令應(yīng)用,例:比較二個數(shù)是否相等,如相等做動作,1,否

9、則,做動作,2,CMP AX,,,BX,JE action_1,Action_2:,action_1,:,或,CMP AX,,,BX,JNZ action_2,action_1:,action_2,:,第,3,章,Pentium,的指令系統(tǒng),2024/11/21,11,例:,X,,,Y,放在,X,,,Y,單元里,,(,帶符號數(shù)判斷,),先判,X 50,,,YES too_high,,,NO,做,X-Y,溢出,overflow,,,否則求,|X-Y|result,程序,:,MOV AX,X CMP AX,50,JG too_high,;,大于轉(zhuǎn),too_high,SUB AX,Y,JO over

10、flow,;,溢出轉(zhuǎn),overflow,JNS nonneg,;S=0,轉(zhuǎn),nonneg,NEG AX,nonneg:MOV result,AX,too_high,:,overflow,:,第,3,章,Pentium,的指令系統(tǒng),2024/11/21,12,例,:,在,M,中有一個首地址為,array,的,N,字?jǐn)?shù)組,要求測試其中正數(shù)、,0,及負(fù)數(shù)的個數(shù)。,(,帶符號數(shù)判斷,),正數(shù)個數(shù)放在(,DI,)中,0,的個數(shù)放在(,SI,)中,負(fù)數(shù)的個數(shù)放在,N-,(,DI,),-,(,SI,)送(,AX,),如果沒有負(fù)數(shù)轉(zhuǎn),skip,如果有負(fù)數(shù)轉(zhuǎn),neg_val,程序:,MOV CX,N,;,N,字

11、數(shù)組,MOV BX,0,MOV DI,BX,MOV SI,BX,AGAIN:CMP WORD PTR ARRARYBX,0,JLE LESS_OR_AG,INC DI;,正數(shù)個數(shù),JMP SHORT NEAT,LESS_OR_AG:JL NEAT,INC SI;0,的個數(shù),NEAT:ADD BX,2,DEC CX,JNZ AGAIN,MOV AX,N,SUB AX,DI,SUB AX,SI,JZ SKIP ;,沒有負(fù)數(shù),JMP NEAR PTR NEG_VAL ;,負(fù)數(shù),SKIP:,NEG_VAL:,第,3,章,Pentium,的指令系統(tǒng),2024/11/21,13,3.,循環(huán)控制指令,循環(huán)控

12、制指令用于使一些程序段反復(fù)執(zhí)行,循環(huán)控制指令有三種:,(1),、,LOOP (Loop),循環(huán)指令,(2),、,LOOPE/LOOPZ,當(dāng)相等,/,為“,0”,循環(huán),(3),、,LOOPNE/LOOPNZ,當(dāng)不相等,/,不為“,0”,循環(huán),注意:,*,CX,中存放循環(huán)次數(shù),只能使用段內(nèi)直接尋址的,8,位位移量,(,-128127,),*,ECX,中存放循環(huán)次數(shù),只能使用段內(nèi)直接尋址的,16,位位移量(,-3276832767,),助記符,轉(zhuǎn)移條件,不轉(zhuǎn)移條件,LOOP,CX0,CX=0,LOOPZ,CX0,且,ZF=1,CX=0,或,ZF=0,LOOPNZ,CX0,且,ZF=0,CX=0,或,

13、ZF=1,第,3,章,Pentium,的指令系統(tǒng),2024/11/21,14,LOOPxx,符號地址,執(zhí)行 操作,:,(,(E)CX,)(,(E)CX,),-1,此,操作不影響標(biāo)志,檢查轉(zhuǎn)移條件,xx,,滿足轉(zhuǎn)向目標(biāo)地址去執(zhí)行,;,不滿足執(zhí)行,LOOPxx,后一條指令,與條件轉(zhuǎn)移指令不同的是:,循環(huán)指令隱含,(E)CX),減操作。,第,3,章,Pentium,的指令系統(tǒng),2024/11/21,15,例,:,求首地址為,ARRAY,的,M,個字之和,結(jié)果存入,TOTAL,。,MOV CX,M,MOV AX,0,MOV SI,AX,START_LOOP:,ADD AX,ARRAYSI,ADD SI

14、,2,LOOP START_LOOP,MOV TOTAL,AX,第,3,章,Pentium,的指令系統(tǒng),2024/11/21,16,例:在,string,字符串中查找空格字符,串長度為,N,。,修改偏址,BX,Y,N,AL,關(guān)鍵字,CX,串長度,N,DS,:,BX,串首址,判,BX,是關(guān)鍵字?,(CX)(CX),-,1,找到處理,未找到處理,(CX)=0,?,Y,N,結(jié)束出口,第,3,章,Pentium,的指令系統(tǒng),2024/11/21,17,用條件轉(zhuǎn)移:,JZ,MOV CX,,,N,MOV AX,SEG string,MOV DS,AX,LEA BX,,,string,MOV AL,20H,

15、next,:,CMP AL,,,BX,JZ find,INC BX,DEC CX,JNZ next,未找到處理,JMP exit,find,:找到處理,exit,:結(jié)束出口,用循環(huán)指令,:,LOOP NZ next,MOV CX,,,N,MOV AX,SEG string,MOV DS,AX,LEA BX,,,string,MOV AL,20H,next,:,CMP AL,,,BX,PUSHF,INC BX,POPF,LOOPNZ next,JZ find,未找到處理,JMP exit,find,:找到處理,exit,:結(jié)束出口,DEC BX,next,:,INC BX,CMP AL,,,BX

16、,LOOP NZ next,JZ find,未找到處理,JMP exit,find,:找到處理,exit,:結(jié)束出口,2024/11/21,18,思考:,去掉指令,JMP exit,,程序執(zhí)行結(jié)果會怎樣?,PUSH F,、,POPF,可否去掉?若要去掉,程序如何修改?,執(zhí)行完,LOOPNZ,后,可否根據(jù),CX=0,來,判斷查找結(jié)果,?,有人認(rèn)為,CX=0,,即,說明沒找到,,對嗎?,第,3,章,Pentium,的指令系統(tǒng),2024/11/21,19,循環(huán)指令說明:,LOOP,退出循環(huán)條件是(,CX,),=0,LOOPZ,和,LOOPNZ,提供了提前結(jié)束循環(huán)的可能,不一定要等到,(CX)=0,才退出循環(huán)。,在串中查找字符,查到了,就可退出,,可用,LOOPNZ,,,不相等時繼續(xù)查找。,比較兩串時,當(dāng)有字符不等,就可退出,說明兩字符串不等。,可用,LOOPZ,,,當(dāng)相等時繼續(xù)比較。,執(zhí)行完,LOOPNZ,或,LOOPZ,后,根據(jù),ZF,標(biāo)志的值判斷結(jié)果,對查找字符,,ZF=1,說明找到;否則沒有找到。,對串比較,,ZF=1,說明兩串相等;否則不等。,第,3,章,Pentium,的指令系統(tǒng),

展開閱讀全文
溫馨提示:
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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!