Linguagem de Montagem Organização do PC Slides baseados em material associado ao livro Introduction to Assembly Language Programming, Sivarama Dandamudi 1
Processador Pentium Lançado em 1993 Versão melhorada do 80486 Barramento de endereços de 32 bits (4GB) Barramento de dados de 64 bits Todos os registradores internos são de 32 bits Tamanho da palavra de 32 bits Todas as instruções operam sobre operandos de, no máximo, 32 bits 2
Processador Pentium (cont.) Registradores do Pentium O Pentium possui dez registradores de 32 bits e seis de 16 bits Internos ao processador Provêem acesso rápido aos dados Estes registradores são agrupados em: Registradores de Uso Geral Registradores de dados Registradores apontadores Registradores indexadores Registradores de Controle (Flags) Registradores de Segmentos 3
Processador Pentium (cont.) Registradores de Dados Quatro registradores de 32 bits Podem ser usados como Quatro registradores de 32 bits (EAX, EBX, ECX, EDX) Quatro registradores de 16 bits (AX, BX, CX, DX) Oito registradores de 8 bits (AH, AL, BH, BL, CH, CL, DH, DL) Uma combinação válida destes 4
Processador Pentium (cont.) Registradores Apontadores e Indexadores Quatro registradores Dois em cada grupo Podem ser usados tanto como registradores de 16 ou 32 bits Registradores Apontadores Usados para manter a pilha Registradores Indexadores Podem ser usados como registradores de dados de uso geral Desempenham papel importante nas operações com cadeias de caracteres 5
Processador Pentium (cont.) Registradores de controle (operações do processador) (operações de strings) (operações lógicas e aritméticas) (program counter) 6
Processador Pentium (cont.) Registradores de Segmento Necessários para dar suporte à organização de memória segmentada do Pentium 7
Arquitetura de Memória do Pentium Dois modos Modo Real Usa endereços de 16 bits Suporta arquitetura de memória segmentada Provê compatibilidade com códigos escritos para 8086 Modo Protegido Modo nativo do Pentium Usa endereços de 32 bits Suporta conceitos de S. O. como segmentação e Paginação Paginação é útil para implementar Memória Virtual Vamos trabalhar com programação Assembly usando apenas o modelo segmentado de memória em modo real 8
Arquitetura de Memória em Modo Real Arquitetura de Memória em Modo Real O Pentium opera como um 8086 muito mais rápido O 8086 possui 20 bits de endereçamento Todos os registradores são de 16 bits A memória é organizada em segmentos de até 64KB cada Devido ao tamanho dos registradores (2 16 = 64K) Dois componentes são necessários para especificar uma posição de memória Endereço base do segmento e deslocamento dentro do segmento (ambos números de 16 bits) 9
Arquitetura de Memória em Modo Real (cont.) O endereço base de 16 bits restringe o segmento a começar sempre em endereços múltiplos de 16 Segmentos iniciam apenas em endereços como 0, 16, 32, 48... 10
Arquitetura de Memória em Modo Real (cont.) Endereços lógicos consistem de dois componentes de 16 bits segmento:deslocamento O endereço físico é um número de 20 bits Tradução de endereço lógico para físico Acrescenta-se 4 zeros menos significativos ao endereço base Soma-se o valor do deslocamento Exemplo: Traduzir o endereço 1100:450 11000 (acrescenta-se zero ao endereço de segmento) 450 (valor do deslocamento) 11450 (endereço físico de 20 bits) 11
Arquitetura de Memória em Modo Real (cont.) 12
Arquitetura de Memória em Modo Real (cont.) Múltiplos endereços lógicos podem mapear para o mesmo endereço físico (endereço físico) (endereço físico) 1200:A9H 1000:20A9H 13
Arquitetura de Memória em Modo Real (cont.) Seis segmentos de memória em modo real * Programas podem acessar até 6 segmentos * Dois deles são: - Dados - Código * O outro tipicamente pilha * Demais segmentos: Usados p/ dados, código... 14
Arquitetura de Memória em Modo Real (cont.) Existem várias maneiras de posicionar segmentos na memória 15
Associação padrão de Registradores de Segmentos Pentium usa registradores diferentes dependendo do tipo de referencia à memória Apontador de próximas Instruções CS:(E)IP CS é o registrador de segmento base (de código) IP é o registrador de deslocamento (offset) Operações com a pilha (16-bit:SP, 32-bit:ESP) SS é o registrador de segmento base (de pilha) SP provê o deslocamento para operações como pop e push BP provê o deslocamento para outras operações Acessando Dados (ler ou escrever) DS é o registrador de segmento (de dados) Deslocamento (offset): depende do modo de endereçamento 16
Entrada/Saída E/S Diferentemente de uma linguagem de alto nível, LA não dispõem de interfaces sofisticadas de E/S (Ex.: funções scanf e printf do C) Controladores de E/S fornecem a interface necessária com dispositivos de E/S Gerenciam detalhes de baixo nível dependentes de cada dispositivo Fornecem os sinais elétricos com intensidade suficiente para garantir o correto funcionamento da comunicação 17
Entrada/Saída E/S (cont.) Registradores internos às unidades controladoras de E/S são usados no processo de comunicação 18
Entrada/Saída E/S (cont.) Os pontos de troca de dados entre processador e controladores de E/S são chamados de Portas de E/S Duas maneiras de mapear portas de E/S E/S mapeada em memória Portas de E/S são mapeadas no espaço de endereçamento de memória Ler e escrever E/S é similar a ler e escrever na memória Motorola 68000 usa este tipo de mapeamento E/S Isolada Espaço de E/S separado Requer instruções especiais para E/S Os processadores Intel suportam E/S isolada 19