[英]Loop doesn't work, nasm
我制作了一个程序来输出1到9的计数,但是编译后我只会得到“ 0”。 我不知道我在哪里弄错了。 我想寻求帮助。 我在下面放置一个代码:
section .text
global _start
_start:
xor esi,esi
mov esi,[variable]
_middle:
mov [variable],esi
mov eax,4
mov ebx,1
mov ecx,variable
mov edx,[length]
int 80h
inc esi
cmp esi,57
jbe _middle
_end:
mov eax,1
int 80h
section .data
variable db 48
length dd $-variable
您增加了esi
但忘记了将其存储到variable
,因此在循环的顶部再次读取原始值。 移动存储线esi
标签后 _middle
。 (并且您不再需要将variable
检索到esi
的行。)
似乎您正在使用ASCII值,因此不应以0
开头的variable
,而应以48
开头:
_start:
mov esi, 48
_middle:
mov esi,[variable]
或者,从初始化variable
开始:
variable db '0'
但这需要更多重写。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.