Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Pointers 如何将较大类型寄存器中的值移动到较小类型目标中?_Pointers_Assembly_Type Conversion_Masm_Cpu Registers - Fatal编程技术网

Pointers 如何将较大类型寄存器中的值移动到较小类型目标中?

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,

例如,我想将寄存器中的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, 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