欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
匯編(十七)——控制轉移類(lèi)指令三
環(huán)指令,子程序指令

一、循環(huán)是一種特殊的轉移流程,當滿(mǎn)足(或不滿(mǎn)足)某條件時(shí),反復執行一系列操作,直到不滿(mǎn)足(或滿(mǎn)足)條件為止。循環(huán)流成的條件一般都是循環(huán)計數,在程序中用循環(huán)計數來(lái)控制循環(huán)次數。
LOOP LABEL           ;CX←CX-1;若CX≠0,循環(huán):IP←IP+位移量;否則,順序執行
LOOPZ/LOOPE LABEL    ;CX←CX-1;若CX≠0且ZF=1,循環(huán):IP←IP+位移量;否則,順序執行
LOOPNZ/LOOPNE LABEL  ;CX←CX-1;若CX≠0且ZF=0,循環(huán):IP←IP+位移量;否則,順序執行
LOOP指令首先將計數值CX減1,然后判斷計數值CX是否為零。CX不為0,則繼續執行循環(huán)體內的指令;CX等于0,表示循環(huán)結束,于是程序退出循環(huán),順序執行后面的指令。LOOPZ和LOOPNZ指令中油要求同時(shí)ZF為1或0才能循環(huán),用于判斷結果是否為零或相等,以便提前結束循環(huán)。循環(huán)指令中的操作數LABEL采用相對尋址方式,表示循環(huán)的目標地址,是一個(gè)8位位移量。循環(huán)指令不影響標志。
例17-1:在字節數組中找出第一個(gè)非零元素,并顯示輸出第一個(gè)非零元素的下標。
NAME LI17-1.ASM
DATA SEGMENT
ARRAY DB 0,0,0,7,0,0,4,34,25,30
COUNT EQU $-OFFSET ARRAY
DATA ENDS
CODE SEGMENT
 ASSUME CS:CODE,DS:DATA
BEGIN: MOV AX,DATA
 MOV DS,AX
 MOV CX,COUNT
 MOV DI,0FFFFH
NEXT: INC DI
 CMP ARRAY[DI],0
 LOOPZ NEXT
 JNE OKENTRY
 MOV DL,'0'
 JMP DISPLAY
OKENTRY:MOV DX,DI
 OR DL,30H
DISPLAY:MOV AH,02H
 INT 21H
 MOV AH,4CH
 INT 21H
CODE ENDS
 END BEGIN
例17-2:求兩個(gè)一維字數組的和,數組元素個(gè)數為N,當計算到兩個(gè)數組對應元素之和為零時(shí)就停止求和(假設數組元素為無(wú)符號二進(jìn)制數)。
NAME LI17-2.ASM
DATA SEGMENT
ARRAY1 DW 23,34,4,5,66,76,0,345,567,23,12,67
ARRAY2 DW 34,24,3,2,44,79,0,345,56,43,21,567
N EQU $-OFFSET ARRAY2
SUM DW 15 DUP(?)
DATA ENDS
CODE SEGMENT
 ASSUME DS:DATA,CS:CODE
BEGIN: MOV AX,DATA
 MOV DS,AX
 MOV AX,0
 MOV SI,0FFFEH
 MOV CX,N
 SHR CX,1
NOZERO: INC SI
 INC SI
 MOV AX,ARRAY1[SI]
 ADD AX,ARRAY2[SI]
 MOV SUM[SI],AX
 LOOPNZ NOZERO
 JNZ L
 MOV DL,'Y'
 JMP Q
L: MOV DL,'N'
Q: MOV AH,02H
 INT 21H
 MOV AH,4CH
 INT 21H
CODE ENDS
 END BEGIN
二、子程序指令
程序中有些部分可能要實(shí)現相同的功能,而且這些功能需要用到,用子程序實(shí)現這個(gè)功能是很適合的。子程序通常是與主程序分開(kāi)的、完成特定功能的一段程序。當主程序(調用程序)需要執行這個(gè)功能時(shí),就可以調用該子程序(被調用程序);于是,程序轉移到這個(gè)子程序的起始處執行。當運行完子程序后,再返回調用它的主程序。子程序由主程序執行子程序調用指令CALL來(lái)調用;而子程序執行完后用子程序返回指令RET,返回主程序繼續執行。CALL和RET指令均不影響標志位。
1、子程序調用指令CALL
CALL指令用在主程序中,實(shí)現子程序的調用。子程序和主程序可以在同一個(gè)代碼段內,也可以在不同段內。類(lèi)似無(wú)條件轉移JMP指令,子程序調用CALL指令也可以分成段內調用(近調用)和段間調用(遠調用);同時(shí),CALL目標地址也可以采用直接尋址或間接尋址方式。但是,子程序執行結束時(shí)要返回的,所以,CALL指令不僅要同JMP指令一樣改變CS:IP以實(shí)現轉移,而且還要保留下一條要執行指令的地址,以便返回時(shí)重新獲取它。保護CS:IP值的方法是壓入堆棧,獲取CS:IP值的方法就是彈出堆棧。
CALL指令的4種格式:
CALL LABEL     ;段內調用,直接尋址:SP←SP-2,SS:[SP]←IP,IP←IP+16位位移量
CALL R16/M16   ;段內調用,間接尋址:SP←SP-2,SS:[SP]←IP,IP←R16/M16
CALL FAR PTR LABEL  ;段間調用,直接尋址:SP←SP-2,SS:[SP]←CS,SP←SP-2,SS:[SP]←IP
                    ;IP←LABEL偏移地址,CS←LABEL段地址
CALL FAR PTR MEM    ;段間調用,間接尋址:SP←SP-2,SS:[SP]←CS,SP←SP-2,SS:[SP]←IP
                    ;IP←[MEM],CS←[MEM+2]
根據過(guò)程偽指令,匯編程序可以自動(dòng)確定是段內還是段間調用,同時(shí)可以采用NEAR或FAR偽指令強制成為近調用或遠調用。
2、子程序返回指令RET
子程序執行完后,應返回主程序中繼續執行,這一功能由RET指令完成。要回到主程序,只要能獲得離開(kāi)主程序時(shí),由CALL指令保存于堆棧的指令地址即可。根據子程序與主程序是否同處于一個(gè)段內,返回指令分為段內返回和段間返回。
RET指令的4種格式如下:
RET           ;無(wú)參數段內返回:IP←SS:[SP],SP←SP+2
RET I16       ;有參數段內返回:IP←SS:[SP],SP←SP+2,SP←SP+I16
RET           ;無(wú)參數段間返回:IP←SS:[SP],SP←SP+2,CS←SS:[SP],SP←SP+2
RET I16       ;有參數段間返回:IP←SS:[SP],SP←SP+2,CS←SS:[SP],SP←SP+2,SP←SP+I16
盡管段內返回和段間返回具有相同的匯編助記符,但匯編程序會(huì )自動(dòng)產(chǎn)生不同的指令代碼;也可以分別采用RETN和RETF表示段內和段間返回。返回指令還可以帶有一個(gè)立即數I16,則堆棧指針SP將增加,即SP←SP+I16。這個(gè)特點(diǎn)使得程序可以方便的廢除若干執行CALL指令以前入棧的參數。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
第3章_5 控制轉移
[匯編]子程序結構
51單片機自學(xué)教程(8)
控制轉移指令
匯編語(yǔ)言之轉移指令和原理
一文詳解匯編語(yǔ)言call和ret指令
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久