티스토리 뷰

6502의 ROR이나 ROL 등은 사실 완전 자동으로 회전 시프트를 해주지 않는다. 일단 아래 예제를 보자.


LDA #$FF

ROR A


결과 : 누산기(A 레지스터)에 $7F(0111 1111) 로드


$FF(1111 1111)를 ROR연산을 하면 $FF가 아니라 $7F(0111 1111)가 나오는 것을 볼 수 있다. 그럼 다음 예제를 보자.


LDA #$FF

SEC

ROR A


결과 : 누산기(A 레지트서)에 $FF(1111 1111)로드


$FF가 로드되는 것을 볼 수 있다. 즉 ROR이나 ROL 명령어는 (시프트 -> C 플래그 셋 -> C플래그를 마지막 비트에 넣음) 의 순서가 아닌 (C플래그를 마지막 비트에 넣음 -> 시프트 -> C 플래그 셋)의 순서라는 것을 알 수 있다. 따라서 ROL이나 ROR을 제대로 사용하기 위해서는 먼저 C 플래그를 세팅해야 한다는 것이다. 


'프로그래밍 > 6502' 카테고리의 다른 글

8비트 CPU에서 2의 보수 구하기  (0) 2019.02.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함