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
Assembly 如何使用x86汇编程序交换16位值?_Assembly_X86_Swap - Fatal编程技术网

Assembly 如何使用x86汇编程序交换16位值?

Assembly 如何使用x86汇编程序交换16位值?,assembly,x86,swap,Assembly,X86,Swap,嗨,我想交换一个16位的值。 在另一个问题中,有人提出了以下解决方案。 但这只适用于immidate值 mov eax, 0AABBCCDDh xchg ah, al ror eax, 16 xchg ah, al. 但这只适用于immidate值。 是否有一个解决方案,我可以交换寄存器中的16位值 编辑: 对于交换,我的意思是0xAFBA->0xBAFA 对于交换,我的意思是0xAFBA->0xBAFA AX现在保存0xBAFA您所说的交换-更改字节数是什么意思,即切换高字节和低字

嗨,我想交换一个16位的值。 在另一个问题中,有人提出了以下解决方案。 但这只适用于immidate值

mov  eax, 0AABBCCDDh
xchg  ah, al
ror   eax, 16
xchg  ah, al.
但这只适用于immidate值。 是否有一个解决方案,我可以交换寄存器中的16位值

编辑: 对于交换,我的意思是0xAFBA->0xBAFA

对于交换,我的意思是0xAFBA->0xBAFA


AX现在保存0xBAFA

您所说的交换-更改字节数是什么意思,即切换高字节和低字节?加载后,该值在寄存器中。所以你实际上有更少的工作要做。我不明白你想完成什么。你在上面所做的事有
bswap
。不是真的。您可以将任何32位值移到eax(或将16位值移到ax),然后再移回来,如果您愿意的话。@R_Valdez:不-这是胡说八道-您可以将一个寄存器移到另一个寄存器,例如
mov-eax,ebx
mov   ax, 0xAFBA
xchg  al, ah
ror   al, 4