Skip navigation.
Home
Seoul North West Side Linux User Group

제 2-2장 8086-80486 내부적인 구조

프로그램을 작성하기 전이나 어떤 명령어를 입력하기 전에 마이크로 프로세서의 내부 구조에 대해 알아야만 합니다. 이 부분은 프로그램에서 참조할 수 있는 8086-80486 마이크로프로세서의 내부 구조를 설명합니다. 또한 각각의 내부 레지스터 기능과 목적을 설명합니다.

프로그래밍 모델

8086-80486 마이크로프로세서의 프로그래밍 모델은 프로그램 참조가능한 모델(Program Visible)로 알려져 있습니다. 왜냐하면 프로그램을 실행하는 동안 레지스터들을 사용하며, 명령어(Instruction)로 레지스터를 지정하기 때문입니다. 나중에 설명할 다른 레지스터들은 참조가능하지 않은 모델(program invisible)로, 보통 응용프로그램에서는 사용되지 않으나, 시스템 프로그래밍에 사용될 것입니다. 80286 이후의 모델에서만 참조 가능하지 않은 레지스터들을 포함하고 있습니다.

그림 2-1 은 8086-80486 마이크로프로세서의 프로그래밍 모델을 나타냅니다. 초기 8086, 8088 그리고 80286 프로세서는 그림에서 레지스터의 부분집합으로 표현되는 16 bit 내부 구조를 갖고 있습니다. 80386과 80486 마이크로 프로세서는 완전한 32 비트 내부 구조를 갖고 있습니다. 그림에서 음영으로 나타난 부분은 8086, 8088, 80286 마이크로프로세서에는 찾을 수 없으며, 80386, 80486 마이크로프로세서에서 확장된 부분입니다.

레지스터 구조는 8 bit, 16 bit, 32 bit 레지스터를 갖고 있습니다. 8 bit 레지스터들은 AH, AL, BH, BL, CH, CL, DH, DL 로 명령어(Instruction)를 구성할 때 이 2글자 표기로 참조합니다. 16 bit 레지스터들은 AX, BX, CX, DX, SP, BP, DI, SI, IP, FLAGS, CS, DS, ES, SS, FS, GS 입니다. 마찬가지로 이 레지스터들도 명령어를 구성할 때 이 2글자 표기로 참조합니다. 확장된 32 bit 레지스터들은 EAX, EBX, ECX, EDX, ESP, EBP, EDI, ESI, EIP, EFLAGS 로 이름붙여집니다. 이 32 bit 확장된 레지스터들과 16 bit 레지스터 FS, GS 는 80386 과 80486 에서만 사용가능합니다. 이것들 또한 앞서 설명한 표기로 참조합니다.

몇몇 레지스터들은 일반 목적 혹은 다목적 레지스터들이며, 반면에 몇몇 레지스터들은 특수 목적을 갖습니다. 일반목적 레지스터들은 EAX, EBX, ECX, EDX, EBP, EDI, ESI 를 포함합니다. 이 레지스터들은 다양한 데이터 크기(bytes, words, 혹은 double words)를 유지하며 거의 대부분의 목적에 사용됩니다.