1. 컴퓨터 프로그래밍 언어

    -상위 프로그래밍 언어: 사람과 가까운 쪽(사람이 쉽게 알아보고 이해할 수 있다.)

       ex) c, c++, JAVA 등

    -하위 프로그래밍 언어

       ex) 기계어, 어셈블리어

 

2. 기계어

    -컴퓨터가 직접 이해할 수 있는 언어

    -2진수 형태로 표현

    -수행시간이 짧음

    -호환성 없음

 

3. 어셈블리어

    -기계어와 1:1 대응(기계어를 문자로 기호화함)

    -CPU에 따라 형식이 다름

    -직관적임

    -어셈블러 필요: 어셈블리 언어를 번역하여 오브젝트 코드를 생성하는 프로그램


4. 어셈블리 명령어(Intel CPU 버전)_2진수로 모든 것을 처리함

레이블 부: 연산부     오퍼랜드 부     ; 주석문 부

레이블 부

CPU실행을 해당 레이블로 이동시킬 때 사용

연산 부

명령어, 지시어로 구성

피연산자 부

레지스터 이름, 정수, 라벨, 연산자, 주소등으로 구성

주석문 부

세미콜론으로 시작

 

 

 

만약, 기계코드가 8170이면 8은 연산코드에 170은 오퍼랜드 1에 들어가며 오퍼랜드 2는 패딩영역으로 쓴다.

 

-연산 코드

    >함수 연산기능: 산술, 논리 연산 수행

    >전달기능: CPU와 주기억장치 사이 정보교환과 적재, 저장

    >제어기능: 프로그램 수행흐름 제어

        분기 명령어

              -오퍼랜드: 다음에 실행할 명령어 주소를 포함

        서브루틴 호출 명령어

              -호출 명령어: 현재 PC 내용을 스택에 저장하고 서브루틴의 시작주소로 분기함

              -복귀 명령어: CPU가 원래 실행하던 프로그램으로 되돌아가도록함                                     

    >입출력기능: CPU와 외부 장치들 간의 데이터 이동

 

-오퍼랜드: 연산을 수행하는데 필요한 데이터 혹은 데이터의 주소

 

-데이터이동

     -mov: 데이터를 이동한다.

-사칙연산

     -add: 덧셈

     -sub: 뺄셈

     -mul: 곱셈

     -div: 나눗셈

-기억장치 관련

     -load: 기억장치로부터 데이터 적재

     -srot: 기억장치로 데이터 저장

 

5. 어셈블리 프로그램 예제

 

 

먼저 기계코드를 설명하자면, 컴퓨터만 이해할 수 있는 코드로 명령어와 주소를 합친 것이다. LOAD명령어를 나타내는 기계코드는 1이고, ADD명령어를 나타내는 기계코드는 5인 것이다.

 

100번지에 있는 1250은 '250번지의 값을 가져와라'라는 것이다. 그럼 컴퓨터는 250번지에 있는 값을 가져와서 누산기에 넣는다. 이후 101번지에 있는 5251코드로 인해 컴퓨터는 251번지에 가서 값을 가져와 누산기의 값과 더한 후 102번지에 있는 2251코드로 인해 251번지에 값을 저장한다. 이 명령이 끝나면 103번지의 170번지로 점프하라는 기계코드를 실행한다.

 

이 예시를 단계별로 도식화해보자.

여기서 PC는 프로그램 카운터, AC는 누산기, IR은 명령어 레지스터이다.

 

LOAD 250

 

CPU 레지스터의 프로그램 카운터 값이 100번지를 가리키고 있으므로 기억장치의 100번째 주소의 기계코드를 명령어 레지스터에 넣는다. 컴퓨터는 이를 이해하고 누산기에 250번지의 값을 넣는다. 이후 프로그램 카운터값은 101번지를 가리킨다.

 

 

ADD 251

 

프로그램 카운터 값이 101이므로 기억장치의 101번째 주소의 명령어를 해석한다. 이후 251번지의 값을 누산기에 있는 250번지의 값과 더해서 다시 누산기에 넣는다.

 

 

STOR 251

 

프로그램 카운터 값이 102이므로 기억장치의 102번째 주소의 명령어를 해석한다. 이후 251번지에 누산기의 값을 가져와 저장한다.

 

 

JUMP 170

 

프로그램 카운터 값이 103이므로 기억장치의 103번째 주소의 명령어를 해석한다. 이후 170번지로 점프한다.(프로그램 카운터 값이 170으로 바뀐다.)

 

5. 명령어 집합

    -2진수 코드로 된 명령어들의 집합(기계코드)

    -어셈블리 코드 형태로 표현

    -연산 종류, 데이터 형태, 명령어 형식, 주소지정 방식이 명령어 집합 설계에 중요하다.

 

 


 

[컴퓨터 구조 WEEK2_2]27기변주현_답안.hwp
0.01MB
[컴퓨터 구조 WEEK2_2]27기변주현_문제.hwp
0.08MB

+ Recent posts