Assembly 如何使用x86汇编程序交换16位值?
嗨,我想交换一个16位的值。 在另一个问题中,有人提出了以下解决方案。 但这只适用于immidate值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您所说的交换-更改字节数是什么意思,即切换高字节和低字
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