我是NASM的初学者,我想编写一个显示最大数据量的程序。数组的值。但是现在我想获取值并打印所有数组,但是我不能,因为即使我将esi加到32位,程序也会打印最后值的10倍。我究竟做错了什么?我应该将esi移至寄存器r12或更高版本吗? 这是我的第一个在Assembly中使用数组的程序,非常抱歉。
default rel
extern scanf,printf
global main
section .data
tab times 40 dd 0
format db "%d",2ch
najw dd 0
section .text
main:
push rbp
mov rbp,rsp
mov r12d,10
mov r13d,10
_petla1:
dec r12d
cmp r12d,0
je _petla2
mov rdi,format
mov esi,tab
add esi,4
xor rax,rax
call scanf wrt ..plt
jmp _petla1
_petla2:
cmp r13d,0
je _exit
mov rdi,format
mov esi,[tab]
add esi,4
xor rax,rax
call printf wrt ..plt
dec r13d
jmp _petla2
_exit:
mov rsp,rbp
pop rbp
ret