首页 > 解决方案 > 如何在 nasm 程序集中的函数中索引数组?

问题描述

根据问题,如何在函数内部的 nasm 程序集中索引数组?每当我编译我的代码时,我总是得到错误无效的有效地址,并且根据我所做的搜索,它与我在索引时使用的寄存器有关。即便如此,鉴于汇编的不同架构,我仍然不确定要使用哪些寄存器。

get_largest:

mov rcx, 5
mov bl, 0
mov al, 0

neg_loop:
cmp rcx, 0
je check_neg
cmp dword[rdi+al*2], 0
jl incbl
inc al
jmp neg_loop
incbl:
inc al
inc bl
jmp neg_loop

check_neg:
cmp bl, 5
jl check_largest
mov rsi, 1
mov rdx, -1
jmp return

check_largest:
mov rsi, 0
mov rcx, 5
mov al, 0
mov bl, 0

large:
cmp rcx, 0
je greatest
cmp dword[rdi+al*2], bl
jg larger
inc al
jmp large

larger:
mov bl, dword[rdi+al*2]
inc al
jmp large

greatest:
mov rdi, bl

return:
    ret 

这是我的函数,编译错误发生在cmp dword[rdi+al*2], 0

标签: assemblynasm

解决方案


推荐阅读