Template modo real
IF677 - Infra-Estrutura de Software Centro de Informática - UFPE
Autor: Thyago Porpino (tnp)
Objetivos
● ● ● Desmistificar o processo de inicialização de um computador. Entender como um Sistema Operacional vem a ser executado. Introduzir programação em assembly.
Programação no Modo Real
O IBM PC original utilizava uma CPU Intel 8088 com um único modo de operação, modo esse que é mantido até hoje nos processadores, tudo para não quebrar a compatibilidade com os softwares da época. Esse modo de operação, originário no 8086, é conhecido como modo real (16 bits), e contrasta com o modo protegido (32 ou 64 bits) que é usado por sistemas operacionais atuais. Todos os descendentes do IBM PC original realizam o boot no modo real, e é normalmente, trabalho do bootloader entrar no modo protegido e transferir controle para o kernel. Em um ambiente sem um SO, como é o caso do ambiente encontrado por um bootloader, é necessário utilizar-se de serviços da BIOS para realizar as mais variadas funções (e.g. acessar o disco, imprimir na tela, etc).
Segmentação no Modo Real
O processador 8086 foi projetado para suportar um espaço de endereçamento de 20 bits, isto é, é capaz de endereçar 2^20 bits (1 MB). Já que o 8086 é formado por registradores de 16 bits, todos os acessos de memória suportam apenas operandos de 16 bits. Para acessar todo o espaço de endereçamento (1 MB), em tese são necessários registradores de 20 bits, porém o 8086 só possuía registradores de 16 bits, então a técnica de segmentação foi utilizada, que combinava 2 registradores de 16 bits para que fosse possível o endereçamento de 1 MB de memória. No modo real, os registradores de segmento contêm um endereço base de um segmento, e são usados para achar o endereço linear (físico) na memória, da seguinte forma:
(segment reg.)*16 + offset = linear address OBS: Lembrando que multiplicar por 16 (decimal) é a mesma coisa que fazer 4 shifts para a esquerda, ou 1 shift (em