给我一个问题,我必须编写一个程序,使第一段偏移地址的最后一位成为第二段偏移地址的第一位。例如,如果我得到 ABCDH,那么第二个地址的偏移地址应该是 DCBAH。我只关注偏移地址的交换,暂时忽略基地址:
MOV AX,ABCDH
ROR AX,16 ; this will rotate the value of AX 16 times
现在我们有了 CDABH。现在我想交换D和C的位置。我被困在这一点上。我会使用 SAR 命令吗?
给我一个问题,我必须编写一个程序,使第一段偏移地址的最后一位成为第二段偏移地址的第一位。例如,如果我得到 ABCDH,那么第二个地址的偏移地址应该是 DCBAH。我只关注偏移地址的交换,暂时忽略基地址:
MOV AX,ABCDH
ROR AX,16 ; this will rotate the value of AX 16 times
现在我们有了 CDABH。现在我想交换D和C的位置。我被困在这一点上。我会使用 SAR 命令吗?
MOV AX,ABCDH ROR AX,16 ; this will rotate the value of AX 16 times
现在我们有了 CDABH
该AX
寄存器保存 16 位。当您将这 16 位旋转 16 次时,您会得到与开始时相同的值!
例如,如果给定我 ABCDH,那么第二个地址的偏移地址应该是 DCBAH
所以你想从 ABCDh 到 DCBAh。
AX
寄存器分为两半。下半部命名AL
,上半部命名AH
。您可以独立操作这些部分。
该指令mov ax, 0ABCDh
将值 0ABhAH
放入并将值 0CDh 放入AL
.
mov ax, 0ABCDh ; AH = 0ABh AL = 0CDh
rol al, 4 ; AH = 0ABh AL = 0DCh
rol ah, 4 ; AH = 0BAh AL = 0DCh
xchg al, ah ; AH = 0DCh AL = 0BAh
现在终于AX=0DCBAh
。
以上所有内容都处理 4 位数量。我们称这些小点心。
您可以使用像 1010101111001101b 这样的二进制表示来编写十六进制值 0ABCDh。可以看到有 16 位。
对齐的位组具有特殊名称: