首页 文章

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

提问于
浏览
0

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

db edx

但是,当我尝试这样做时,我得到错误A2138说"invalid data initializer" .

要明确一个命令就好

db 57

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

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

感谢您的时间 .

1 回答

  • 3

    你不能 . db 告诉编译器在编译时将 db 之后定义的值放在原来的位置 .

    使用寄存器,你不能这样做,因为值是未知的(它已知并且等于零)这就是你得到错误的原因 . 如果要从寄存器中输入值,则需要使用mov操作码 .

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

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

相关问题