본문내용
1. 서론
1.1. 8086 인텔 프로세서의 등장과 특징
인텔사에서 1978년 개인용 컴퓨터를 위해 제작한 8086은 16비트 마이크로프로세서로, X86 아키텍처를 적용한 첫 제품이다. 이 제품의 클럭 속도는 제품에 따라 4.77MHz에서 10MHz까지 다양하며, 메모리 영역이 1MB까지로 제한되어 바이오스에서 사용하는 384KB를 제외한 640KB만을 실제로 사용할 수 있다. 당시 매우 혁신적이었던 8086은 처리 속도 등에서 기존 제품과 차별화되었으며, 이는 레지스터의 개선으로 인한 것이라고 평가받고 있다. 레지스터는 CPU에서 데이터나 처리 중간 결과를 일시적으로 기억하는 고속의 전용 영역으로, 한 단어 또는 여러 단어, 수의 자릿수 정보를 기억하는 장치이다. 따라서 컴퓨터의 성능 개선을 위해서는 레지스터가 매우 중요하며, 8086의 경우 이러한 개선된 레지스터 사용으로 인해 처리 속도 및 성능 향상을 이루어낼 수 있었다.
1.2. 레지스터의 개념과 중요성
레지스터란 극히 소량의 데이터나 처리 중인 중간 결과를 일시적으로 기억해두는 고속의 전용 영역이다. 레지스터는 한 단어 또는 여러 단어, 때로는 수의 자릿수의 정보를 기억하는 장치이며 특정 목적에 사용되고, 수시로 그 내용을 이용할 수 있도록 되어 있다.
레지스터가 중요한 이유는 컴퓨터의 주기억 장치가 데이터와 명령을 기억하고 있을 뿐이기 때문에, 실제 산술 연산, 논리 연산, 전송 조작을 할 때에는 데이터나 명령을 일시적으로 기억해둘 장소가 필요하게 되는데 바로 이러한 역할을 레지스터가 수행하기 때문이다. 따라서 컴퓨터의 성능을 개선하기 위해서는 레지스터가 매우 중요하다고 할 수 있다.
인텔의 8086 프로세서의 경우에도 기존과는 개선된 레지스터를 사용하여 처리 속도 등을 개선할 수 있었다. 즉, 레지스터의 발전이 8086 프로세서의 혁신적인 발전을 가능하게 한 핵심 요인이었다고 볼 수 있다. 따라서 레지스터의 개념과 그 중요성을 이해하는 것은 8086 프로세서의 기술적 특징을 이해하는 데 매우 중요하다.
2. 8086 인텔 프로세서의 레지스터 종류 및 역할
2.1. 범용 레지스터
2.1.1. 데이터 레지스터
AX (AH, AL) 레지스터는 주ACC(MAIN ACCUMULATOR)로 사용되는데, 산술과 논리 연산이 주된 레지스터로 곱셈, 나눗셈 등에 이용되는 데이터나 주소를 기억하는데 사용된다. 또한 입력 및 출력 명령을 수행하는데 있어 다른 범용 레지스터를 우선적으로 AX(AL)에 개입시켜 데이터를 보내며, 어떤 명령은 AX(AL)의 내용 만으로 엑세스 하기도 한다. BX (BL, BH) 레지스터는 범용 ACC로 사용되는 외에도 데이터 메모리의 번지계산을 할 때 즉 간접 주소 지정 시에 베이스 레지스터(Base Register)로도 사용된다. CX (CL, CH) 레지스터는 ACC로 사용되며, 또 반복명령용의 카운터(COUNTER)로 스트링이나 루프에서 반복되는 수를 세는 카운트 레지스터(Counter Register)로 쉬프트(Shift), 로테이트(Rotate) 명령의 반복되는 수를 기록하거나 반복 횟수를 지정하는 방식으로 수행된다. 이러한 경우에 CX레지스터의 내용이 증감되어 0(zero)이 되면 명령의 실행이 종료된다. DX (DL, DH) 레지스터는 정보 전송과 ACC로 사용되며, 간접 주소 지정에 의한 입출력 명령을 실행할 때 번지 지정에 사용되고, 곱셈, 나눗셈을 할 때에도 사용된다. 이처럼 데이터 레지스터는 일시적인 결과 기록, 입출력 명령 수행, 주소 지정, 산술 및 논리 연산 등 다양한 용도로 활용되어 8086 프로세서의 성능 향상에 큰 기여를 하고 있다.
2.1.2. 베이스 레지스터
베이스 레지스터는 산술 및 논리 연산에 사용되기도 하지만 주요 임무는 간접 번지 지정 등에서 어드레스 값을 지정할 때 사용이다. 대형 컴퓨터나 디지털 교환기를 시작으로 전자교환기와 같이 대용량의 주기억장치를 가진 경우에는 그 어드레스를 직접 표현하기 위해서는 하나의 명령 어드레스부는 18비트 전후를 필요로 하게 된다. 또한, 작성하는 프로그램 단위는 3~4킬로 워드 정도가 보통이며 그것은 12비트로 표현되기 때문에 위에서 설명한 것과 같은 어드레스부를 유지하는 것은 비경제적이다. 이 때문에 개개의 프로그램의 선두 또는 특정한 어드레스를 고정점으로 정의를 함으로써 실행 어드레스를 베이스...