我有一项任务是从
更改位位置START bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 |位0
FINAL bit3'| bit2'| bit7 | bit6 | bit1 | bit0 | bit5'|位4'
使用按位和移位/滚动指令。
我不知道如何移动它们而不是移动和滚动。我应该只使用一个或多个寄存器吗?
答案 0 :(得分:3)
使用shift和rol,您应该可以使用两个寄存器,在进度中浪费原始文件。
向右移动将最左边的位移入进位。 向右移动B通过复制该位到寄存器B并移动LSB进行传输。
按照
的顺序1 - ROR A,A,1 // A = _7654321, --> carry = '0'
2 - ROR B,B,1 // B = 0_______, --> carry = 'x' / don't care
3 - ROR A,A,1 // A = x_765432, --> carry = '1'
4 - ROR B,B,1 // B = 10______, --> carry = 'x' / don't care
// this has copied two bits from A to B while shifting both
5 - ROR B,B,1 // B = x10_____,
6 - ROR B,B,1 // B = xx10____,
repeat steps 1-4 again for B to contain bits '3 2 _ _ 1 0 _ _'
(这是解决方案的一半)