语法:
and{条件} Rd, Rs, 寄存器移位操作或立即数
备注: {条件} 可选项 Rn 目的寄存器 Rs 源寄存器
运算原理:
如果满足条件(例如:条件助记符eq 表示z=1),则把 寄存器移位操作之后的数值 与 Rn 按位进行逻辑与,并把结果保存到 Rd 中;
示例:
mov r0, #0x01
mov r1, #0x10
;//我先把r2寄存器的值清零
mov r2, #0x00
;//因为此时 and 指令后面紧跟了条件助记符eq,所以需要是否执行and指令,需要先考虑CPSR的Z
;//如果此时 CPSR 的 Z=0, 那么此时的and操作不会被执行;
;//如此此时 CPSR 的 Z=1, 那么此时and运算之后, r2 的值为 0x10
andeq r2, r1, r0, lsl #4
解析:
- andeq r2, r1, r0, lsl #4 可以将该动作分解为: 先把r0中的值左移4位之后的值 和 r1 中的值做逻辑与运算,把最终的结果放到 r2 中。
- 验证效果: z=0时: z=1时: