【发布时间】:2012-12-31 00:43:03
【问题描述】:
使用下面的代码,我尝试将 ebx 的低两个字节“存储”在两个高字节中,然后使用低阶 bx 作为临时变量来访问“池”中的偏移量。最后,我通过右移数据恢复了原始值(它最初只使用了低两个字节)。
rol ebx, 16
mov bl, dl
;(other operations involving bx)
mov [pool+bx], dword esi
shr ebx, 16
这与 nasm 组装得很好,但是我得到了错误
重定位被截断以适应:R_386_16 针对 `.data'
链接时。有关如何绕过此错误的任何建议?简单地使用另一个寄存器不是一种选择,因为实际上每个寄存器都保存 esp 并且正在使用段寄存器。
编辑:我假设有人会问,所以我使用的是 32 位程序集
【问题讨论】:
标签: assembly nasm intel-syntax