-
레지스터

CPU 사진 - 레지스터는 CPU 내부의 작은 임시 저장장치
- 프로그램속 명령어 & 데이터는 실행 전후로 레지스터에 저장
레지스터 종류
- 프로그램 카운터 : 메모리에서 가져올 명령어의 주소(메모리에서 읽어들일 명령어의 주소)
- 명령어 레지스터 : 해석할 명령어(방금 읽어들인 명령어)
- 메모리 주소 레지스터 : 메모리 주소를 저장
- 메모리 버퍼 레지스터 : 메모리와 주고 받을 값(데이터와 명령어)
- 플래그 레지스터 : 연산결과 또는 CPU 상태에 대한 부가적인 정보를 가지고 있는 레지스터
- 범용 레지스터 : 다양하고 일반적인 상황에서 다양하게 사용
- 스택 포인터, 베이스 포인터 -> 주소지정에 사용

현재 메모리 
- cpu는 1000번지부터 명령어를 실행한다고 가정
- 프로그램 카운터에는 1000번지 즉 메모리에서 읽어들일 명령어의 주소를 담는다.

- 프로그램 카운터에 저장되어있는 다음으로 읽어들일 명령어 주소 값은 메모리 주소 레지스터에 복사가 됨

- 그 다음 메모리한테 메모리 읽기 신호와 함께 몇번지 주소를 읽고 싶은지 메모리 주소가 쏜다

- 메모리는 1000번지에 저장된 값을 메모리 버퍼 레지스터에 저장을 시킨다.
- 이 때 프로그램 카운터는 1증가한다.

- 이제 가져온 1101을 해석하기 위해 명령어 레지스터에 복사가 된다.
순차적인 흐름 끊길 때...
- 레지스터가 꼭 순차적으로 실행이 되지 않을수도 있다.
- JUMP, CALL.. 등 특정 메모리 주소로 실행 흘름을 이동하는 명령어를 실행할 시 순차적으로 실행이 되지 않을수도 있다.
- 인터럽트 발생시...
- 무조건적으로 순차적으로 메모리가 실행된다고 생각하지 말자!!
스택포인터

- 스택과 스택 포인터를 이용하는 주소 지정 방식
- 스택 포인터 : 스택의 꼭대기를 가르키는 포인터

- 스택은 메모리 안에 스택처럼 사용할 수 있는 특정 영역이 있다고 한다.
변위주소 지정 방식
- 오퍼랜드 필드의 값과 특정 레지스터 값을 더하여 유효주소 얻기

- 변위주소 지정방식에는 2가지 방법이 있다
상대 주소 지정방식
- 오퍼랜드 필드 값과 프로그램 카운터를 더하여 유효 주소 얻기

베이스 주소 지정방식
- 오퍼랜드 필드 값과 베이스 레지스터의 값을 더하여 유효주소 얻기
