首页 > 解决方案 > 如何在 x86 程序集中使用寄存器值作为数组元素偏移量?

问题描述

所以我有这个数组:

fib BYTE 9, 123, 92, 0, 0, 0, 0

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

到目前为止,我已经注意到,例如,我可以这样做:

mov al, fib + 2

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

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

mov ah, 2
mov al, fib + ah

这样我就可以更改 ah 的值,从而更改要移动到 al 中的元素,汇编器说第二行是“寄存器的无效使用”

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


编辑:

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

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

.data

    fib     BYTE 9, 123, 92, 0, 0, 0, 0

.code

main PROC

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

    INVOKE ExitProcess, 0
main ENDP
END main

考虑到这只是我尝试更多地了解汇编语言中的数组,这真的没什么

标签: arraysassemblyx86offsetcpu-registers

解决方案


推荐阅读