我制作了一个程序来输出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
答案 0 :(得分:0)
您递增esi
,但忘记将其存储到variable
,因此在循环的顶部会再次读取原始值。在标签esi
之后移动存储_middle
的行。 (而且您不再需要该行将variable
检索到esi
了。)
由于您似乎使用的是ASCII值,因此您不应该使用值variable
启动0
,而应使用48
:
_start:
mov esi, 48
_middle:
mov esi,[variable]
或者,从variable
初始化:
variable db '0'
但这需要更多的重写。