我最近一直在努力学习一些装配,而且我目前难以进行一项练习,这需要我找到一个长值列表的最大数量。
代码如下:
.section .data
data_items: .long 200, 201, 101, 10, 0
min_val: .long 0x8000000000000000 # MIN_VALUE in long
.section .text
.global _start
_start:
movl $0, %edi # init counter to 0
movl min_val, %ebx
start_loop:
cmpl $0, %eax
je loop_exit # go to end if 0 encountered
incl %edi
movl data_items(,%edi,4), %eax
cmpl %ebx, %eax
jle start_loop # if new value < max value in ebx, read next element
movl %eax, %ebx
jmp start_loop
loop_exit:
movl $1, %eax
int $0x80
此代码有两个问题:
任何人都可以帮我理解我做错了吗?
编辑:更改后,代码如下所示。请注意,在这种情况下,最大值是145而不是401。
.long
答案 0 :(得分:2)
首先, 0x8000000000000000 甚至不适合长,长long 。长-1是 0xffffffff 。
至于另一点,我无法评论您尚未发布的代码。