1 - 순천대학교

Download Report

Transcript 1 - 순천대학교

컴퓨터시스템구조 –
6장 기본 컴퓨터 프로그래밍
Prof. 강 의 성
순천대학교 컴퓨터교육과
http://nova.sunchon.ac.kr
[email protected]
Tel. 061-750-3344
6.1 개요
MIN,
SUB,
DIF,
ORG 100
LDA SUB
CMA
INC
ADD MIN
STA DIF
HLT
DEC 83
DEC –23
HEX 0
END
6.2 기계어 (machine language) (1)
두 수를 가산하는 이진 프로그램
Location
0
1
10
11
100
101
110
Instruction Code
0010 0000 0000 0100
0001 0000 0000 0101
0011 0000 0000 0110
0111 0000 0000 0001
0000 0000 0101 0011
1111 1111 1110 1001
0000 0000 0000 0000
두 수를 가산하는 16진 프로그램
Location
000
001
002
003
004
005
006
Instruction Code
2004
1005
3006
7001
0053
FFE9
0000
기호 연산 코드를 가진 프로그램
Location
000
001
002
003
004
005
006
Instruction Code
LDA 004
ADD 005
STA 006
HLT
0053
FFE9
0000
그림 5.1에서의
operand에 해당
6.2 Cont’d (2)

두 수를 더하는 어셈블리 프로그램
ORG 0
LDA A
ADD B
STA C
HLT
A, DEC 83
B, DEC -23
C, DEC 0
END

두 수를 더하는 포트란 프로그램
INTEGER A, B, C
DATA A, 83 B, -23
C=A+B
END

두 수를 더하는 C 프로그램
int a=83, b=-23, c;
c = a + b;
6.2 Cont’d (3)

이진 코드 (binary code)



8진수 또는 16진수 코드: 이진 코드를 8진수, 16진수로 표현
기호 코드





메모리 상에 올라가 있는 이진 형태의 명령어, 이진수 명령어와 피연산자
(데이터)들의 시퀀스
연산, 주소 등을 문자, 숫자, 특수 문자 등을 이용하여 나타낸 것
하나의 기호 코드가 하나의 이진 코드로 번역된다.
이러한 기호 코드를 이용한 프로그램을 어셈블리 (assembly) 프로그램
어셈블리 프로그램을 이진코드로 바꿔주는 (번역) 프로그램을 어셈블러
(assembler)
고급 프로그램 언어





포트란 (FORTRAN)
파스칼 (PASCAL)
베이직 (BASIC)
C (?)
고급 프로그램을 이진 코드로 바꾸는 응용 프로그램을 컴파일러 (complier)
6.3 어셈블리 언어 (assembly language) (1)

모든 컴퓨터 (마이크로 프로세서 or CPU)는 각각의 어셈블리 언어를
가지고 있다.
어셈블리 언어 규칙은 컴퓨터 (마이크로 프로세서) 제조업체에서 만든다.

언어 규칙


어셈블리 언어의 각 줄은 필드 (field)라 불리는 세 개의 부분으로 구성
 라벨 (label) 필드: 빈 칸 또는 기호 주소
 명령어 필드: ADD A, LDA A 같은 명령어
 메모리 참조 명령어 (MRI)
 레지스터 참조 또는 입출력 명령어 (non-MRI)
 슈도 (pseudo) 명령어
 각 명령어 예
 CLA
non-MRI
 ADD OPR
직접주소 MRI
 ADD PTR I
간접주소 MRI
 코멘트
 명령어에 대한 해설, 없어도 됨.
 슬래시 (/) 기호 다음에 설명 내용이 온다
6.3 Cont’d (2)

두 수를 감산하는 어셈블리 프로그램
MIN,
SUB,
DIF,
ORG 100
LDA SUB
CMA
INC
ADD MIN
STA DIF
HLT
DEC 83
DEC –23
HEX 0
END

100
101
102
103
104
105
106
107
108
번역된 프로그램 리스팅
2107
7200
7020
1106
3108
7001
0053
FFE9
0000
ORG 100
LDA SUB
CMA
INC
ADD MIN
STA DIF
HLT
MIN, DEC 83
SUB, DEC –23
DIF,
HEX 0
END
6.4 어셈블러 (assembler) (1)


기호로 입력 소스 프로그램을 읽어서 이진 코드로 번역하는 프로그램
소스 프로그램



목적 프로그램


사용자에 의해서 작성되는 어셈블리 프로그램
ASCII 코드에 의해서 표현
어셈블러에 의해서 번역된 이진 코드
Two-pass 어셈블러


First pass
 사용자가 정의한 주소 기호와 이것에 대한 이진수 값의 관계를 나타내는
테이블 작성
 표 6-11, 6-12 참조
Second pass: 다음과 같은 네 개의 테이블을 이용하여 기호들을 이진코드로
변환
 슈도 명령어 테이블
 MRI 테이블
 Non-MRI 테이블
 주소-기호 테이블
6.4 Cont’d (2)

First Pass
6.4 Cont’d (3)

Second Pass