💡 프로세서의 가장 중요한 점
결정
을 내릴 수 있다
데이터를 비교를 수행할 수 있고 그 데이터 결과를 토대로 무슨 일을 할 지 결정할 수 있으므로 스스로 전체 시스템을 운영하는 것이 가능하다.
즉 프로세서는 계산기와 달리 사람의 개입없이도 작동이 가능하다.
이 부분이 프로세서와 계산기의 차이점이다.
- GET : 키보드에서 수를 입력 받은 후 누산기에 넣음
- PRINT : 누산기의 내용을 출력
- STORE M : 누산기 내용의 복사본을 메모리 위치 M에 저장
- LOAD M : 메모리 위치 M의 내용을 누산기에 적재
- ADD M : 메모리 위치 M의 내용을 누산기 내용에 더함
- STOP : 실행 중지
인출(Fetch)
: 메모리에서 다음 명령어 가져옴해석(Decode)
: 명령어가 무슨 일을 하는 지 알아냄실행(Execute)
: 명령어를 실행💻 두 수를 더하고, 그 합계를 출력하는 모형 컴퓨터 프로그램
GET : 첫 번째 수를 입력받아 누산기에 넣음
STORE FirstNum : FirstNum이라는 메모리 위치에 첫 번쨰 수를 저장
GET : 두 번째 수를 입력받아 누산기에 넣음
ADD FirstNum : 첫 번째 수를 누산기에 있는 값에 더함
PRINT : 결과 합계 값을 출력
STOP : 프로그램 실행을 중지
FirstNum: > 첫 번째 입력 수를 담을 메모리 위치_
💡 프로그램의 명령어가 메모리 위치를 필요할 때 그 위치를 나타내는 방법
1. 데이터가 일곱 번째 메모리 위치에 오도록 하는 것
- 프로그램이 수정되면 데이터의 위치가 바뀔 수 있기 때문에 고정된 번호를 하는 것 바람직하지 않음
2. 데이터 위치에 이름을 부여하는 것
GOTO
명령어는 GOTO가 지정하는 위치로 이동하여 명령어를 실행하도록 프로세서에 지시GOTO
명령어 사용 시 프로세서가 프로그램의 앞부분으로 돌아가 명령어 처리를 반복할도록 할 수 있음명령어를 재사용할 순 있지만, 반복되는 일련의 명령어, 즉 루프(loop)가 생겨버린다. 이 무한정 루프를 멈추기 위해 조건부 분기(conditional branch)
또는 조건부 점프(conditional jump)
라는 명령어를 사용한다.
💡 조건부 분기(conditional branch)또는 조건부 점프(conditional jump)
명령어를 무작정 계속 실행하도록 하지 않고 조건을 검사하여 다음에 수행할 작업을 결정하는 명령어
모형 컴퓨터에는 IFZERO
라는 명령어가 있다.
IFZERO
: 이 명령어는 값이 0인지 검사하여 만일 그렇다면 특정한 명령어로 건너뛰는 명령어💻
IFZERO
명령어를 사용하여 0값이 입력될 때까지 입력 값을 받고 출력해주는 프로그램
TOP >
- GET : 수를 입력받아 누산기에 넣음
- IFZERO Bot : 누산기 값이 0이면 Bot 레이블이 붙은 명령어로 이동
- PRINT : 누산기 값이 0이 아니므로 그 값을 출력
- GOTO Top : TOP으로 돌아가서 다른 수를 입력 받음Bot >
- STOP : 프로그램 실행 중지