Study

Register

슈라。 2008. 11. 29. 16:29

레지스터(Register)

   - 실행 중인 명령어를 제어하고, 메모리 번지를 지정하고, 산술연산을 수행

   - 각각의 고유한 이름이 있고 이를 통하여 레지스터를 참조

 

◆  세그먼트 레지스터(Segment register)

   : 현재 세그먼트(current segment)인 메모리의 한 영역을 번지지정

   1) CS(Code Segment)

     - DOS의 프로그램 코드 세그먼트의 시작 번지를 저장

      - 이 번지에 명령어 포인터(instruction pointer, IP) 레지스터 내의 옵션 값을 더하면 실행을 위한 명령어의 번지가 된다.

   2) DS(Data Segment)

      - 프로그램의 데이터 세그먼트 레지스터의 시작 번지를 기억

   3) SS(Stack Segment)

      - 번지와 데이터를 임시로 저장할  목적으로 쓰이는 스택을 메모리에 구현할 목적

      - 스택 포인터 레지스터의 오프셋 값을 더하면 스택 내의 현재 워드를 가리키는 번지

   4) ES(Extra Segment)

      - 스트링 조작 명령어 중에서 메모리를 번지지정하기 위해 본 레지스터를 사용할 때가 있다.

      - DI 레지스터와 연관

    5) FS, GS 레지스터

 

◆  명령어 포인터 레지스터(Instruction pointer register = IP)

   : 실행될 다음 명령어의 오프셋 번지를 기억

   예)

          CS 레지스터 내의 세그먼트 번지 : 25A40H

          IP 레지스터 내의 오프셋 번지 :    +    412H

          다음 명령의 번지        ---->         25E52H

 

◆  포인터 레지스터(Pointer register)

   : SP(Stack pointer)와 BP(Base pointer)

   : SS 레지스터와 결부

   1) SP

      - 스택 내의 현재 워드를 참조할 오프셋 값을 기억

      - 80386 이후의 프로세서는 확장 스택 포인터(ESP)

      - 시스템에서 레지스터를 자동적으로 사용

   2) BP

      - 스택에 들어오고 나가는 데이터나 번지를 참조하는 데 사용

      - 80386 이후의 프로세서는 확장 스택 포인터(EBP)

 

◆  범용 레지스터(General purpose register)

   : AX, BX, CX, DX(AX = AH:AL로 구성)

   : EAX, EBX, ECX, EDX(80386 이후의 프로세서의 32비트 확장)

   1) AX

      - 누산기(Accumulator)

      - 산술연산, 입출력, translate 명령어 사용

   2) BX

      - '인덱스'로서 사용할 수 있는 범용 레지스터

      - Base register

   3) CX

      - Counter register

      - Loop의 반복 횟수나 좌우 방향으로 비트를 쉬프트할 숫자를 기억

   4) DX

      - Data register

      - 입출력(input/output)  명령어에 사용

      - 큰 수의 곱셈 및 나눗셈에서는 DX:AX를 쌍으로 사용

 

◆  인덱스 레지스터(Index register)

   : 인덱스 번지지정(indexed addressing), 덧셈 및 뺄셈에 사용

     1) SI(Source Index)

      - 스트링 조작에 사용

      - DS 레지스터와 연관

     2) DI(Destination Index)

      - 스트링 조작에 사용

      - ES 레지스터와 연관

 

 

이 글은 스프링노트에서 작성되었습니다.

'Study' 카테고리의 다른 글

NFS Mount  (0) 2008.12.02
nfs 설정 등..  (0) 2008.12.02
[OS 만들기] real mode, protected mode  (0) 2008.11.27
리눅스 부팅과정  (0) 2008.11.27
Linux 명령어  (0) 2008.11.27