文章目录
前言
I 、移位操作
移位操作在ARM指令集中不作为单独的命令使用,它在指令格式中是一个字段。
1.1、LSL 逻辑左移(Logical Shift Left)与 ASL 算术左移 (Arithmetic Shift Left)
逻辑左移与算术左移的操作是一样的,都是将操作数向左移位,低位补零,移除的高位进行丢弃。
MOV R0, #5
MOV R1, R0, LSL #2
上述命令,就是将5存储到R0寄存器上(R0 = 5), 然后将R0逻辑左移2位后传送到R1寄存器中。
十进制5的二进制数值是0101,进行逻辑左移2位就是0001_0100, 也就是十进制中的20。其实每逻辑左移1位就相当于原数值进行乘2操作,5逻辑左移2位其实就是5 x 2^2 = 20。
1.2、LSR ---- 逻辑右移(Logical Shift Right)
逻辑右移与逻辑左移是相对的,逻辑右移其实就是往右移位,左边补零