[英]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.