我刚刚开始在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 (输出) 一个 乙 C d Ë ˚F
或 (输入) 乙 (输出) 一个 乙
我想要发生的是: (输入) F (输出) 一个 BB CCC DDDD EEEEE FFFFFF
我真的需要帮助,我花了几个小时在这段代码中绞尽脑汁。请这样告诉我我做错了什么或我该做什么。感谢
答案 0 :(得分:1)
使用循环变量时,cx
寄存器用作计数器。所以这里是内循环
loop b
您使用的CX
在此过程中变为0。然后你的代码继续外循环
mov ah,02h
...
int 21h
再次使用cx
,此时仍为0。
mov cl,bl
所以这个外循环
loop a
从不循环。