Está en la página 1de 17

UNIVERSIDADE CATÓLICA DE ANGOLA

FACULDADE DE ENGENHARIA

LICENCIATURA EM ENGENHARIA DE TELECOMUNICAÇÕES

SISTEMAS DIGITAIS E COMPUTADORES II

ARQUITECTURA DO MICROPROCESSADOR
8086

Maria Alfredo – 1000029832

Luanda/Angola

2022
TERMO DE APROVAÇÃO
Maria Alfredo E1000029832 ………………………………………….…………….. ( )

ARQUICTETURA DO MICROPROCESSADOR 8086

Aprovado em:____/____/2022

DOCENTE

__________________________________

MSc Nédio Caetano


LISTA DE SIGLAS E ABREVIATURAS
AX – Accumulated extended

BIOS – Basic Input/ Output System

BP – Base Pointer

BX – Base extended

CS – Code Segment

CX – Count extended

DI – Destination Index

DS – Stack Pointer

DX – Data extended

ES – Extra Data Segment

IP – Instruction Pointer

SI – Source Index

SP – Stack Pointer

SS – Stack Segment
LISTA DE FIGURAS
Figura 1 – Diagrama de blocos da arquitectura do microprocessador 8086 .............................. 2

Figura 2 – Esquema da arquitectura interna do microprocessador 8086 .................................... 3

Figura 3 – Esquema de registradores de estado do microprocessador 8086 .............................. 5

Figura 4 – Endereçamento de memória ...................................................................................... 7


ÍNDICE
INTRODUÇÃO .......................................................................................................................... 1

CAPÍTULO 1 – ARQUICTETURA DO MICROPROCESSADOR 8086 ................................ 2

1.1. COMPONENTES DA ARQUICTETURA ................................................................. 2

1.2. INTERRUPÇÕES ........................................................................................................ 5

1.3. GESTÃO DE MEMÓRIA ........................................................................................... 6

1.4. ORGANIZAÇÃO DO PC ........................................................................................... 7

CAPÍTULO 2 – PROGRAMAÇÃO ASSEMBLY PARA O MICROPROCESSADOR 8086. 8

2.1. REGISTO DE SINALIZAÇÃO ...................................................................................... 8

2.2. INSTRUÇÕES DE CONTROLO DE FLUXO ............................................................... 9

2.3. INSTRUÇÕES LÓGICAS E DE DESLOCAMENTO ................................................... 9

2.4. PILHA E PROCEDIMENTOS ..................................................................................... 10

CONCLUSÃO .......................................................................................................................... 11

REFERÊNCIAS BIBLIOGRÁFICAS ..................................................................................... 12


INTRODUÇÃO
Os microprocessadores são componentes do computador que incorporam as funções
de uma unidade de processamento central (CPU) em um único circuito integrado (CI). O
microprocessador é um dispositivo lógico programável digital, baseado em registradores.
Actua sobre o controle de um programa armazenado em memória o Sistema operacional, e um
relógio, ou clock, executando operações aritméticas, lógica booleana, tomada de decisão,
além de entrada e saída, e permitindo a comunicação com outros dispositivos periféricos.

Existem actualmente inúmeras famílias destes dispositivos, das mais antigas, ás mais
recentes, das mais sofisticadas, às mais simples. Neste trabalho vamos abordar sobre a família
x86.

1
CAPÍTULO 1 – ARQUICTETURA DO
MICROPROCESSADOR 8086
1.1. COMPONENTES DA ARQUICTETURA
O microprocessador 8086 está dividido em duas unidades: a BIU (Bus Interface Unit –
unidade de interface de barramento de dados) e a EU (Execution Unit – unidade de execução).
[1]

Bus Interface Unit: unidade responsável por efectivar todas as operações de transferências
de endereços e de dados por meio do barramento de dados e dos registradores de
deslocamento (CS, DS, SS, ES e IP) para efectivar operações na memória, além de
estabelecer comunicação com o barramento de controle lógico por meio dos barramentos de
endereço e de dados no sentido de acessar o barramento externo e se comunicar com os
periféricos agregados ao equipamento. [1]

