所以我现在正在使用汇编语言类,我们正在尝试从输入创建和排序数组。我可以很好地获得排序逻辑,但是我在尝试迭代数组时遇到了很多麻烦。
为了进一步说明以下代码的作用,我们应该从命令行读取整数。数字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
当我在稍后的函数中打印数组时,无论我选择哪个元素,它总是一些疯狂的大数字。
我的逻辑是否在上面的代码段中?你会提出什么改进?
答案 0 :(得分:3)
由于asm使用字节索引但每个整数为4个字节,因此需要按4进行缩放。因此,您需要ecx
之类的东西。或者,在每次迭代中将4
增加{{1}}。