我想知道是否有可能做到以下几点
例如,我有一个号码00001110.我正在向左移动它。 - > 00011100 ....
但问题是,是否可以从进位标志开始设置值不是从第七位开始,而是从第六位开始。有一个命令--ROL它将第七位移入C标志,然后将该值存储在零位中
但是我需要这样做,但是不要对第七位做任何事情,并将第六位存储在C标志中,并且还将它存储在零位中。我的意思是当值为01110000时,下一个值应为01100001
是否可以这样做。我将不胜感激任何帮助。
答案 0 :(得分:0)
Instruction Carry Reg value
----------- ----- ---------
PUSH x 01110000
ROL 0 1110000x
ROL 1 110000x0 b6 now in carry
POP 1 01110000
ROL 0 11100001 b6 now to b0
AND $7Fh x 01100001
上面的答案并没有保留b7它清除它。这保留了b7。
MOV r1,r0 ;copy r0
ROL r0
ROL r0 ;b6 in Carry
MOV r0,r1 ;restore r0
ROL r0 ;shift in original b6 to b0
ROL r0 ;replace b7 in r0 with b7 in r1
ROL r1
ROR r0