簡體   English   中英

循環內循環

[英]loop within a loop in assembly

我剛開始在Assembly中編程,我對在Assembly中循環很困惑,這是我的代碼:

org 100h

Var db ?
Var2 db 65
Var3 db 0
mov ax,0
mov ah,01h
int 21h

mov Var,al

mov ah,02h
mov dl,10
int 21h

mov ah,02h
mov dl,13
int 21h

mov al,Var
sub al,64

mov cl,al

a:
    mov bl,cl
    mov ah,02h
    mov dh,Var2
    inc Var3
    mov cl,Var3
    inc Var2

b:                           
    mov ah,02h      
    mov dl,dh      
    int 21h      
    mov ah,02h      
    mov dl,0dh      
    int 21h          
    loop b     

    mov ah,02h
    mov dl,10
    int 21h

    mov ah,02h
    mov dl,13
    int 21h  

mov cl,bl
loop a

ret

它輸出如下內容:( 輸入) F (輸出) ABCDEF

(輸入) B (輸出) AB

我想發生的是:( 輸入) F (輸出) A BB CCC DDDD EEEEE FFFFFF

我真的需要幫助,我花了數小時花時間在這段代碼上。 請這樣做告訴我我做錯了或應該做的。 謝謝

使用循環變量時, cx寄存器用作計數器。 所以在內部循環中

    loop b     

您正在使用的CX在此過程中變為0。 然后,您的代碼將繼續外循環

mov ah,02h
...
int 21h  

然后再次使用cx ,該點仍為0。

mov cl,bl

所以這個外循環

loop a

永不循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM