使用寄存器作为DB的参数(MASM)

时间:2018-04-02 07:22:05

标签: assembly masm cpu-registers

我有一个存储在寄存器edx中的整数,其中包含0到255(0x00到0xFF)的随机值,我希望将其值用作db的参数。

db edx

然而,当我尝试这样做时,我收到错误A2138说“无效数据初始化程序”。

要清楚,像

这样的命令
db 57

确实有效,而不是之前显示的那个。

所以我想我问的问题是如何使用寄存器作为db命令的参数?

感谢您的时间。

1 个答案:

答案 0 :(得分:3)

你不能。 db告诉编译器在编译期间放置db之后定义的值。

使用注册表,您无法执行此操作,因为该值未知(已知并且等于零),这就是您收到错误的原因。如果你想从寄存器中输入一个值,你需要使用mov操作码。

loc db ?
....
mov [loc], dl

由于edx是32位,我们无法将其存储在db中,因此要么存储最低的8位,要么我们需要将loc更改为{ {1}}。

相关问题