30
Mitsuo Takaki 8088 Assembly Software Básico

Mitsuo Takaki

Embed Size (px)

DESCRIPTION

8088 Assembly. Software Básico. Mitsuo Takaki. 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. - PowerPoint PPT Presentation

Citation preview

Mitsuo Takaki

8088 AssemblySoftware Básico

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

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

ES Extra Segment Informa onde o segmento extra 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.

Memória

É dividida nos seguintes segmentos: Código. Dados. Pilha. Extra.

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.

Memória

Registradores de segmento sempre indicam múltiplos de 16, em um espaço de endereço de 20 bits.

Endereços dentro do segmento pode ser convertido em endereços reais. Multiplica-se o registrador de segmento por 16 e,

então, soma o deslocamento.