3.2 명령어 (1) 명령어 (Instruction) 의구성 연산자 (Operation Code) 부자료 (Operand) 부 0405 명령어의연산자부분이나타낼수있는것오답 인스트럭션의순서 1) 연산자부 (Op-Code, Operation Code부 ) 1 실행할명령이들어있음 2 명령어의연산자부분이나타낼수있는것 9910 0203 명령어의형식 연산자 자료의종류 3 연산자부의비트수가 n Bit 2 n 개의명령어 ( 연산자 ) 수행가능 0203 0305 0405 0509 0603 0705 0709 9910 0003 0103 0203 0703 0705 4 연산자부에는주소부의유효주소가결정되는방법을지정하기위한모드비트를추가하기도함 (0 : 직접, 1 : 간접 ) 2) 자료 (Operand) 부 1 자료부 = 어드레스필드 (Address Field) = 주소부 2 실제데이터에대한정보를표시하는부분 3 어드레스필드 ( 주소부 ) 의크기 = 최대메모리용량 0308 0503 예 ) 명령어가오퍼레이션코드 (OP-Code) 6비트, 어드레스필드 16비트로되어있을때, 이명령어를쓰는컴퓨터의최대메모리용량은 64K Word (2 16 = 65536 = 64K) 연산자의기능오답 주소지정기능 증폭기능 추적기능 번지기능 주소계산기능 기억기능 (2) 연산자 (Op-Code, Operation Code) 의기능 0010 0106 0109 0203 0205 0303 0305 0405 0409 0503 0505 0509 0609 9906 0010 0106 0109 0305 0409 0605 0709 1) 함수연산기능 0205 0103 0503 1 중앙처리장치에서데이터를처리하는기능 2 산술 논리연산명령 (ADD, AND, CPA, CPC, CLC, ROR, ROL 등 ) 2) 자료전달기능 1 중앙처리장치와기억장치사이에서정보를교환하는기능 2 Load 0209 0503 0609 기억장치 ( 메모리 ) 의내용을중앙처리장치 ( 레지스터 ) 에전달하는명령 3 Store 9904 0403 0405 0509 0603 중앙처리장치 ( 레지스터 ) 의정보를기억장치 ( 메모리 ) 에기억시키는명령 4 Move 0503 특정레지스터의내용을다른레지스터로옮기는명령 5 Push, Pop 0103 스택에자료를저장, 인출하는명령 3) 제어기능 0005 0103 1 프로그램의수행흐름을제어하는데사용 2 무조건분기명령 : GOTO, JMP(Jump) 0106 0308 3 조건분기명령 : IF, SPA, SNA, SZA 4 부프로그램호출및복귀 : Call, Return 9904 0605 134
4) 입 출력기능 1 중앙처리장치와입출력장치, 또는기억장치와입출력장치사이에서자료를전달하는기능 2 INPUT, OUTPUT www.gisa79.com 단항연산자와이항연산자 9906 0403 0503 0505 0709 1) 단항연산자 (Unary Operator) 1 피연산자가 1개만필요한연산자 2 NOT, Complement, Shift, Rotate, MOVE 등 2) 이항연산자 (Binary Operator) 1 피연산자가 2개필요한연산자 2 사칙연산, AND, OR, XOR, XNOR 등 0005 (3) 명령어설계시고려할사항 9904 0007 1) 연산자의종류 2) 주소지정방식 3) 해당컴퓨터시스템단어 (word) 의크기 ( 비트수 ) (4) 명령어형식 0005 0705 1) Operand 부의개수에따라, 3 / 2 / 1 / 0주소명령어형식이있음 2) 3-주소명령어 1 Operand 부가 3개로구성 ( 연산의결과는 Operand 3에기록됨 ) 0109 OP-Code Operand 1 Operand 2 Operand 3 자료1의주소 자료2의주소 결과의주소 2 여러개의범용레지스터를가진컴퓨터에사용됨 3 장점 연산후에입력자료가변하지않고보존됨 0308 0609 전체명령어를읽어오는시간단축 프로그램의길이가짧아짐 0605 4 단점 명령어한개의길이가길어짐 하나의명령을수행하기위해서최소한 4번기억장소에접근해야하므로전체적인수행시간길어짐 3- 주소명령어의장점오답 1 개의명령어만을사용하여프로그램을작성해야함 주소지정을할수있는기억장치주소영역이증가함 임시저장장소가필요함 3) 2-주소명령어 1 Operand 부가 2개로구성 ( 연산의결과는 Operand 1에기록됨 ) OP-Code Operand 1 Operand 2 자료1의주소결과의주소 자료2의주소 2 여러개의범용레지스터를가진컴퓨터에사용됨 135
3 장점 3주소명령에비해명령어의길이가짧음 계산결과를시험할필요가있을때계산결과가기억장치에기억될뿐아니라중앙처리장치에도남아있어서중앙처리장치내에서직접시험이가능하므로시간이절약 0103 0205 4 단점 Operand 1에있던원래의자료가파괴됨 전체프로그램길이증가 4) 1-주소명령어 1 Operand 부가 1개로구성 ( 연산의결과는 Operand 1에기록됨 ) OP-Code Operand 1 자료1의주소 2 반드시누산기 (Accumulator) 가필요한주소지정방식 ( 하나의 operand 가누산기속에포함되고, 연산결과를항상누산기에저장 ) 9910 0403 0505 0703 0303 3 모든명령은누산기에기억되어있는자료를사용함 0705 4 1-주소명령의예 (C = A + B) 0405 0609 LOAD A ADD B STORE C 5) 0-주소명령어 0503 0609 1 Operand부가없이 OP-code부만으로구성 0503 ( 자료의주소를지정할필요가없음 ) OP-Code 2 모든연산은스택 (Stack) 에있는자료를이용하여수행 9904 0010 0303 0305 0505 0509 0603 0709 9906 0106 0205 0305 0405 스택에관한설명오답 Push 명령으로데이터를꺼냄 1-address 구조를가짐 FIFO 구조를가짐 0- 주소인스트럭션형식을사용하는컴퓨터의특징오답 연산후에입력자료가변하지않고보존됨 연산에필요한자료의주소를모두구체적으로지정해주어야함 연산을위해입력자료의주소만을지정해주면됨 스택 (Stack) 0403 0509 0705 자료의삽입 (Push) 삭제(Pop) 가한쪽에서가능한자료구조 가장나중에삽입된자료가가장먼저삭제되는방식 (LIFO, Last-In First-Out) 0403 0주소명령어형식에서뿐만아니라부프로그램 ( 서브루틴 ) 호출시복귀주소저장, 인터럽트발생시복귀주소저장, 재귀 (Recursive) 프로그램의순서제어, 역 polish형산술식의처리등에쓰임 9908 0003 0005 0007 재귀 (Recursion) 프로그램 0205 0403 0705 한루틴 (Routine) 이자기를다시불러실행하는프로그램 3 자료를얻기위하여스택에접근할때는 top이지정하는곳에접근 4 binary 연산인경우 2개자료가필요하고, 스택상단부 2자리에지정함 5 주소의사용없이스택에연산자와피연산자를넣었다꺼내어연산한후결과를 다시스택에넣으면서연산하기때문에원래의자료가남지않음 0106 0010 0209 136
6 수식을계산할때수식을미리처리되는순서인역 polish( 또는 postfix) 형 www.gisa79.com 식으로바꾸어야함 0308 0409 7 Instruction cycle time이가장짧은명령어형식 0503 8 스택머신 (Stack Machine) 이라고도함 (0-주소명령형을갖는컴퓨터구조원리 : Stack architecture) 9908 0003 0103 0203 0205 0308 0403 0503 0605 이터레이션 (Iteration) 0007 해당루틴 (Routine) 이정확한결과를산출할때까지해당루틴에서발생한결과를가지고처음에사용한자료를다시수정하여계산작업을반복적으로수행하는것 프로그램디버깅 (Debugging) 1 프로그램의오류를발견하고그원인을밝히는작업 2 디버깅에필요한것들 0103 0209 트레이서 (tracer) : 프로그램의실행과정을출력하는프로그램. 기계어명령이하나씩수행될때마다프로그램카운터, 스택, 변수, 레지스터의내용을출력함 덤프 (dump) : 주기억장치의내용을그대로화면이나프린터, 디스크등에출력하는것으로정적 (static) 덤프와동적 (Dynamic) 덤프가있음 이터레이션 (iteration) 방법에서반복시입력데이터 (data) 를얻는방법오답 한루틴 (routine) 이외부로부터데이터 (data) 를얻음 한루틴이다른루틴으로부터데이터를얻음 데이터가필요하지않음 프로그램디버깅에필요한것오답 스왑 (Swap) 또는스와핑 (Swapping) 부프로그램 ( 서브루틴, Subroutine) 과매크로 (Macro) 1 부프로그램 : 반복적으로사용되는코드를별도의프로그램으로작성하여필요할때호출하여사용할수있도록제작한프로그램 2 매크로 반복적으로사용되는코드를프로그램내에삽입하여해당프로그램의어디서든호출하여사용할수있게만든프로그램코드의모임 프로그래머가어셈블리 (assembly) 언어로프로그램을작성할때반복되는일련의같은연산을효과적으로프로그램하기위해서필요한것 9910 0405 0409 0303 매크로 (Macro) 의인수 ( 因數 ) 사용에해당되는것 : 인수의위치, 인수를지정, 인수의수를변동 0709 3 부프로그램과매크로의공통점 : 여러번중복되는부분을별도로작성하여사용 0203 0403 0705 데이터처리명령어종류 0703 1 산술명령어 : ADD, SUB, MUL, DIV, 산술 Shift 등 2 논리명령어 : NOT, AND, OR, XOR, 논리적 Shift, ROTATE, COMPLEMENT, CLEAR 등 종류별연산자의우선순위 0705 산술연산자 관계연산자 논리연산자 137
기 출 문 제 9904 0010 0303 0305 0505 0509 0603 9. 0- 주소인스트럭션과관계있는것은? 0203 0305 0405 0509 0603 0705 1. 명령어의길이가 16bit이다. 이중 OP code가 5bit, operand가 8bit를차지한다면이명령어가가질수있는연산자종류는최대몇개인가? 가. 8개나. 16개다. 32개라. 256개 0308 0503 2. 명령어가오퍼레이션코드 (OP code) 6비트, 어드레스필드 16비트로되어있다. 이명령어를쓰는컴퓨터의최대메모리용량은? 가. 16K word 나. 32K word 다. 64K word 라. 1M word 0209 0603 3. 컴퓨터의주기억장치용량이 8192 비트이고, 워드길이가 16 비트일때 PC(Program Counter), AR(Address Register) 와 DR(Data Register) 의크기는? 가. PC=8, AR=9, DR=16 나. PC=9, AR=9, DR=16 다. PC=16, AR=16, DR=16 라. PC=8, AR=16, DR=16 0010 0106 0109 0203 0205 0303 0305 0405 0409 0503 0505 0509 0609 4. 명령어에서실행할동작부분을나타내는연산자 (op code) 의기능과관련없는것은? 가. 함수연산기능나. 입ㆍ출력기능다. 제어기능라. 주소지정기능 9904 0007 5. 인스트럭션의설계과정과가장거리가먼것은? 가. 연산자의종류나. 주소지정방식다. 기억장치의대역폭 (bandwidth) 라. 해당컴퓨터시스템단어 (word) 의크기 ( 비트수 ) 0605 6. 3- 주소명령어의장점에해당하는것은? 가. 프로그램길이가짧아진다. 나. 1 개의명령어만을사용하여프로그램을작성해야한다. 다. 주소지정을할수있는기억장치주소영역이증가한다. 라. 임시저장장소가필요하다. 9910 0403 0505 0703 7. 연산결과를항상누산기 (Accumulator) 에저장하는명령어형식은? 가. 0-주소명령어나. 1-주소명령어다. 2-주소명령어라. 3-주소명령어 0405 0609 8. 다음과같은보기는어느유형의주소명령방식인가? < 보기 > LOAD A ADD B STORE C 가. zero-address 다. two-address 나. one-address 라. three-address 가. Scratch-pad register 나. Accumulator 다. Stack 라. Instruction buffer 0205 0403 0705 10. 리커션 (recursion) 프로그램에해당하는것은? 가. 한루틴 (routine) 이반복될때나. 한루틴 (routine) 이자기를다시부를때다. 다른루틴 (routine) 이다른루틴을부를때라. 한루틴 (routine) 에서다른루틴으로갈때 9908 0003 0103 0203 0205 0308 0403 0503 0605 11. 0- 번지명령형 (zero-address instruction format) 을갖는컴퓨터구조원리는? 가. An accumulator extension register 나. Virtual memory architecture 다. Stack architecture 라. Micro-programming 0007 12. 이터레이션 (iteration) 방법에서반복시입력데이터 (data) 를얻는방법은? 가. 한루틴 (routine) 이외부로부터데이터 (data) 를얻는다. 나. 한루틴이그루틴에서데이터를얻는다. 다. 한루틴이다른루틴으로부터데이터를얻는다. 라. 데이터가필요하지않다. 0103 0209 13. 프로그램디버깅 (debugging) 에필요하지않는것은? 가. 트레이서 (tracer) 나. 스태틱덤프 (static dump) 다. 다이나믹덤프 (dynamic dump) 라. 스왑 (swap) 또는스왑핑 (swapping) 9910 0303 0405 0409 14. 프로그래머가어셈블리언어 (Assembly language) 로프로그램을작성할때반복되는일련의같은연산을효과적으로하기위해필요한것은? 가. 매크로 (MACRO) 나. 함수 (function) 다. reserved instruction set 라. 마이크로프로그래밍 (micro-programming) 0203 0403 0705 15. 다음설명중부프로그램과매크로 (Macro) 의공통점은? 가. 삽입하여사용한다. 나. 분기로반복을한다. 다. 다른언어에서도사용한다. 라. 여러번중복되는부분을별도로작성하여사용한다. 138