移位依宏氽墓指令左移一位表示:左移n位就是乘以2的n次方,右移n位就是除以2的n次方。
程序有问题,CLR C 这句应该是CLR A 。因为移位之后A的最高位会丢失,但如果最高位为1,移出时会产生进位,这时进位标志CY会置1。
这样,相当于将A的最高位移入CY中了,因此CY即表示乘法结果的高位。RLC A 将CY移入A的低位,然后MOV 41H,A 将A送入41H保存,即保存了乘法结果的高位。
循环移位指令:
循环左移ROL(Rotate Left)和循环右移ROR(Rotate Right)。
格式:ROL(或ROR) OPR,CNT循环左移/右移指令只是移位方向不同,它们移出的位不仅要进入CF,而且还要填补空出的位。可以理解为蛇咬尾巴型循环。
带进位的循环左移RCL(Rotate Left Through Carry)和带进位的循环右移RCR(Rotate Right)。
格式:RCL(或RCR) OPR, CNT带进位的循环左移/右移指令只有移位的方向不同,它们都用原CF的值填补空出的位,移出的位再进入CF。