Processador 8088
Versão simplificada do processador 8086. Usa registradores de 16 bits, invés de 32 bits. Criado devido ao alto custo de produção do 8086. Usado na versão original do IBM PC. Base do Pentium.
Processador 8088
Possui 1mb de memória. Registradores não possuem bits suficientes para
endereçar toda memória. Divide a memória em segmentos de 64kb. Seriam necessários 20 bits para endereçar toda
memória.
Ciclo do Processador A execução de uma única instrução segue as seguintes
etapas:1.Buscar instrução na memória no segmento de código usando
PC.2.Incrementar o PC.3.Decodificar a instrução buscada.4.Buscar os dados necessários na memória e/ou nos
registradores do processador.5.Executar a instrução.6.Armazenar os resultados da instrução na memória e/ou
registradores.7.Voltar à etapa 1 para iniciar a próxima instrução.
Registradores
Possui registradores do seguinte tipo: De propósito geral. De ponteiros. De flag. De segmento.
Não deixa de ser um ponteiro.
Registradores – Propósito Geral
AX (AH, AL) É denominado registrador acumulador. Usado para coletar resultados. Alvo de muitas instruções. Geralmente é o destino implicito de instruções.
Ex. instrução de multiplicação.
Registradores – Propósito Geral
BX (BH, BL) Conhecido como registrador de base. Pode conter endereços.
AX não é capaz de armazenar endereços.
MOV AX,BX
MOV AX,(BX)
O conteúdo de BX é copiado para AX.
O conteúdo da posição de memória apontada por BX é copiado para AX.
Registradores – Propósito Geral
CX (CH, CL) Conhecido como registrador de contadores. É usado na contagem de loops. É automaticamente decrementado na instrução
LOOP. Os loops, geralmente, são encerrados quando CX
chega a zero.
Registradores – Propósito Geral
DX (DH, DL) Chamado de registrador de dados. Usado em conjunto com AX em instruções de
comprimento de palavra dupla (32 bits). DX contém os 16 bits de ordem alta. AX contém os 16 bits de ordem baixa.
Registradores - Ponteiros
PC Program Counter, aponta para a próxima instrução
a ser executada. Conhecido também como IP (Instruction Pointer). Sempre aponta para o segmento de código. Não é endereçado pelas instruções. Incrementado antes da instrução ser executada.
Já aponta para a próxima instrução.
Registradores - Ponteiros
SP Conhecido como registrador de ponteiro de
pilha. Aponta para o topo da pilha. Incrementado/decrementado após instruções que
modificam a pilha. MOV e CALL decrementam o valor de SP. POP incrementa o valor SP.
Registradores - Ponteiros
BP Conhecido como registrador de base. Geralmente contém um endereço dentro do
segmento de pilha. Enquanto SP armazena o topo, BP armazena o
início da pilha. O quadro de pilha é delimitado por BP e SP.
Registradores - Ponteiros
SI Índice de fonte.
DI Índice de destino.
Usados em conjunto com BP. Endereça dados na pilha.
Usados em conjunto com BX. Calcula os endereços de localização de dados na
memória.
Registradores - Flag
É na verdade um conjunto de registradores de um bit.
A maioria está relacionada ao resultados de instruções aritméticas.
Nem todos os bits são usados. Estão ligados, eletricamente, ao valor zero.
Registradores - Flag
Z – Resultado é zero.S – Resultado é negativo (bit de sinal).V – Resultado gerou um excesso.C – Resultado gerou um “vai-um”.A - “vai-um” auxiliar (vai-um do bit 3).P – paridade do resultado.I – Habilita interrupção.T – Habilita modo rastreamento (depuração).D – Direção das operações de cadeia.
Registradores - Segmento
CS Code Segment Informa onde o segmento de código começa dentro
da memória. Um novo segmento pode ser ativado com uma
simples mudança do valor armazenado no registrador.
Registradores - Segmento
DS Data Segment Informa onde o segmento de dados começa dentro
da memória. Pode ser alterado para acessar dados fora do
segmento correspondente.
Registradores - Segmento
SS Stack Segment Informa onde o segmento de pilha começa dentro
da memória.
Registradores - Segmento
Geralmente não são alterados. Na prática, o segmento de dados e de pilha
usam a mesma porção de memória. O segmento de dados na parte inferior. Segmento de pilha no topo.
Memória
Não é capaz de endereçar toda a memória. Divide a memória em segmentos. Utiliza segmentos de 64kb.
Consiste de um vetor de bytes de 8 bits endereçáveis.
Usada para armazenamento de instruções, dados e pilha.
Segmento de Código
Contém as instruções do programa. O conteúdo do PC é sempre interpretado como
um endereço de memória no segmento de código.
Um PC de valor zero, se refere ao endereço mais baixo do segmento de código. Não se refere ao endereço absoluto zero.
Segmento de Dados
Contém os dados do programa. Inicializados. Não-inicializados.
Quando BX contém um ponteiro, aponta sempre para o segmento de dados.
Segmento de Pilha
Contém variáveis locais e resultados intermediários.
Os endereços de SP e BP estão sempre dentro deste segmento.
Composto por palavras de 2 bytes. SP deve conter número par. SP incrementa/decrementa de 2.
Pilha (Stack)
A pilha contém informações de contexto sobre o programa em execução.
Geralmente quando um procedimento é chamado, uma parte da pilha é reservada para: Variáveis locais do procedimento. Endereço de retorno. Outras informações de controle.
Pilha (Stack) A porção da pilha relativa a um procedimento é
chamada de quadro de pilha. Quando um procedimento chama outro
procedimento, um quadro adicional é alocado. Normalmente, logo abaixo do quadro corrente.
Geralmente cresce do endereço mais alto para o mais baixo. Endereço mais baixo é chamado de topo da pilha.
Segmento Extra
Registrador de segmentos avulsos.
Pode ser alocado em qualquer lugar da memória onde seja necessário.
Top Related