Execution Unit: unidade que comunica-se por meio do barramento de dados da ALU
(Arithnetic Logic Unit – unidade lógica e aritmética) com a unidade BIU e informar o local
onde os dados ou instruções serão executados e em quais endereços. Esta unidade opera sobre
os registradores gerais e registradores de estados (flags). Todas as operações da unidade de
execução ALU e pela EU Control System (unidade de controlo de execução do sistema). [1]

Figura 1 – Diagrama de blocos da arquitectura do microprocessador 8086

2
O microprocessador 8086 utiliza registradores para efectivar o armazenamento
temporário de dados em memória, os quais serão manipulados por intermédio de um
programa. O registrador está intimamente relacionado com a estrutura do microprocessador
em uso. Para cada tipo de microprocessador existe uma forma específica de tratar o conceito.
[1]

Um microprocessador padrão 8086 possui 14 registradores divididos em 4 grupos,


sendo eles:

- Registradores gerais (AX, BX, CX, DX)

- Registradores de segmento (CS, DS, ES, SS)

- Registradores de ponteiros (SI, DI, SP, BP, IP)

- Registradores de estado (Flags) [1]

Figura 2 – Esquema da arquitectura interna do microprocessador 8086

1.1.1. Registradores Gerais

Os registradores gerais (AX, BX, CX, DX) são utilizados com a finalidade de
armazenar dados a serem processados, possuem 16 bits de dados, e cada um desses pode ser

3
dividido em duas partes, cada uma com 8 bits, parte mais significativa (do bit 8 até o bit 16),
lado esquerdo e parte menos significativa (do bit 0 até o bit 7), lado direito. [1]

Registrador geral AX (AH-AL): utilizado em operações aritméticas e lógicas,


acessos de portas de entrada e saída, chamadas de interrupções, transferências de dados, entre
outas possibilidades. Este é o principal registrador usado na manipulação de dados. [1]

Registrador geral BX (BH-BL): utilizado como ponteiro para acessar a memória


(apontador de endereço) no sentido de obter algum valor de retorno ou mesmo definir valores
que serão usados para auxiliar operações aritméticas, além de servir de base para instruções
que operem com vectores de dados. [1]

Registrador geral CX (CH-CL): utilizado para receber alguns valores de


interrupções, mas sua principal finalidade é servir como contador de lações de repetição e
operações de deslocamento (shift) registadas normalmente em CL. [1]

Registrador geral DX (DH-DL): utilizado em operações aritméticas (para


armazenamento da parte de um produto de 32 bits e armazenamento do resto da divisão),
acessos de portas de entrada e de saída, acessos a portas lógicas e em chamadas de
interrupções e apontamentos de endereços de memória para deslocamentos. [1]

1.1.2. Registradores de Segmento

São utilizados para acessar uma determinada área de memória, ou seja, para auxiliar o
microprocessador a encontrar o caminho pela memória do computador. Diferente dos
registradores gerais estes não podem ser divididos em registradores de 8 bits. Os
registradores de segmento são:

Registrador de segmento CS: aponta para uma área de memória que contém o
segmento de código de programa que se encontra em execução.

Registrador de segmento DS: aponta para a área de memória que geralmente é


utilizada para o armazenamento dos dados do programa em execução.

Registrador de segmento ES: determina um segmento extra de endereço de dados


(um novo segmento, ou seja, um segmento far pointer) distante da área em que se está
operando.

Registrador de segmento SS: Identifica a área da memória que será usada como pilha
(stack). [1]

4
1.1.3. Registrador de Deslocamento

São registradores que permitem o acesso a uma determinada posição de memória


previamente conhecida, com a utilização dos registradores de segmento. [1]

Dos cinco registradores de deslocamento (apontamento), quatro são manipuláveis, que


são: SI (Source Índex – Índice de origem), DI (Destination Índex – Índice de destino), SP
(Stack Pointer – Ponteiro de pilha) e o BP (Base Pointer – Ponteiro de base). [1]

