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

Use a Register as a Parameter to DB (MASM)

我在寄存器 edx 中存储了一个整数,其中包含从 0 到 255(0x00 到 0xFF)的随机值,我想将其值用作 db.[=16 的参数=]

db edx

但是,当我尝试这样做时,出现错误 A2138 说 "invalid data initializer"。

明确地说,像

这样的命令
db 57

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

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

感谢您的宝贵时间。

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

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

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

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