마이크로 프로세서-8086 기능 단위

8086 마이크로 프로세서는 두 개의 기능 단위로 나뉩니다. EU (실행 단위) 및 BIU (버스 인터페이스 장치).

EU (실행 단위)

실행 단위는 데이터를 가져올 위치를 BIU에 지시 한 다음 해당 명령을 디코딩하고 실행합니다. 그 기능은 명령 디코더 및 ALU를 사용하여 데이터에 대한 작업을 제어하는 ​​것입니다. EU는 위의 그림과 같이 시스템 버스와 직접 연결되어 있지 않으며 BIU를 통해 데이터에 대한 작업을 수행합니다.

이제 8086 마이크로 프로세서의 기능적 부분에 대해 살펴 보겠습니다.

ALU

+, −, ×, /, OR, AND, NOT 연산과 같은 모든 산술 및 논리 연산을 처리합니다.

플래그 등록

플립 플롭처럼 동작하는 16 비트 레지스터입니다. 즉 누산기에 저장된 결과에 따라 상태가 변경됩니다. 9 개의 플래그가 있으며 조건부 플래그와 제어 플래그의 두 그룹으로 나뉩니다.

조건부 플래그

마지막으로 실행 된 산술 또는 논리 명령어의 결과를 나타냅니다. 다음은 조건부 플래그 목록입니다-

  • Carry flag −이 플래그는 산술 연산에 대한 오버플로 조건을 나타냅니다.

  • Auxiliary flag− ALU에서 작업이 수행되면 하위 니블 (예 : D0 – D3)에서 상위 니블 (예 : D4 – D7)으로 캐리 / 배로 우가 발생합니다. 그러면이 플래그가 설정됩니다. 즉, D3 비트에서 D4로 주어진 캐리는 AF 플래그. 프로세서는이 플래그를 사용하여 바이너리에서 BCD 로의 변환을 수행합니다.

  • Parity flag−이 플래그는 결과의 패리티를 표시하는 데 사용됩니다. 즉, 결과의 하위 8 비트에 1이 짝수 인 경우 패리티 플래그가 설정됩니다. 홀수 1의 경우 패리티 플래그가 재설정됩니다.

  • Zero flag −이 플래그는 산술 또는 논리 연산의 결과가 0 일 때 1로 설정되고, 그렇지 않으면 0으로 설정됩니다.

  • Sign flag −이 플래그는 결과의 부호를 보유합니다. 즉, 연산 결과가 음수이면 부호 플래그가 1로 설정되고 그렇지 않으면 0으로 설정됩니다.

  • Overflow flag −이 플래그는 시스템 용량 초과시 결과를 나타냅니다.

제어 플래그

제어 플래그는 실행 단위의 작업을 제어합니다. 다음은 제어 플래그 목록입니다-

  • Trap flag− 단일 스텝 제어에 사용되며 사용자가 디버깅을 위해 한 번에 하나의 명령을 실행할 수 있습니다. 설정되어 있으면 프로그램을 단일 단계 모드로 실행할 수 있습니다.

  • Interrupt flag− 인터럽트 활성화 / 비활성화 플래그입니다. 즉, 프로그램 중단을 허용 / 금지하는 데 사용됩니다. 인터럽트 가능 조건은 1, 인터럽트 불가능 조건은 0으로 설정됩니다.

  • Direction flag− 문자열 연산에 사용됩니다. 이름에서 알 수 있듯이 문자열 바이트는 상위 메모리 주소에서 하위 메모리 주소로, 그 반대의 경우에도 액세스됩니다.

범용 레지스터

8 개의 범용 레지스터, 즉 AH, AL, BH, BL, CH, CL, DH 및 DL이 있습니다. 이 레지스터는 8 비트 데이터를 저장하기 위해 개별적으로 사용할 수 있으며 16 비트 데이터를 저장하기 위해 쌍으로 사용할 수 있습니다. 유효한 레지스터 쌍은 AH와 AL, BH와 BL, CH와 CL, DH와 DL입니다. 각각 AX, BX, CX 및 DX라고합니다.

  • AX register− 누산기 레지스터라고도합니다. 산술 연산을위한 피연산자를 저장하는 데 사용됩니다.

  • BX register−베이스 레지스터로 사용됩니다. 데이터 세그먼트 내 메모리 영역의 시작 기본 주소를 저장하는 데 사용됩니다.

  • CX register− 카운터라고합니다. 루프 카운터를 저장하기 위해 루프 명령에서 사용됩니다.

  • DX register −이 레지스터는 I / O 명령을위한 I / O 포트 주소를 저장하는 데 사용됩니다.

스택 포인터 레지스터

이것은 16 비트 레지스터로, 세그먼트의 시작부터 가장 최근에 스택에 저장된 단어가있는 메모리 위치까지의 주소를 보유합니다.

BIU (버스 인터페이스 장치)

BIU는 주소 전송, 메모리에서 명령 가져 오기, 포트 및 메모리에서 데이터 읽기, 포트 및 메모리에 데이터 쓰기와 같은 EU 버스의 모든 데이터 및 주소 전송을 처리합니다. EU는 시스템 버스와 방향 연결이 없으므로 BIU로 가능합니다. EU 및 BIU는 내부 버스로 연결됩니다.

그것은 다음과 같은 기능 부분을 가지고 있습니다-

  • Instruction queue− BIU는 명령 대기열을 포함합니다. BIU는 최대 6 바이트의 다음 명령어를 가져 와서 명령어 대기열에 저장합니다. EU가 명령어를 실행하고 다음 명령어를 준비 할 때이 명령어 대기열에서 명령어를 읽기만하면 실행 속도가 빨라집니다.

  • 현재 명령어가 실행되는 동안 다음 명령어를 가져 오는 것이 호출됩니다. pipelining.

  • Segment register− BIU에는 CS, DS, SS & ES와 같은 4 개의 세그먼트 버스가 있습니다. 프로세서가 메모리 위치에 액세스하는 데 사용하는 메모리의 명령어 및 데이터 주소를 보유합니다. 또한 EU에서 실행할 다음 명령어의 주소를 보유하는 1 개의 포인터 레지스터 IP를 포함합니다.

    • CS− Code Segment를 의미합니다. 실행 프로그램이 저장되는 메모리의 코드 세그먼트에서 메모리 위치를 지정하는 데 사용됩니다.

    • DS− 데이터 세그먼트를 의미합니다. 프로그램에서 사용하는 데이터로 구성되며 오프셋 주소 또는 오프셋 주소를 보유하는 다른 레지스터의 내용에 의해 데이터 세그먼트에서 액세스됩니다.

    • SS− Stack Segment를 의미합니다. 실행 중에 데이터와 주소를 저장하기 위해 메모리를 처리합니다.

    • ES− Extra Segment를 의미합니다. ES는 추가 데이터 세그먼트로, 추가 대상 데이터를 보유하기 위해 문자열에서 사용됩니다.

  • Instruction pointer − 실행할 다음 명령어의 주소를 저장하는 데 사용되는 16 비트 레지스터입니다.