O registrador de deslocamento IP (Instruction Pointer – ponteiro de instrução)


conhecido como apontador da próxima instrução, não é manipulável, é de uso interno do
microprocessador e tem por finalidade guardar o deslocamento (offset) da próxima instrução
de um programa a ser executado. [1]

1.1.4. Registrador de estado (status flags)

São registradores que sinalizam a efetivação de operações lógicas, aritméticas,


manipulação de blocos e interrupções, pois indicam o estado de comportamento do
microprocessador.

Figura 3 – Esquema de registradores de estado do microprocessador 8086

1.2. INTERRUPÇÕES

Ocorrem quando um processamento precisa ser interrompido para atender a chamada


de um novo processamento, então vai ocorrer a suspensão do processo que está sendo
executado no momento.

5
O processamento de interrupções é fundamental para o funcionamento adequado de
um computador. É por meio das interrupções que se torna possível controlar vários
dispositivos associados ao computador. [1]

Os tipos de interrupções que podem ser executadas num computador com o


microprocessador 8086 são divididas em três categorias, a saber:

Interrupção por hardware: são gerenciadas pelo próprio computador, assim sendo,
não é possível modificar seu estado de comportamento. Possibilita accionar periféricos
externos, como unidades de disco, teclado, impressora, porta de comunicação etc. este tipo de
interrupção conecta-se (comunica-se) ao microprocessador pelas linhas de comunicação de
IRQ (Interrupt ReQuest – pedido de interrupção) que são controladas pelas rotinas de sistema
operacional pela ROM-BIOS. [1]

Interrupção por excecão: possibilita fazer o controle condicional interno do


microprocessador, retomando algum tipo de erro. [1]

Interrupção por software: efectua o accionamento de determinadas interrupções


desejadas por intermédio de um programa em execução, podendo interferir na acção de algum
periférico conectado ao microcomputador. [1]

1.3. GESTÃO DE MEMÓRIA

A memória de um computador tem como função primária a tarefa de armazenar dados


e executar programas. Para que isso ocorra, essa memória é formada por um grande conjunto
de células de armazenamento, e cada célula é formada por um conjunto de 8 bits, podendo
assumir um dos 256 significados existentes. Cada célula que compõem a memória tem um
endereço absoluto de sua posição. [1]

6
Figura 4 – Endereçamento de memória

1.4. ORGANIZAÇÃO DO PC
Algumas funções básicas de um PC (Personal Computer) são:

- Ler e executar comandos digitados pelo usuário no teclado;

- Realizar operações de E/S;

- Gerenciar a memória (primária e secundária) e outros recursos.

BIOS (Basic Input/ Output System):

- São extremamente relacionadas à configuração do hardware;


- Realizam a carga do DOS na memória;
- Realizam a verificação funcional dos circuitos do PC;
- Responsável por carregar o programa de boot (durante a inicialização).

7
CAPÍTULO 2 – PROGRAMAÇÃO ASSEMBLY PARA O
MICROPROCESSADOR 8086
2.1. REGISTO DE SINALIZAÇÃO
Os registradores de sinalização indicam o estado do microprocessador durante a execução de
cada instrução, subdividem-se em FLAGS de estado e FLAGS de controle.

As FLAGS DE ESTADO

CF (Flag de Carry): está em nível lógico alto “1” após instruções de soma que geram
“vai um” e instruções de subtracção que não geram “empréstimo”. Caso contrário fica em
nível lógico baixo “0”.

PF (Flag de Paridade): está em nível lógico alto “1” quando o byte inferior do
resultado de alguma operação aritmética ou lógica apresentar um número par de “1´s”. Caso
contrário (número impar).

AF (Flag de Carry Auxiliar): utilizado em instruções com números BCD, está em


nível lógico alto “1” caso exista o “vai um” do bit 3 para o bit 4 de uma adição caso não exista
“empréstimo” do bit 4 para o bit 3 numa subtracção. Caso contrário fica em nível lógico
baixo.

