我是靠谱客的博主 个性季节,最近开发中收集的这篇文章主要介绍x86汇编_循环左/右移_带进位的循环左/右移_笔记48ROL指令ROR指令RCL指令RCR指令,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

英文全称汇编指令中文翻译说明
Rotate LeftROL循环左移目标操作数循环向左移,最后一个被移出来的数字放入CF标志位,同时循环回最右边(LSB)。
Rotate RightROR循环右移目标操作数循环向右移,最后一个被移出来的数字放入CF标志位,同时循环回最左边(MSB)。
Rotate With Carry LeftRCL带进位的循环左移将CF位放到目标操作数的最左边,一起参与循环,从CF位移出去的数字循环回LSB。
Rotate With Carry RightRCR 带进位的循环右移将CF位放到目标操作数的最右边,一起参与循环,从CF位移出去的数字循环回MSB。

ROL指令

在下例中,请注意最高位是如何复制到进位标志位和位 0 的:

mov al,40h        ; AL = 01000000b
rol al,1          ; AL = 10000000b, CF = 0
rol al,1          ; AL = 00000001b, CF = 1
rol alz1          ; AL = 00000010b, CF = 0

利用 ROL 可以交换一个字节的高四位(位 4〜7)和低四位(位 0〜3)。例如,26h 向任何方向循环移动 4 位就变为 62h:

mov al, 26h
rol al, 4          ; AL = 62h

使用rol指令每转动4个位,则十六进制数刚好转动1个数字。例如,将 6A4Bh 反复循环左移四位,最后就会回到初始值:

mov ax, 6A4Bh
rol ax, 4              ; AX = A4B6h
rol ax, 4              ; AX = 4B6Ah
rol ax, 4              ; AX = B6A4h
rol ax, 4              ; AX = 6A4Bh

ROR指令

 在下例中,请注意最低位是如何复制到进位标志位和结果的最高位的:

mov al, 0lh          ; AL = 00000001b
ror al, 1            ; AL = 10000000b, CF = 1
ror al, 1            ; AL = 01000000b, CF = 0

当循环计数值大于 1 时,进位标志位保存的是最后循环移出 LSB 的位:

mov al, 00000100b
ror al, 3              ; AL = 10000000b, CF = 1

RCL指令

 如果把进位标志位当作操作数最高位的附加位,那么 RCL 就成了循环左移操作。下面的例子中,CLC 指令清除进位标志位。第一条 RCL 指令将 BL 最高位移入进位标志位,其他位都向左移一位。第二条 RCL 指令将进位标志位移入最低位,其他位都向左移一位:

clc                      ; CF = 0
mov bl, 88h              ; CF,BL = 0 1000100Ob
rcl bl, 1                ; CF,BL = 1 00010000b
rcl b1, 1                ; CF,BL = 0 00100001b

RCR指令

RCR(带进位循环右移)指令把每一位都向右移,进位标志位复制到 MSB,而 LSB 复制到进位标志位。从上图来看,RCL 指令将该整数转化成了一个 9 位值,进位标志位位于 LSB 的右边。下面的示例代码用 STC 将进位标志位置 1,然后,对 AH 寄存器执行一次带进位循环右移操作:

stc                     ; CF = 1
mov ah, 10h             ; AH, CF = 00010000 1
rcr ah, 1               ; AH, CF = 10001000 0

最后

以上就是个性季节为你收集整理的x86汇编_循环左/右移_带进位的循环左/右移_笔记48ROL指令ROR指令RCL指令RCR指令的全部内容,希望文章能够帮你解决x86汇编_循环左/右移_带进位的循环左/右移_笔记48ROL指令ROR指令RCL指令RCR指令所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部