ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [시스템프로그래밍] 4강 어셈블리어 개요, 어셈블리 명령어, 어셈블러 지시어(의사 명령어)
    프로그래밍/시스템프로그래밍 2014. 4. 26. 01:10

    * 개요

    저급언어는 기계어와 일대일로 대응하는 컴퓨터 프로그래밍 언어를 말한다. 대표적으로 어셈블리어가 있다.

    어셈블리어는 기계어와 가장 가깝기 때문에 기계의 특성을 잘 살릴수 있다는 것이 장점

    고속의 가상 프로그램이 가능한 것도 어셈블리어의 특징

    기계어와 비슷하기 때문에 이해하기 어렵다는 것이 단점

    어셈블리어는 기호식 언어라고도 한다 (기계어 -> 기호로 나타냄)

    - 어셈블리 언어로 만들어진 프로그램은 어셈블러에 의해 기계어로 번역되어 처리된다.

    - 어셈블리어는 기계어의 비트 형식을 기호식 언어인 니모닉 코드로 나타낸다

    - 니모닉 코드는 기계어의 비트형식이 나타내는 의미를 심벌로 표현한 것으로 프로그램을 이해하거나 작성하기 쉽다

    - 어셈블리어를 사용하게 되는 경우는 프로세서를 직접 제어해야 할 때, 속도 빠른 코드를 생성하려고 할 때, 프로그램의 크기를 최소화하려고 할 때

    소스프로그램 어셈블러 링커 기계어 프로그램 의 단계

     



    명령어 형식

    어셈블리어 문장인 명령문은 컴퓨터에게 해야 할 일을 지시하는 문장

    명령문은 어셈블러에게만 지시하는 어셈블러 지시어와 실제적으로 어떤 작업을 수행하기 하는 어셈블리 명령어로 구분 가능

    명령문은 기계어로 변환될 문장이며 지시어는 어셈블러에게 지시를 내리는 문장

    기계어로 변환되지 않고 단지 어셈블되는 것을 도와준다

    지시어를 사용함으로써 처리과정의 많은 부분을 프로그래머가 직접 제어가능

     

    2. 설명문(Comment) 또는 주석문

    대부분의 프로그래밍 언어는 설명문을 사용 가능

    영문, 한글등이 가능하며 프로그램의 설명을 삽입하기 위해 사용

    ;을 문장의 맨 앞이나 명령어 맨 마지막에 사용하는 두 가지 방법이 있다

     

    * 어셈블리 명령어

    어셈블리 명령어는 일반적으로 한 행에 한 문장만 쓴다

    문장은 어떤 열에서 시작하여도 괜찮다

    대 소문자를 원하는 대로 선택하여 사용가능하며 “”로 쌓여 있는 문자열의 경우를 제외하고는 대소문자를 구별하지 않는다

     

    load/store 명령어(데이터 전송 명령)

    데이터의 전송방법은 한 위치에서 다른 위치로 값을 복사하는 것을 의미

    이러한 처리를 위한 명령어로는 MOV, LEA, PUSH, POP등이 있다

     

    2. 산술연산 명령어

    산술연산 명령어에는 덧셈, 뺄셈, 곱셈, 나눗셈 등의 명령어를 의미

     

    3. 논리연산 명령어
    - 논리연산 명령어는 비트 단위로 처리

    - 대표적인 명령어로는 OR, AND, NOT 등이 있다

    형식은 명령어 레지스터, 레지스터 또는 명령 메모리, 레지스터, 명령 레지스터, 직접 데이터 등이 있다.

     

    4. 조건 분기와 무조건 분기

    분기는 조건 분기와 무조건 분기로 나눌 수 있다

    조건 분기는 비교명령이나 연산명령의 결과에 의해 플래그 레지스터가 세팅

    조건 분기 명령은 세팅된 플래그 레지스터의 값에서 따라서 분기가 된다

    무조건 분기는 JMPCALL명령어를 사용하여 무조건 분기시키도록 하는 처리 명령어이다.

    고급언어에서 GOTO 구문과 동일

     

    * 어셈블러 지시어(의사 명령어)

     



    주소지정 기능

    - 주기억장치의 주소는 바이트로 구성되어 있고, 모든 바이트에는 정수번호가 붙어있다, 이 번호를 바이트의 주소라고 한다

    프로세서가 주기억장치의 한 바이트를 읽으려면 프로세서가 주기억장치에 그 주소를 전달하고 주기억장치는 그 바이트의 정보를 프로세서에 보내야만 읽을 수 있다.

    프로세서가 어떤 바이트에 자료를 쓰려고 하면 프로세서는 주기억장치에 그 바이트의 주소와 사용할 정보를 보낸 후 그 정보를 지정된 바이트에 복사하여 넣으면 된다.

    실효주소 생성 : 컴퓨터시스템에서 기계어로 명령어로 사용하는 주소의 길이는 16비트 (실효주소 = 세그먼트 주소 + 오프셋)

    세그먼트 레지스터 : 모든 프로그램은 세그먼트 단위로 나뉘어져야한다.

    한 세그먼트의 최대 크기는 64KB

    서로 중복되는 부분이 없이 독립된 4개의 세그먼트로 하는 경우에는 256KB의 메모리 공간을 지정할 수 있다.

    실효주소 작성은 BIU이 자동적으로 실행

    주소지정방식 : 프로그램 실행은 몇 개의 예외를 제외하고 특정 데이터에 대해서 어떤 처리를 하든지 또는 3개의 데이터 사이에 처리를 한다

     

    2. 모듈 연결 기능

    매크로 어셈블리에서는 프로그램의 실행부분을 모듈로 작성 가능, 이 모듈을 프로시져라 부르며 PROC 지시어로 정의

     

    3. 심벌 및 데이터 정의 기능

    데이터는 상수, 변수로 정의

    데이터 정의 지시어는 프로그램에서 데이터를 저장할 기억장소를 정의할 때 사용하며 초깃값을 부여한다

    데이터 및 심벌을 정의하는 방법으로는 상수정의, 변수 정의 방법으로 구분 가능

    상수 정의 : 상수를 정의할 때에는 EQU==를 사용하여 정의한다.

    EQU는 재정의가 불가능

     

    4. 어셈블러 의사 명령어

    의사 명령어란 어셈블리 프로그램에서 기계어 명령이 아니라 어셈블러에게 어떤 사항을 지시하기 위해 사용하는 명령어

    프로그램의 시작과 끝을 나타내는 것, 변수를 위한 기억장소를 확보하는 것, 매크로를 정의하거나 호출하는 것


    * 정리후기

    - 진심 너무 어렵다.

    댓글 0

Designed by Tistory.