语法:

  1. and{条件} Rd, Rs, 寄存器移位操作或立即数

备注: {条件} 可选项 Rn 目的寄存器 Rs 源寄存器

运算原理:

如果满足条件(例如:条件助记符eq 表示z=1),则把 寄存器移位操作之后的数值 与 Rn 按位进行逻辑与,并把结果保存到 Rd 中;

示例:

  1. mov r0, #0x01
  2. mov r1, #0x10
  3. ;//我先把r2寄存器的值清零
  4. mov r2, #0x00
  5. ;//因为此时 and 指令后面紧跟了条件助记符eq,所以需要是否执行and指令,需要先考虑CPSR的Z
  6. ;//如果此时 CPSR 的 Z=0, 那么此时的and操作不会被执行;
  7. ;//如此此时 CPSR 的 Z=1, 那么此时and运算之后, r2 的值为 0x10
  8. andeq r2, r1, r0, lsl #4

解析:

  • andeq r2, r1, r0, lsl #4 可以将该动作分解为: 先把r0中的值左移4位之后的值 和 r1 中的值做逻辑与运算,把最终的结果放到 r2 中。
  • 验证效果: z=0时: 1.png z=1时: 2.png