본문 바로가기
Computer Science

[Programming] 어셈블리 명령어(Assembly Instructions): SHL, SHR, SAL, SAR, ROL, ROR, RCL, RCR

by Henry Cho 2021. 7. 3.
728x90

어셈블리 명령어(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

댓글