마이크로 프로세서-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 비트 레지스터입니다.