繁体   English   中英

循环无效,nasm

[英]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.

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