0

アセンブリ内のプログラムで最大数を見つけたいが、アドレスで終了したい。私はアセンブリが初めてで、AT&T 構文を使用しています。

.section .data
data_items:                       #These are the data items
.long 3,67,34,222,45,75,54,34,44,33,22,11,66,0
.section .text
.globl _start
_start:
movl $0, %edi                     # move 0 into the index register
movl data_items(,%edi,4), %eax    # load the first byte of data
movl %eax, %ebx                   # since this is the first item, %eax is
                                  # the biggest
start_loop:                       # start loop
cmpl $0, %eax                     # check to see if we’ve hit the end
je loop_exit
incl %edi                         # load next value
movl data_items(,%edi,4), %eax
cmpl %ebx, %eax                   # compare values
jle start_loop                    # jump to loop beginning if the one isn’t bigger
movl %eax, %ebx                   # move the value as the largest
jmp start_loop                    # jump to loop beginning
loop_exit:
                                  # %ebx is the return value, and it already has the number
movl $1, %eax                     #1 is the exit() syscall
int $0x80
4

1 に答える 1

0

アドレスを ebx に格納するだけで、代わりに ebx と比較し、(%ebx) と比較します

于 2013-06-04T07:32:28.660 に答える