ZF (Flag de Zero): está em nível lógico alto “1” caso o resultado da última operação
aritmética ou lógica seja igual a zero. Caso contrário permanece em nível lógico baixo “0”.

SF (Flag de Sinal): utilizado para indicar se o resultado é positivo ou negativo em


termos de aritmética em complemento de 2 (se não ocorrer erro de transbordamento -
overflow). Está em nível lógico alto “1” se o número for negativo, e em nível lógico baixo “0”
se o número for positivo.

OF (Flag de Overflow): Está em nível lógico alto “1” quando uma operação produz
overflow, caso contrário permanece em nível lógico baixo “0”.

As FLAGS DE CONTROLE

TF (Flag de Trap): após a execução da próxima instrução, ocorrerá uma interrupção;


a própria interrupção faz TF=0.

IF (Flag de Interrupção): Está em nível lógico “1” quando habilita a ocorrência de


interrupções e, em nível lógico baixo “0” quando inibe interrupções tipo INT externas.

8
DF (Flag de Direção): usado para indicar a direcção em que as operações com strings
são realizadas.

DF = 1; Decremento do endereço de memória (DOWN).

DF = 0; Incremento do endereço de memória (UP).

2.2. INSTRUÇÕES DE CONTROLO DE FLUXO

 MOV destino, fonte

Usado para transferir dados entre: registrador e registrador, registrador e uma posição de
memória, mover um número directamente para um registrador ou posição de memória.

Exemplo de instruções válidas:

MOV AX, WORD1 → movimenta o conteúdo da posição de memória WORD1 para o


registrador AX.

MOV AX, CS → transfere uma cópia do conteúdo de CS para AX

OBS: para a instrução MOV não é permitido operar de posição de memória para posição de
memória directamente.

 XCHG destino, fonte

Usada para trocar dados (nos dois sentidos) entre: registrador e registrador, registrador e uma
posição de memória, não é permitido trocas directas entre posições de memória.

Exemplo de instruções válidas:

XCHG AX, WORD1 → troca o conteúdo da posição de memória WORD1 com o do


registrador AX.

 IN e OUT – instruções Assembly para acessar portas de E/S para periféricos.

2.3. INSTRUÇÕES LÓGICAS E DE DESLOCAMENTO

 INC destino e DEC destino

Usadas para adicionar 1 (incrementar) ou subtrair 1 (decrementar) ao/do conteúdo de um


registrador ou uma posição de memória.

Exemplo:

INC CX → incrementa o conteúdo de CX

9
INC WORD1 → incrementa o conteúdo da posição de memória WORD1

 NEG destino

Usada para substituir o conteúdo destino pelo seu complemento de 2, operando sobre um
registrador ou uma posição de memória.

Exemplo:

NEG BX → gera o complemento de 2 do conteúdo de BX

2.4. PILHA E PROCEDIMENTOS

Segmento de dados: contem a definição e declaração das variáveis. Pode-se também fazer a
atribuição de símbolos para constantes.

Sintaxe: .DATA

Segmento de pilha (stack segment): reserva um bloco de posições de memória consecutivas


para armazenar a pilha. Deve ter espaço suficiente para suportar a pilha no seu máximo
tamanho.

Sintaxe: .STACK

Segmento de código: contem propriamente as instruções do programa, dentro do segmento


de código, as instruções são organizadas em procedimentos.

Sintaxe: .CODE

10
CONCLUSÃO
É importante entender a arquitectura do microprocessador 8086 para entender a sua
programação em Assembly. Vimos que a sua arquitectura é dividida em duas principais partes
que são a BIU (unidade de interface de barramentos de dados) e a EU (unidade de execução).
Possui registradores, que são memórias de armazenamento temporário, registradores gerais,
registradores de segmento, registradores de deslocamento (apontamento) e registradores de
estado (também conhecidos como flags).

11
REFERÊNCIAS BIBLIOGRÁFICAS
[1] – José Augusto N. G. Manzano - Linguagem Assembly: Introdução ao Padrão Intel 8086,
- São Paulo – 2021.

12

También podría gustarte