Pointers 如何将较大类型寄存器中的值移动到较小类型目标中?
例如,我想将寄存器中的DWORD值移动到内存位置键入的字中,但出现错误:Pointers 如何将较大类型寄存器中的值移动到较小类型目标中?,pointers,assembly,type-conversion,masm,cpu-registers,Pointers,Assembly,Type Conversion,Masm,Cpu Registers,例如,我想将寄存器中的DWORD值移动到内存位置键入的字中,但出现错误: mov [arr + eax*TYPE arr], edx ; error: operands must be same size []括号取消对WORD类型数组元素的引用 我也尝试过这样做: mov dx, edx ; error: operands must be same size. mov [arr + eax*TYPE arr], dx 尝试使用PTR时也没有运气: mov dx,
mov [arr + eax*TYPE arr], edx ; error: operands must be same size
[]括号取消对WORD类型数组元素的引用
我也尝试过这样做:
mov dx, edx ; error: operands must be same size.
mov [arr + eax*TYPE arr], dx
尝试使用PTR时也没有运气:
mov dx, WORD PTR edx ; error: invalid use of register
或
或
解决方案?谢谢你的帮助 寄存器
DX
实际上是32位寄存器EDX
中最低的16位。您不需要mov-dx,edx
,因为dx
已经存在。因此,您只需将DX存储在word大小的变量中:
mov [word_variable], dx
当然,在这种传输过程中,edx的最高16位将丢失。您不能将一加仑的水放入1/2加仑的水罐中!
mov [arr + eax*TYPE arr], WORD PTR edx ; error: invalid use of register
mov [word_variable], dx