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"。您必须手动完成。
- 将寄存器复制到另一个寄存器。
- 清除原寄存器的低3位(AND with %11111000)
- 清除副本中的其他位(与 %00000111 一起)。
- 旋转版权。
- 复制副本。
- 将第二个副本右移5位。
- OR 第二个副本与第一个。
- 清除第一个副本的高位(AND 为 %00000111)。
- OR 第一个副本与原始寄存器。
所以我知道 ROL 和 ROR 如何处理 D0 = %00000100 之类的东西,如果我 ROR #1,D0 那么 D0 现在将是 00000010。
我想做的是只轮换该数字的 select 几位数字,例如,如果我 ROR %00000001 一个点,我希望它是 00000100 而不是 10000000,所以它只循环通过该数字的最后 3 位。有没有办法做这样的事情,我设置旋转的界限,这样它就不会一直回到第一位?
有"no silver bullet"。您必须手动完成。
- 将寄存器复制到另一个寄存器。
- 清除原寄存器的低3位(AND with %11111000)
- 清除副本中的其他位(与 %00000111 一起)。
- 旋转版权。
- 复制副本。
- 将第二个副本右移5位。
- OR 第二个副本与第一个。
- 清除第一个副本的高位(AND 为 %00000111)。
- OR 第一个副本与原始寄存器。