单片机里的"rl a"是循环左移指令,执行一次,累加器中的值左移一位,最高位移到最低位,比如:
MOV A,#90H
RL A
执行后,结果为(A)=21H。
扩展资料
用到循环移位的 *** 作时,在汇编里面是比较容易实现的,ror,rol指令就行了。利用位运算进行循环移位 *** 作比较容易理解。如果不是循环移位,使用x<<n(左移n位),x>>n右移n位。
循环移位也容易理解。比如我们有个1字节的数: x = 10111110。现在需要对其循环右移4位。也就是最后结果为x = 11101011。其实思路就是分离数据,我们需要提取出前四位1011,后四位1110。
其实需要两个数的或 *** 作,也就是00001011,11100000,我们只要得到这两个数然后让他们就行或 *** 作:00001011|11100000 =11101011。把10111110 右移4位变为00001011(x>>4),把10111110左移4位变为11100000(x<<4),注意移位后的“空格”是用0填充的。最后执行或 *** 作。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)