迭代NASM汇编代码

时间:2015-11-09 22:34:40

标签: assembly x86 nasm

所以我现在正在使用汇编语言类,我们正在尝试从输入创建和排序数组。我可以很好地获得排序逻辑,但是我在尝试迭代数组时遇到了很多麻烦。

为了进一步说明以下代码的作用,我们应该从命令行读取整数。数字0分隔用户输入的结束,然后调用排序方法。

工作正常,这是不起作用的数组迭代。

以下是我正在做的事情的样本

main:
        mov ebx, array  ;move the variable array to ebx
        mov ecx, 0          ;set ecx to zero
        jmp input            ;jump to input
input:
        mov edx, 0          ;move 0 to edx
        call ReadInt        ; read in an integer from input to eax
        cmp eax, edx     ; compare the integer to 0
        je sort                ;jump if it equals zero to the sort method
        mov [ebx+ecx], eax    ;moves eax to the ecxth element of the array stored in ebx
        add ecx, 1                    ;increment ecx by 1
        jmp input                        ; jump back to input

当我在稍后的函数中打印数组时,无论我选择哪个元素,它总是一些疯狂的大数字。

我的逻辑是否在上面的代码段中?你会提出什么改进?

1 个答案:

答案 0 :(得分:3)

由于asm使用字节索引但每个整数为4个字节,因此需要按4进行缩放。因此,您需要ecx之类的东西。或者,在每次迭代中将4增加{{1}}。