목차
8086의 내부 구조
80X86의 어드레싱 모드(Addressing mode)
제장. 마이크로프로세서와 마이크로프로세서 System
마이크로 프로세서(Microprocessor)란?
마이크로 프로세서의 개념
마이크로 프로세서의 발달과정
16비트와 32비트 Micro-processor에서 볼 수 있는 개선된 성능
제장. 마이크로 프로세서의 구조와 동작
제장. 입출력 장치의 접속
제장. INTERRUPT
제장. DMA(Direct Memory Access)
제장. BUS와 SYSTEM구성
컴퓨터 명령어와 번지 지정모드
80X86의 어드레싱 모드(Addressing mode)
제장. 마이크로프로세서와 마이크로프로세서 System
마이크로 프로세서(Microprocessor)란?
마이크로 프로세서의 개념
마이크로 프로세서의 발달과정
16비트와 32비트 Micro-processor에서 볼 수 있는 개선된 성능
제장. 마이크로 프로세서의 구조와 동작
제장. 입출력 장치의 접속
제장. INTERRUPT
제장. DMA(Direct Memory Access)
제장. BUS와 SYSTEM구성
컴퓨터 명령어와 번지 지정모드
본문내용
2
MOVE R1, X ‥‥ M[X] ← R1
MOVE명령은 오퍼랜드를 메모리로부터 레지스터로 가져오거나, 레지스터 값을 메모리로 전송하는 역할을 한다.
1번지 명령
1번지 명령을 가진 컴퓨터는 내장되어 있는 누산기(ACC)레지스터를 사용한다.
X~=~(A`+B)``×`(C`+D)
을 1번지 명령 형태로 나타내면
LOAD A …… ACC ← M[A]
ADD B …… ACC ← ACC + M[B]
STORE T …… M[T] ← ACC
LOAD C …… ACC ← M[C]
ADD D …… ACC ← ACC + M[D]
MUL T …… ACC ← ACC × M[T]
STORE X …… M[X] ← ACC
모든 동작은 ACC 레지스터와 메모리 오퍼랜드 사이에서 이루어지고 T는 계산중에 값을 일시 저장하기 위한 메모리의 번지이다.
0번지 명령
스택을 사용한 명령을 0번지 명령이라 한다. 스택의 두가지 동작은 항목의 삽입과 삭제이다. 삽입의 동작을 푸시(PUSH)라 하고 이는 새로운 항목을 스택의 맨 위에 쌓는 것을 의미하며, 삭제의 동작을 팝(POP)이라 하는데 이는 스택의 맨 위에 있는 항목을 꺼내는 것을 의미한다. 여기서 Acc는 스택의 최상위를 나타낸다.
X~=~(A`+B)``×`(C`+D)
을 0번지 명령 형태로 나타내면
PUSH A …… TOS ← A
PUSH B …… TOS ← B
ADD …… TOS ← (A + B)
PUSH C …… TOS ← C
PUSH D …… TOS ← D
ADD …… TOS ← (C + D)
MUL …… TOS ← (C + D) * (A + B)
POP X …… M[X] ← TOS
예를 들면
X~ =~ (3`×4)``+`(5`×`6)
을 계산한다면
위와 같이 스택은 동작하고 마지막에 값 42는 POP 명령에 의해 저장된다.
번지지정 모드
명령에서의 동작영역은 수행되어야 하는 동작을 지정하고 있으며 이 동작은 컴퓨터 레지스터나 메모리에 있는 데이터에 대하여 수행된다. 프로그램이 수행되는 동안 오퍼랜드가 지정되는 방법은 명령의 번지지정 모드에 의해 좌우된다.
번지지정 모드는 메모리에 데이터를 적재하거나 가져오기 위한 조작을 하기 위한 데이터 지정방법을 의미한다.
1. 메모리의 포인터, 루프제어의 계수기, 데이터의 색인, 프로그램 재배치 등의 편
의를 사용자에게 제공함으로써 프로그래밍 하는데 융통성을 준다.
2. 명령의 번지 영역의 비트를 줄인다.
.기본 컴퓨터 주기
컴퓨터의 제어 단위는 프로그램의 각 명령을 수행하기 위해 다음과 같은 순서로 설계되어 있다.
1. 메모리로부터 제어 명령를 가지고 옴 …… DR ← M[PC]
2. 명령을 해독한다 …… IR ← DR
3. 명령에 의해 사용되는 오퍼랜드를 확보
4. (만약 필요하다면) 메모리로부터 오퍼랜드를 가져온다. …… DR ← M[PC]
5. 프로세서 레지스터안의 명령을 수행한다. 레지
6. 적당한 위치에 결과를 기억시킨다.
7. 다음 명령을 수행하기 위해 1단계로 돌아간다.
1) 함축형 모드(Implied mode)
이 모드에서는 오퍼랜드가 묵시적으로 명령의 정의에 따라 정해저 있다. 두번째 오퍼랜드가 없이 누산기를 사용하는 모든 명령은 함축형 모드 명령이다. 또 스택구조의 컴퓨터에서 동작형태 명령은 오퍼랜드가 스택의 top이기 때문에 함축형 모드 명령이다.
번지 영역이 필요 없다.
2) 즉시형 모드(Immediate mode)
이 모드는 오퍼랜드가 명령 그 자체 내에 있다.
3) 레지스터 모드
번지 영역이 레지스터를 지정할 때 이 명령을 레지스터 모드라고 한다.
AC ← R1
4) 레지스터 간접 모드
레지스터 안에 오퍼랜드의 번지를 가지고 있다.
적은 비트로서 번지지정이 가능하다.
AC ← M[R1]
5) 직접 번지 지정 모드
AC ← M[ADRS]
속도는 빠르나 주소 지정에 한계가 있다.
6) 간접 번지 지정 모드
AC ← M[ M[ADRS] ]
page화된 시스템에서 필수적이다.
7) 상대 번지 지정 모드
유효번지 〓 명령의 번지부분 + PC의 내용
AC ← M[ M[ADRS] ]
상대적으로 짧은 Loop를 수행하는 분기(Branch) 명령에 사용.
8) 인덱스 번지 지정 모드
인덱스(Index) 레지스터를 사용
AC ← M[index + offset]
data로 되어 있는 표를 순차적으로 접근하는데 용이하다.
9) 베이스 번지 지정 모드
16bit Processor들은 모두 제공.
큰 주소로 확대하는데 효과적이다.
메모리 영역을 효과적으로 지정할 수 있다.
Program 또는 Segment를 동적변위(Dynamic relocation) 시킬 수 있다.
→ 이때 운영체제(O/S)만이 기저 레지스터를 사용
10) 기저 인덱스 번지 지정 모드
보통의 16비트 프로세서는 이 모드를 제공하고 있다.
11) 확대 번지 지정 모드
12) 비트 번지 지정 모드
메모리의 비트나 Register의 Bit를 주소로 지정한다.(Z-80)
번지 지정 모드 요약
그림 어드레싱 모드의 수치 예
번지지정모드
기호법
레지스터 전송
유효 번지
AC의 내용
직접
LDA ADRS
AC ← M[ADRS]
500
800
즉시
LDA #ADRS
AC ← MBR
251
500
간접
LDA [ADRS]
AC ← M[M[ADRS]]
800
300
상대
LDA $ADRS
AC ← M[ADRS + PC]
752
600
인덱스
LDA ADRS(R1)
AC ← M[ADRS + R1]
900
200
레지스터
LDA R1
AC ← R1
-
400
레지스터 간접
LDA (R1)
AC ← M[R1]
400
700
CISC와 RISC의 비교
CISC
(Complex Instruction Set Computer)
RISC
(Reduced Instruction Set Computer)
기계어 명령이 많다
명령어가 적다
명령어의 길이가 가변적이다
일정(4byte)
실행 사이클이 가변적이다
한 사이클에 끝난다
명령어가 다양하다
명령어가 단순하다
속도면에서 불리하다
속도면에서 유리
명령의 해독이 마이크로 프로그램에 의해
이루어 진다
명령의 해독이 H/W의 코드에 의해 이루어
진다.
디버깅시 TRACE가 가능하다
MOVE R1, X ‥‥ M[X] ← R1
MOVE명령은 오퍼랜드를 메모리로부터 레지스터로 가져오거나, 레지스터 값을 메모리로 전송하는 역할을 한다.
1번지 명령
1번지 명령을 가진 컴퓨터는 내장되어 있는 누산기(ACC)레지스터를 사용한다.
X~=~(A`+B)``×`(C`+D)
을 1번지 명령 형태로 나타내면
LOAD A …… ACC ← M[A]
ADD B …… ACC ← ACC + M[B]
STORE T …… M[T] ← ACC
LOAD C …… ACC ← M[C]
ADD D …… ACC ← ACC + M[D]
MUL T …… ACC ← ACC × M[T]
STORE X …… M[X] ← ACC
모든 동작은 ACC 레지스터와 메모리 오퍼랜드 사이에서 이루어지고 T는 계산중에 값을 일시 저장하기 위한 메모리의 번지이다.
0번지 명령
스택을 사용한 명령을 0번지 명령이라 한다. 스택의 두가지 동작은 항목의 삽입과 삭제이다. 삽입의 동작을 푸시(PUSH)라 하고 이는 새로운 항목을 스택의 맨 위에 쌓는 것을 의미하며, 삭제의 동작을 팝(POP)이라 하는데 이는 스택의 맨 위에 있는 항목을 꺼내는 것을 의미한다. 여기서 Acc는 스택의 최상위를 나타낸다.
X~=~(A`+B)``×`(C`+D)
을 0번지 명령 형태로 나타내면
PUSH A …… TOS ← A
PUSH B …… TOS ← B
ADD …… TOS ← (A + B)
PUSH C …… TOS ← C
PUSH D …… TOS ← D
ADD …… TOS ← (C + D)
MUL …… TOS ← (C + D) * (A + B)
POP X …… M[X] ← TOS
예를 들면
X~ =~ (3`×4)``+`(5`×`6)
을 계산한다면
위와 같이 스택은 동작하고 마지막에 값 42는 POP 명령에 의해 저장된다.
번지지정 모드
명령에서의 동작영역은 수행되어야 하는 동작을 지정하고 있으며 이 동작은 컴퓨터 레지스터나 메모리에 있는 데이터에 대하여 수행된다. 프로그램이 수행되는 동안 오퍼랜드가 지정되는 방법은 명령의 번지지정 모드에 의해 좌우된다.
번지지정 모드는 메모리에 데이터를 적재하거나 가져오기 위한 조작을 하기 위한 데이터 지정방법을 의미한다.
1. 메모리의 포인터, 루프제어의 계수기, 데이터의 색인, 프로그램 재배치 등의 편
의를 사용자에게 제공함으로써 프로그래밍 하는데 융통성을 준다.
2. 명령의 번지 영역의 비트를 줄인다.
.기본 컴퓨터 주기
컴퓨터의 제어 단위는 프로그램의 각 명령을 수행하기 위해 다음과 같은 순서로 설계되어 있다.
1. 메모리로부터 제어 명령를 가지고 옴 …… DR ← M[PC]
2. 명령을 해독한다 …… IR ← DR
3. 명령에 의해 사용되는 오퍼랜드를 확보
4. (만약 필요하다면) 메모리로부터 오퍼랜드를 가져온다. …… DR ← M[PC]
5. 프로세서 레지스터안의 명령을 수행한다. 레지
6. 적당한 위치에 결과를 기억시킨다.
7. 다음 명령을 수행하기 위해 1단계로 돌아간다.
1) 함축형 모드(Implied mode)
이 모드에서는 오퍼랜드가 묵시적으로 명령의 정의에 따라 정해저 있다. 두번째 오퍼랜드가 없이 누산기를 사용하는 모든 명령은 함축형 모드 명령이다. 또 스택구조의 컴퓨터에서 동작형태 명령은 오퍼랜드가 스택의 top이기 때문에 함축형 모드 명령이다.
번지 영역이 필요 없다.
2) 즉시형 모드(Immediate mode)
이 모드는 오퍼랜드가 명령 그 자체 내에 있다.
3) 레지스터 모드
번지 영역이 레지스터를 지정할 때 이 명령을 레지스터 모드라고 한다.
AC ← R1
4) 레지스터 간접 모드
레지스터 안에 오퍼랜드의 번지를 가지고 있다.
적은 비트로서 번지지정이 가능하다.
AC ← M[R1]
5) 직접 번지 지정 모드
AC ← M[ADRS]
속도는 빠르나 주소 지정에 한계가 있다.
6) 간접 번지 지정 모드
AC ← M[ M[ADRS] ]
page화된 시스템에서 필수적이다.
7) 상대 번지 지정 모드
유효번지 〓 명령의 번지부분 + PC의 내용
AC ← M[ M[ADRS] ]
상대적으로 짧은 Loop를 수행하는 분기(Branch) 명령에 사용.
8) 인덱스 번지 지정 모드
인덱스(Index) 레지스터를 사용
AC ← M[index + offset]
data로 되어 있는 표를 순차적으로 접근하는데 용이하다.
9) 베이스 번지 지정 모드
16bit Processor들은 모두 제공.
큰 주소로 확대하는데 효과적이다.
메모리 영역을 효과적으로 지정할 수 있다.
Program 또는 Segment를 동적변위(Dynamic relocation) 시킬 수 있다.
→ 이때 운영체제(O/S)만이 기저 레지스터를 사용
10) 기저 인덱스 번지 지정 모드
보통의 16비트 프로세서는 이 모드를 제공하고 있다.
11) 확대 번지 지정 모드
12) 비트 번지 지정 모드
메모리의 비트나 Register의 Bit를 주소로 지정한다.(Z-80)
번지 지정 모드 요약
그림 어드레싱 모드의 수치 예
번지지정모드
기호법
레지스터 전송
유효 번지
AC의 내용
직접
LDA ADRS
AC ← M[ADRS]
500
800
즉시
LDA #ADRS
AC ← MBR
251
500
간접
LDA [ADRS]
AC ← M[M[ADRS]]
800
300
상대
LDA $ADRS
AC ← M[ADRS + PC]
752
600
인덱스
LDA ADRS(R1)
AC ← M[ADRS + R1]
900
200
레지스터
LDA R1
AC ← R1
-
400
레지스터 간접
LDA (R1)
AC ← M[R1]
400
700
CISC와 RISC의 비교
CISC
(Complex Instruction Set Computer)
RISC
(Reduced Instruction Set Computer)
기계어 명령이 많다
명령어가 적다
명령어의 길이가 가변적이다
일정(4byte)
실행 사이클이 가변적이다
한 사이클에 끝난다
명령어가 다양하다
명령어가 단순하다
속도면에서 불리하다
속도면에서 유리
명령의 해독이 마이크로 프로그램에 의해
이루어 진다
명령의 해독이 H/W의 코드에 의해 이루어
진다.
디버깅시 TRACE가 가능하다