2
我开发在Mac OS X(FreeBSD的)大会:找到一个数组的最大数量,不工作
这里是代码
section .data
v dd 72,54, 89, 21, 0, 12
n equ 6
section .bss
max resd 1
section .text
global _start
_start:
mov eax, 0
mov ebx, [v]
mov cx, n
dec cx
change_max:
mov ebx, [v+eax*4]
loop lp
lp:
inc eax
cmp ebx, [v+eax*4]
jl change_max
loop lp
return_max:
mov [max], ebx
exit:
push dword 0
mov eax, 0x1
sub esp, 4
int 0x80
我得到一个分割故障:11我不明白为什么,有什么线索?
另一个问题是'LOOP'将使用整个32位的'ECX',而不仅仅是'CX'的低16位,并且它看起来并不像所提供的代码清除'ECX'的前16位。 –
loop命令会自动减少ecx中的值,所以我的错误是使用cx而不是ecx。这是我所做的更正:mov ecx,n。现在,它的工作,谢谢。 – AR89