gpt4 book ai didi

assembly - x86 汇编语言高位和低位

转载 作者:行者123 更新时间:2023-12-02 20:53:01 24 4
gpt4 key购买 nike

我开始学习x86汇编语言的问题,让我很困惑,如下:

给定一个 32 位值,我们可以交换它的高 16 位和低 16 位。例如,给定

0000 0001 0010 0011 0100 0101 0110 0111

我们可以交换它的高16位和低16位来得到该值

0100 0101 0110 0111 0000 0001 0010 0011

我知道 AX 寄存器包含 EAX 的下半部分,但仅此而已。如果有帮助,我们将不胜感激。

最佳答案

I know that the AX register contains the lower half of EAX but thats about it.

EAX 寄存器是一个 32 位寄存器,因此它可以保存您的 32 位值。它的位编号为 0 到 31。

这就是位的编号方式:

0000 0001 0010 0011 0100 0101 0110 0111
^ ^ ^ ^
| | | bit 0
| | bit 15
| bit 16
bit 31

EAX的下半部分占用编号为0到15的位。
EAX 的上半部分占用编号为 16 到 31 的位。

AX 寄存器是一个 16 位寄存器,位于较大的 EAX 寄存器的下半部分。它的位编号从 0 到 15。
EAX 寄存器的上半部分没有单独的名称可供使用!

交换EAX的高16位和低16位需要旋转内容16次,使用:

rol eax, 16    ;Rotating to the left

使用时出现相同的值:

ror eax, 16    ;Rotating to the right

关于assembly - x86 汇编语言高位和低位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41534163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com