arrays - 如何在 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
考虑到这只是我尝试更多地了解汇编语言中的数组,这真的没什么
解决方案
推荐阅读
- python-3.x - Python 3.8.2:filedialog.askopenfilename 和 ttk.Entry 冲突
- reactjs - React-hook-form 提交和 useState 问题
- openid-connect - Azure AD B2C 中一组用户的自定义访问令牌生命周期
- regex - 正则表达式的 NFA ^[a-zA-Z0-9]{3,16}$
- elasticsearch - Elasticsearch - buckets_path 聚合项
- git - 当我将本地更改提交到新分支,推送该分支,然后切换分支并切换回来时,我所有的文件更改都丢失了
- html - 滚动屏幕宽度的 CSS 文本
- html - 我试图让我的导航位于页面的右侧,目前它在中间
- kotlin - android koltin,如何检测长溢出
- javascript - 基于派生类销毁基类