繁体   English   中英

如何在Assembly中使用for循环?

[英]How to use for loop in Assembly?

我的任务是根据用户输入执行输出等量“Text Here”的代码。 但是,我似乎对我的cmp功能感到困惑。

;Get keyboard input
mov ah, 01h 
int 21h

;Save to bl for later use
mov bl, al
jmp isa

isa:
mov ah, 09h 
mov dx, offset text 
int 21h

cmp bl, bl
jne isa
je exit

无论我输入什么数字,我得到的代码只是'Text'的一个输出。

编辑:我试过这个,但现在我的输出是无限的:(

isa:
inc bl
mov ah, 09h 
mov dx, offset ulit 
int 21h


cmp bl, 30h
jne isa
je exit

首先,确保在开始循环之前将BX寄存器初始化为零:

...
xor bx,bx
isa:
...

为避免DOS中断覆盖(使用过的)BX寄存器的内容,请将其保护在堆栈中(不确定DOS中断的调用约定,对我来说太久了):

...
push bx
int 21h
pop bx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM