Direct 모드와 Indirect 모드
LOAD 명령어에서 source 의 크기가 8비트이므로 현재는 0~255(십진수) 0~FF(십육진수이다) 까지의 주소범위만 표현가능하다. 만약 100(256)번지의 주소에 있는 데이터를 가져와야 한다면 할 수 있는 방법이 없다.
Indirect모드를 사용해서 해결할 수 있다.
Indirect 모드의 이해
LOAD R1, [0x10] 을 실행한다면 아래와 같다
Indirect 모드에서는 0x10번지에서 값을 읽어오는게 아니라 0x10번지에 저장된 값을 주소값으로 참조해서 값을 읽어오고 있다
명령어에서 피연산자 0x10을 [] 기호로 감싸고 있는데 Indirect 모드를 의미한다
그렇다면 Indirect 모드 명령어를 바이너리 코드로 어떻게 표현하면 좋을까?
아직 정해지지 않은 예약 공간을 사용하면 되겠다. 예약비트에서 01 이면 Indirect 모드 라고 정의 해보자 그럼 다음과 같이 바이너리로 만들 수 있다.
STORE 명령어에서도 Indirect 모드를 사용할 수 있다
STORE, R1, [0X10] 실행한다고 해보자. 다음의 그림처럼 0x10번지에서 0x30번지의 주소를 찾은뒤에 0x30번지에 R1에서 읽은 데이터 10을 저장하고 있다
좋은 글 잘 읽었습니다, 감사합니다.