如何在x86 Assembly中将寄存器值用作数组元素偏移量?

问题描述

所以我有这个数组:

fib BYTE 9,123,92,0

我希望能够访问数组的不同元素并将它们分别移到寄存器中。

到目前为止,我已经注意到可以执行以下操作:

mov al,fib + 2

将第三个元素值92移到al寄存器中。

但是,如果我尝试这样做:

mov ah,2
mov al,fib + ah

为了使我可以更改ah的值,从而更改我要移至al的元素,汇编器表示第二行是“对寄存器的无效使用”

所以我的问题是,有什么方法可以重写第二行,从而允许我访问fib数组中元素的值,该值从一开始就被偏移了存储在啊?


编辑:

我正在Windows 10的Visual Studio中编写此代码。目标平台是x86。整个源代码是:

.386
.model flat,stdcall
.stack 4096
ExitProcess PROTO,dwExitCode: DWORD

.data

    fib     BYTE 9,0

.code

main PROC

    mov bx,2
    mov al,[fib + bx]

    INVOKE ExitProcess,0
main ENDP
END main

考虑到这只是我尝试学习更多有关汇编语言数组的尝试,实际上并没有太多内容

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)