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