gpt4 book ai didi

assembly - 80x86 16位asm : lea cx, [cx * 8 + cx]在NASM上导致错误(编译.com文件)

转载 作者:行者123 更新时间:2023-12-04 13:15:17 25 4
gpt4 key购买 nike

NASM给出的错误(尽管我的操作系统正常)是“无效的有效地址”。

现在,我已经看到了许多关于如何使用LEA的示例,我认为我做对了,但是我的NASM不喜欢它。我尝试了lea cx, [cx+9]并成功了; lea cx, [bx+cx]没有。

现在,如果我将寄存器扩展到32位(即lea ecx, [ecx*8+ecx]),一切都会好起来,但仅限于使用16位和8位寄存器。

在座的人中有这么博学的人可以向我解释为什么我的汇编器不让我以应有的方式使用lea吗?

最佳答案

这是因为[bx+cx]在16位x86上的任何寻址模式下均无效,请参阅此site了解更多信息。
lea cx, [bx+di]lea cx, [bx+si]应该可以工作。

如果您的代码将在386或更高版本上以16位模式运行,则可以使用lea cx, [ecx + 9](地址大小前缀,但仍为16位操作数大小)。

另请参见this Q&A on x86 addressing modes (mostly discussing 32/64bit addressing modes标签Wiki。

关于assembly - 80x86 16位asm : lea cx, [cx * 8 + cx]在NASM上导致错误(编译.com文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2716142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com