본문 바로가기
Study/컴퓨터구조

[2-2] 컴퓨터의 명령어

by 투말치 2020. 4. 17.

목차

    반응형

    어셈블리어 

    -기계어를 사람이 이해할 수 있게 언어에 가까운 문자로 기호화한 언어다.

    -CPU마다 사용되는 어셈블리어 형식이 다르다.

     

    어셈블리 명령어

    -ADD : 덧셈

    -SUB : 뺄셈

    -MUL : 곱셈

    -DIV : 나눗셈

    -MOV : 데이터 이동

    -LOAD : 기억장치로부터 데이터를 읽어와 적재

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

     

    어셈블리 명령어 형식 (8086프로세서)

     

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

    ex) 100 LOAD 250 

     

     1) 레이블 부

      -레이블을 나타내는데 사용

      -이름 중간에 공백이 있으면 안됨

     

     2) 연산부

      -기호화된 명령어 또는 지시어로 구성됨

     

     3) 오퍼랜드 부

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

      -연산자에 의해 사용되는 데이터를 지정함

     

     4) 주석문 부

      -세미콜론으로 시작함

      -어셈블러는 세미콜론 다음에 오는 내용을 무시함

     

     

    어셈블리 프로그램 예시

    출처 : 컴퓨터 구조와 원리 (비주얼 컴퓨터 아키텍처), 신종홍 저, 한빛미디어, 2011

    LOAD라는 연산코드에 1이라는 정수를 배정해서 기계코드가 1250임

    ADD는 정수 5가 배정되어서 기계코드가 5251임

    STOR은 2, JUMP는 8이 배정됨

     

    출처 : 컴퓨터 구조와 원리 (비주얼 컴퓨터 아키텍처), 신종홍 저, 한빛미디어, 2011

    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가 수행할 수 있는 연산들의 수와 종류 및 복잡도 (전송연산, 처리 연산, 제어 연산, 입출력연산)

    -데이터 형태 : 연산을 수행할 데이터들의 형태, 데이터의 길이(비트 수), 값을 저장하는 방식

    -명령어 형식 : 명령어의 길이, 오퍼랜드 필드들의 수와 길이

    -주소지정 방식 : 피연산자의 주소를 지정하는 방식

     

    명령어 형식

    출처 : 컴퓨터 구조와 원리 (비주얼 컴퓨터 아키텍처), 신종홍 저, 한빛미디어, 2011

    -연산코드에 배정된 정수가 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. ,
    =>
    서브루틴 명령어는 CALLRET이다.

     

    4.
    =>
    맨앞의 정수1LOAD 명령어를 의미하는 것이라서 LOAD 261이라는 명령어를 의미한다.

     

    5. JUMP
    =>JUMP
    명령어는 순차적으로 실행되는 명령어의 흐름을 변경해 비순차적으로 명령어를 수행하는 분기명령어다.

     

     

     

     

     

     

     

     

    반응형