我有一个存储在寄存器edx
中的整数,其中包含0到255(0x00到0xFF)的随机值,我希望将其值用作db
的参数。
db edx
然而,当我尝试这样做时,我收到错误A2138说“无效数据初始化程序”。
要清楚,像
这样的命令db 57
确实有效,而不是之前显示的那个。
所以我想我问的问题是如何使用寄存器作为db
命令的参数?
感谢您的时间。
答案 0 :(得分:3)
你不能。 db
告诉编译器在编译期间放置db
之后定义的值。
使用注册表,您无法执行此操作,因为该值未知(已知并且等于零),这就是您收到错误的原因。如果你想从寄存器中输入一个值,你需要使用mov操作码。
loc db ?
....
mov [loc], dl
由于edx
是32位,我们无法将其存储在db
中,因此要么存储最低的8位,要么我们需要将loc
更改为{ {1}}。