我编写了一个程序来输出从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
,但忘记将其存储到变量
中,因此在循环顶部再次读取原始值。将存储 esi
的行移至标签 _middle
的后面。 (并且您不再需要将 variable
检索到 esi
中的行。)
由于您似乎正在使用 ASCII 值,因此您不应以值 0
而是以 48
开头 variable
:
_start:
mov esi, 48
_middle:
mov esi,[variable]
或者,从初始化变量
开始:
variable db '0'
但这需要更多的重写。
关于linux - 循环不起作用,nasm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27882755/