📜  8085 中的 ROTATE 指令

📅  最后修改于: 2021-09-28 09:45:43             🧑  作者: Mango

ROTATE是 8085 微处理器的逻辑运算。它是一个 1 字节的指令。该指令在操作码后不需要任何操作数。它操作累加器的内容,结果也存储在累加器中。 Rotate 指令用于旋转累加器的位。

ROTATE指令的类型:
ROTATE 指令有 4 类:左循环累加器 (RLC)、左循环累加器 (RAL)、循环右累加器 (RRC)、右循环累加器 (RAR)。在这四个指令中;两个用于向左旋转,两个用于向右旋转。所有这些都在以下部分中简要说明:

  1. 向左旋转累加器 (RLC) –
    在这条指令中,每一位都被移到相邻的左边位置。位 D7 变为 D0。根据位 D7 修改进位标志 CY。例如:-
    A = D7 D6 D5 D4 D3 D2 D2 D0
    
    //before the instruction
    A = 10101010; CY=0  
    
    //after 1st RLC           
    A = 01010101; CY=1      
    
    //after 2nd RLC 
    A = 10101010; CY=0 
  2. 通过进位 (RAL) 向左旋转累加器 –
    在这条指令中,每一位都被移到相邻的左边位置。位 D7 成为进位位,进位位移入 D0。根据位 D7 修改进位标志 CY。例如:
    A = D7 D6 D5 D4 D3 D2 D2 D0
    
    //before the instruction
    A = 10101010; CY=0 
    
    //after 1st RAL
    A = 01010100; CY=1
    
    //after 2nd RAL
    A = 10101001; CY=0 
  3. 向右旋转累加器 (RRC) –
    在这条指令中,每一位都被移到相邻的右边位置。位 D7 变为 D0。根据位 D0 修改进位标志 CY。例如:

    A = D7 D6 D5 D4 D3 D2 D2 D0
    
    //before the instruction
    A = 10000001; CY=0     
    
    //after 1st RRC        
    A = 11000000; CY=1    
    
    //after 2nd RRC         
    A = 01100000; CY=0 
  4. 直接通过进位旋转累加器 (RAR) –
    在这条指令中,每一位都被移到相邻的右边位置。位 D0 成为进位位,进位位移入 D7。根据位 D0 修改进位标志 CY。例如:
    A = D7 D6 D5 D4 D3 D2 D2 D0
    
    //before the instruction
    A = 10000001; CY=0  
    
    //after 1st RAR           
    A = 01000000; CY=1   
    
    //after 2nd RAR          
    A = 10100000; CY=0 

ROTATE 指令的应用:
ROTATE 指令主要用于算术乘法和除法运算以及串行数据传输。例如:

If A is 0000 1000 = 08H 

1. By rotating 08H right : A = 0000 0100 = 04H
    This is equivalent to dividing by 2.

2. By rotating 08H left : A = 0001 0000 = 10H
    This is equivalent to multiplying by 2. 

但是,当逻辑 1 从 D7 向左旋转到 D0 或反之时,这些程序无效。例如,如果 80H 向左旋转,它将变为 01H。