|
4 비트 연산을 하는 (구)KS57 (현)S3C7XXX 계열의 4Bit MCU 의 경우 한번에 연산할 수 있는 데이터 양이 4 Bit 이기 때문에 주소가 가르키는 곳의 비트가 4 비트이다. ( 당연한거자나.. -_ㅡ;;; ) 이곳은 4 비트 관련 설명이므로 8 Bit MCU 내용은 KIN 하자. 4 Bit MCU 가 4 Bit 연산만 할 수 있다는 편견은 안드로메다에 버려야 한다. 우리가 쓰는 PC 의 경우 64 Bit 데이터도 처리 가능하다. 일단 레지스터 구조는 중요하다. 삼성 4 Bit MCU 는 00 H ~ 1F H 까지의 레지스터를 가지고 있다. 구지 갯수로 따지면 32 개의 레지스터다. 하지만 한번에 건들일 수는 없다. 4 Bit 로 표현가능한 수는 0 - 7, 8 개 뿐이기 때문에 8 개로 쪼개 Bank 라는 단위로 표현하고, 레지스터 뱅크이기 때문에 정확한 명칭은 Register Bank 이다. 32 나누기 7 은 4 이므로 4 개의 Register Bank로 나뉘어 있다. 보기 좋게 트리 형태로 보도록 하자. 그림판으로 그리기 귀찮으니 걍 텍스트로 그리겠다. Register Bank 0 - 0x00 A여기서 의문이 2 가지 생긴다. 첫째로 이름이 같다. 둘째로 4 Bit 라 한 주소지에 8 명밖에 못산다. 더 큰수를 표현하고 싶어지는데 난해해진다. 첫번째 의문에 대한 답. 뱅크를 선택하는 명령을 사용하면 된다. 일단 ERB(Enable Register Bit) 플래그와 SRB 레지스터를 조작하며 사용할 Register Bank 를 선택한다. ERB SRB3 SRB2 SRB1 SRB0 Register Bank역시나 표 그리기가 귀찮았다. SRB 는 0 과 1 만 사용된다. 2, 3 의 경우 무조건 0 이다. ERB 의 경우 0일 경우 무조건 Register Bank0 이다. ERB 의 경우 0과 1 둘 중 하나로 비트 제어 명령을 사용하면 바꿀 수 있다. SRB 의 경우는 조금 다르지만 심플하다. > SRB 3 이렇게만 하면 변경된다. ( 좆쿠나!!!! ) 이번엔 8 Bit (1 Byte) 쓰기!! 8 Bit MCU 에서는 쉽겠지만.... 4 Bit MCU 에서는 저장공간 하나가 4 Bit 이고, 당연한 이야기지만 4 Bit MCU 는 한번에 4 Bit 의 데이터를 처리할 수 있다. 하.지.만. 4 Bit... 인간적으로 너무 적은 수다. 8 Bit 만 되어도 256 개를 표현할 수 있어서 그나마 쓸만한데, 4 Bit 는 8 개 밖에 표현할 수 없다. 여기서 변칙이 있으니 그건 Work Register 2 개를 조합하여 4 + 4 = 8 Bit 연산을 하는 방법이다. YZ, WX, WL, HL, EA 이렇게 조합하면 8 Bit 연산이 가능하다. 단 저 조합 이외의 조합을 할 경우 연산 불가!!!! |
|


