목차
어셈블리어
-기계어를 사람이 이해할 수 있게 언어에 가까운 문자로 기호화한 언어다.
-CPU마다 사용되는 어셈블리어 형식이 다르다.
어셈블리 명령어
-ADD : 덧셈
-SUB : 뺄셈
-MUL : 곱셈
-DIV : 나눗셈
-MOV : 데이터 이동
-LOAD : 기억장치로부터 데이터를 읽어와 적재
-STOR : 기억장치로 데이터 저장
어셈블리 명령어 형식 (8086프로세서)
레이블부 : 연산부 오퍼랜드 부 ; 주석문 부
ex) 100 LOAD 250
1) 레이블 부
-레이블을 나타내는데 사용
-이름 중간에 공백이 있으면 안됨
2) 연산부
-기호화된 명령어 또는 지시어로 구성됨
3) 오퍼랜드 부
-레지스터 이름, 정수, 라벨, 연산자, 주소 등으로 구성됨
-연산자에 의해 사용되는 데이터를 지정함
4) 주석문 부
-세미콜론으로 시작함
-어셈블러는 세미콜론 다음에 오는 내용을 무시함
어셈블리 프로그램 예시
LOAD라는 연산코드에 1이라는 정수를 배정해서 기계코드가 1250임
ADD는 정수 5가 배정되어서 기계코드가 5251임
STOR은 2, JUMP는 8이 배정됨
PC : 프로그램 카운터 AC : 누산기 IR : 명령어 레지스터
어셈블리 프로그램 실행예시
PC의 값이 100이므로 첫번째로 실행할 명령어는 1250이다. LOAD 250 이라는 뜻이다. -> 명령어 레지스터가 1250이라는 명령어 코드를 저장한다. -> 명령어에 따라 250번지의 데이터인 0004를 AC로 가져온다. 이때, PC의 값이 1증가해서 101이 된다. -> 101번지에 있는 두번째 명령어가 IR에 저장된다. 5251은 ADD 251이라는 의미 -> AC에 있는 값과 251번지의 데이터를 더한 뒤 결과값은 AC에 저장한다. 이때 PC값은 1증가해서 102가 된다. ->
PC값에 따라서 102번지의 명령어 2251이 IR에 저장된다. STOR 251이라는 뜻. -> 명령어에 따라서 AC에 있는 값이 251번지에 저장된다. 이때 PC값은 1증가해서 103이 된다. -> PC값에 따라 103번지의 명령어 8170이 IR에 저장된다.
JUMP 170이라는 뜻. -> PC값이 170으로 바뀐다.
명령어 집합
-CPU가 수행할 동작을 정의하는 2진수 코드로 된 명령어들의 모임
-일반적으로 어셈블리어 형태로 표현됨
명령어 집합 설계시 고려사항
-연산 종류 : CPU가 수행할 수 있는 연산들의 수와 종류 및 복잡도 (전송연산, 처리 연산, 제어 연산, 입출력연산)
-데이터 형태 : 연산을 수행할 데이터들의 형태, 데이터의 길이(비트 수), 값을 저장하는 방식
-명령어 형식 : 명령어의 길이, 오퍼랜드 필드들의 수와 길이
-주소지정 방식 : 피연산자의 주소를 지정하는 방식
명령어 형식
-연산코드에 배정된 정수가 4비트에 저장됨
-오퍼랜드 : 연산 수행에 필요한 데이터 혹은 데이터의 주소
-CPU가 할 수 있는 연산 : 함수 연산 기능, 전달 기능, 제어 기능, 입출력 기능
명령어 종류
-분기 명령어 : 명령어 내용에 따라서 무조건 오퍼랜드의 주소로 이동하거나 조건 만족 시에만 이동. 명령어의 흐름을 변경해 비순차적으로 명령어를 수행한다.
-서브루틴 명령어 : 명령어 실행 중에 또 따른 명령어를 삽입해 실행하기를 원하는 형태. 호출과 복귀 명령어가 함께 사용된다.
1) 호출(CALL) 명령어 : 현재 프로그램 카운터(PC) 내용을 스택에 저장하고 서브루틴의 시작 주소로 분기하는 명령어
2) 복귀(RET) 명령어 : 분기하기 전 CPU가 원래 실행하던 프로그램으로 되돌아가도록 하는 명령어
문제
1. 다음은 8086프로세서의 어셈블리어 명령어 형식이다. 빈칸에 들어갈 알맞은 말을 쓰시오.
레이블 부 : 연산부 ( ) ; 주석문부
2. 프로그램 카운터(PC)에 저장되는 값은 무엇인가?
3. 다음 중 서브루틴 명령어가 아닌 것을 모두 고르세요.
① ADD
② CALL
③ JUMP
④ RET
4. 다음 기계코드를 어셈블리 명령어로 올바르게 나타낸 것은? 기계코드 : 1261
① ADD 261
② SUB 261
③ LOAD 261
④ CALL 261
5. 분기 명령어를 쓰세요.
정답
1. 오퍼랜드부
-8086프로세서의 어셈블리어 명령어 형식은
레이블 부 : 연산부 오퍼랜드부 ; 주석문부 로 구성된다.
2. 주소값
=> 프로그램 카운터에는 다음 실행할 명령어의 주소값이 저장된다.
3. ①, ③
=>서브루틴 명령어는 CALL과 RET이다.
4. ③
=>맨앞의 정수1이 LOAD 명령어를 의미하는 것이라서 LOAD 261이라는 명령어를 의미한다.
5. JUMP
=>JUMP 명령어는 순차적으로 실행되는 명령어의 흐름을 변경해 비순차적으로 명령어를 수행하는 분기명령어다.
'Study > 컴퓨터구조' 카테고리의 다른 글
[4] 분기 명령어와 오퍼랜드 개수에 따른 명령어 형식 (3) | 2020.05.30 |
---|---|
[3-2] 메모리 구조와 레지스터 종류 (0) | 2020.05.23 |
[3-1] 컴퓨터 명령어 실행 기법 (0) | 2020.05.22 |
[2-1] 컴퓨터 정보의 표현 (0) | 2020.04.17 |
[1주차] 컴퓨터의 기본 구조와 CPU (0) | 2020.04.10 |