[06-d] CPU-첫걸음; LOAD 명령어 - 메모리의 내용을 CPU로 가져오기
이제 “LOAD 900”을 실행해 보자.
LOAD는 메모리의 내용을 AC(Accumulator,어큐뮬레이터,누산기)로 가져오라는 명령이다.
즉, “LOAD 900”이라는 명령어는
「메모리 900번지의 내용을 AC에 가져오라」는 뜻이다.
연산장치의 AC는
⑴ 연산회로의 계산을 위한 데이터의 저장,
⑵ 연산회로의 계산결과를 임시 저장하기 위해 사용된다.
900번지에 7이 들어 있었다면
LOAD명령의 수행 결과로 AC에 7이 저장될 것이다.
LOAD 명령의 주소 부분에 지정된 주소에서 데이터를 읽으려면,
①그 주소(=900)를 MAR에 보낸다.
②그 다음에 MAR에 들어 온 주소를 메모리에 보내고,
③메모리에서 그 내용(=7)을 읽어 MBR에 넣는다.
④마지막으로 MBR에 들어 온 내용을 AC에 넣는다.
이 과정을 순서대로 나타내면,
IR의 주소 → MAR → 메모리 → MBR → AC 이다.
이 과정을 LOAD라 한다.
즉, LOAD 명령은 위의 네 가지 동작이 필요한데
그 각각은 레지스터 단위의 동작을 나타낸다.
LOAD 명령은 네 개의 마이크로 연산으로 이루어짐을 보여준다.
<'LOAD 900'의 실행>
LOAD명령을 마이크로 연산으로 표현하면 다음과 같다.
① IR의 주소부분을 MAR에 보낸다; IR(addr )은 IR의 주소부분(address)을 말한다.
MAR ← IR(addr)
② MAR에 저장된 주소를 메모리에서 찾아서 MBR에 넣는다;
MBR ← M[MAR]
③ MBR의 내용을 AC에 넣는다;
AC ← MBR
<LOAD 명령>
시간 | 마이크로 연산 | 설명 |
| MAR ← IR(addr) | IR의 주소부분을 MAR에 보낸다 |
| MBR ← M[MAR] | MAR에 저장된 주소를 메모리에서 찾아서 MBR에 넣는다 |
| AC ← MBR | MBR의 내용을 AC에 넣는다 |
이제 다음 명령을 가져오는 인출 사이클이다. (다음 단원으로)
【연습문제】
(1) 메모리 700번지에 34가 들어있고, 'LOAD 700'을 실행하면, 최종 결과는 무엇인가?
(2) 'LOAD 800'을 실행할 때, IR의 주소부분의 내용은 무엇인가?
(3) IR의 주소부분을 MAR에 넣는 이유는 무엇인가?
(4) LOAD의 경우 메모리의 내용을 AC에 넣는 이유는 무엇인가?