Computer Science
[Programming] 어셈블리 명령어(Assembly Instructions): SHL, SHR, SAL, SAR, ROL, ROR, RCL, RCR
Henry Cho
2021. 7. 3. 22:53
어셈블리 명령어(Assembly Instructions): SHL, SHR, SAL, SAR, ROL, ROR, RCL, RCR
이번 포스트에서는 어셈블리 명령어 중에서도
bit의 이동(shift)을 통한 데이터 값의 변화를 주는 Instructions에 대해서 살펴보겠다.
표로 간략하게 각 Instructions의 기능을 알아보면 아래와 같다.
SHL, Shift left | 왼쪽으로 밀어(shift) 높은 bit를 내보내고 Carry Flag로 복사 낮은 bit쪽에 0을 더하여 채운다. |
SHR, Shift right | 오른쪽으로 밀어 낮은 bit를 내보내고 Carry Flag로 복사 높은 bit 쪽에 0을 더하여 채운다. |
SAL, Shift arithmetic left | SHL과 결과적으로 동일하다. 왼쪽으로 밀어(shift) 높은 bit를 내보내고 Carry Flag로 복사 낮은 bit쪽에 0을 더하여 채운다. |
SAR, Shift arithmetic right | SHR과 결과적으로 동일하지 않는다. 오른쪽으로 밀어 낮은 bit를 내보내고 Carry Flag로 복사 높은 bit 쪽에 0을 더하여 채운다. But keep sign(1) 해야한다. |
ROL, Rotate left | 모든 bits이 왼쪽으로 밀려(shift)난다. 왼쪽에 위치한 가장 높은 bit가 Carry flag와 가장 낮은 오른쪽 마지막 bit에 복사된다. |
ROR, Rotate right | 모든 bits이 오른쪽으로 밀려(shift)난다. 오른쪽에 위치한 가장 낮은 bit가 Carry flag와 가장 높은 왼쪽 마지막 bit에 복사된다. |
RCL, Rotate carry left | 모든 bits를 왼쪽으로 이동한다. Carry flag의 값을 복사하여 마지막 bit에 넣어준다. Most Significant Bit(MSB)를 Carry flag로 복사한다. |
RCR, Rotate carry right | 모든 bits를 오른쪽으로 이동한다. Carry flag 값을 MSB로 복사한다. Least Significant Bit(LSB)를 복사하여 Carry flag에 넣어준다. |
728x90