我是第一次尝试组装的新手程序员.如果这是一个令人难以置信的蹩脚问题,请提前抱歉.
我有一个存储在EAX寄存器中的字符,但我需要将它移动到我的DL寄存器中.当我尝试:mov dl,eax我得到一个错误C2443:操作数大小冲突.我知道eax寄存器是32位而dl是8位...我正在做什么?我该如何解决这个问题.
Soa*_*Box 12
你想要的可能是:
movzx edx, al
Run Code Online (Sandbox Code Playgroud)
这将al复制到dl,零填充edx的其余部分.这条单指令相当于这两条指令:
xor edx, edx
mov dl, al
Run Code Online (Sandbox Code Playgroud)
尝试
xor edx,edx
mov dl, al
Run Code Online (Sandbox Code Playgroud)
也许?将edx的"非必要"高阶位(可选)清零的第一条指令,然后将低位8从eax移到edx.
正如其他人所指出的那样,movzx只需一步即可完成.值得一提的是,沿着相同的行,如果你在al中有一个带符号的值,你可以使用"movsx edx,al"用alb的msb的副本填充edx的高位,从而放置一个带符号的32位代表al到edx.
| 归档时间: |
|
| 查看次数: |
7947 次 |
| 最近记录: |