easy68k 部分旋转? (ROL/ROR)

easy68k partial rotation? (ROL/ROR)

所以我知道 ROL 和 ROR 如何处理 D0 = %00000100 之类的东西,如果我 ROR #1,D0 那么 D0 现在将是 00000010。

我想做的是只轮换该数字的 select 几位数字,例如,如果我 ROR %00000001 一个点,我希望它是 00000100 而不是 10000000,所以它只循环通过该数字的最后 3 位。有没有办法做这样的事情,我设置旋转的界限,这样它就不会一直回到第一位?

有"no silver bullet"。您必须手动完成。

  1. 将寄存器复制到另一个寄存器。
  2. 清除原寄存器的低3位(AND with %11111000)
  3. 清除副本中的其他位(与 %00000111 一起)。
  4. 旋转版权。
  5. 复制副本。
  6. 将第二个副本右移5位。
  7. OR 第二个副本与第一个。
  8. 清除第一个副本的高位(AND 为 %00000111)。
  9. OR 第一个副本与原始寄存器。