Page 70 - 컴퓨터구조(프로그래밍 관점에서 바라보는)도서 미리보기
P. 70
282 PART 2? 하드웨어 관점에서의 컴퓨터 구조
위의 프로그램에서 첫번째 인스트럭션을 설명해보자. 즉, 어드레싱 모드가
001로써 직접주소지정(direct addressing mode)이니까 피연산자 지시자
(operand specifier) 값인 0x0007 번지의 ‘내용’ 1 바이트를 출력하라는 명
령어인 셈이다.
opcode direct Operand specifier
0101 0 addressing mode 0000 0000 0000 0111
001
이 프로그램에서 만약 stop 인스트럭션을 사용하지 않는다면 어떤 일이 발생할까?
참 6장에서 배운 내용을 떠올려보자. CPU 내의 제어 장치는 하나의 인스트럭션을 수행한 후
고 에 PC(프로그램 카운터 레지스터)가 가르키는 다음 인스트럭션을 가져온다. 만약 stop 인
스트럭션이 없다면, 다음의 48이라는 값(실제로 이 값은 ‘H’의 ASCII 값이다) 을 인스트럭
션이라고 생각하고, 이를 실행하려고 할것이다.
실제로 stop 인스트럭션인 00을 삭제하고, 다시 로딩한 후 실행하면 다음과 같은 오류창
이 뜬다.
이와 같이 stop 인스트럭션은 프로그램의 종료를 알림과 동시에 프로그램의 코드 부분과
데이터 부분의 경계를 표시하는 역할을 한다.
앞의 ‘Hi’를 출력하는 프로그램을 조금 변경해서 “Hi!”를 출력해보자. 즉,
마지막에 ‘느낌표’를 출력하는 코드를 추가하자. ‘!’는 ASCII 코드가 16진
수로 21(16)이다. 그래서 아래와 같이 ‘!’를 출력하는 문장을 추가하고, ‘!’의
ASCII 코드값 16진수 21(16)을 추가하였다.
그러나 이 프로그램은 아무것도 출력하지 않는다. 그 이유가 무엇일까?