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