使用寄存器作为 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
.
我在寄存器 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
.