Menu

Modo Real

24 de setembro de 2015 - Fundamentos

Modo Real

MODO REAL

Se existe um mundo que todos usuários windows não conhecem é o chamado modo real, sim ! não se espante, mas o mundo Windows é um mundo ilusório, porque tudo passa pelo crivo do microsoft Windows, se você espetar um cabo atras do computador, o windows vai saber, se você teclar qualquer coisa, o windows vai saber, se você executar um programa, ele precisa informar o windows, caso contrário ele simplesmente não funciona ! e pior, se ele não informar direitinho, o windows pode cataloga-lo como vírus ! Mas então, existe um mundo fora do Windows ? Sim ! existe, e é o mundo real, é o chamado “Modo Real“, quando um programa roda no PC com instruções assembly conversando diretamente como  Hawrdware, como por exemplo:

IN  AL, 60h

Esta isntrução lê a porta 60 que é do teclado, se o windows não estiver sendo executado, isto vai acontecer ! mas se tentar usar isto dentro do Windows, ele não vai deixar ! porque o Windows SEMPRE ! quer saber de tudo, ele quer que você peça a ela informações sobre o teclado, e não saia lendo por si mesmo, parece o mundo comunista da coreia do norte com um governo controlador ? é engraçado, mas é assim ! na verdade, este mundo de controle absoluto tornou a vida mais fácil, veja bem ! antes para ler qualquer dispositivo, era necessário aber como o dispositivo foi fabricado, hoje , basta pedir ao windows que ele já sabe de tudo.

Então não é possível rodar um programa em Linguagem Assembly par ao “Modo Real” (absolutamente puro) e rodar no Windows, ele vai barrar como um ditador norte coreano.

 

Para que serve o modo Real ?

Para muitas situações, trabalhar com o Windows não interessa, é necessário conversar diretamente com o hardware para obter o máximo de rapidez e performance, sem precisar de um intermediário que vai onerar e deixar o tempo de resposta mais demorado.
Um exemplo de modo real é o BIOS, quando ligamos o PC a primeira coisa que acontece é rodar o programa que está no BIOS, logo após isto, o BIOS chama o Disco Rígido que está o Windows, aí então é que o Windows começa a rodar, todos programas para BIOS estão em modo absolutamente REAL.

assembly-para-msdos

Antigamente tudo era Real

Antes do Windows imperar no mundo do PC, tudo era para o modo real, todos programas se comunicavam diretamente com o hardware, não existia um intermediário, e para controlar tudo isto, existia o D.O.S. (Disk Operational System), basicamente uma tela preta que aceitava comandos pelo teclado. Desde que o WIndows foi lançado no inicio dos anos 90, e quando ele praticamente eliminou o D.O.S. em 1995, e foi neste ano no Brasil que não se via mais nenhum PC rodando D.O.S., todos os programas foram trocados por soluções para Windows, a linguagem na época do D.O.S. que era Pascal, C , Clipper foram trocadas pelo Delphi, VB em sua maioria, e na época a Internet necessitava do PHP que é usado até hoje.

Hoje tudo que sobou é o PROMPT DE COMANDO (comandos CMD), é uma espécie de EMULAÇÂO DO MODO REAL (Emulação do DOS).

prmpt de comando

Programas .COM ( Extensão .COM)

Programas .COM não tem nada ver com a tecnologia COM que é usada no Windows, refere-se ao tipo de arquivo que eram os executáveis do modo real, seu tamanho máximo era de 64K, parece pouco, qualquer imagem outro tem mais que isto …mas para um ambiente sem gráfico, era razoavelmente satisfatório ! grandes software usavam um método chamado OVERLAY, ou seja, ele divida o programa em varias partes de 64K e chamava aquele que iria ser usado no momento.

Programas .COM

A memória do PC chegava a quase 1 mega (na verdade 640K), havia uma arena chamada “memória alta” que era o espaço entre 640K e 1 Mega, o problema do PC não usar isto, é o modo como ele gerencia a memória, que é o método SEGMENTADO da Intel (SEGMENTO:OFFSET).

menmória do modo real

Este método segmento pode deixar as coisas bem complicadas para entender, mas se você imaginar uma matriz, fica fácil,basicamente todo endereço segue 2 numeros 00001:00001, depois 00001:00002, e assim vai …o número antes dos dois pontos (:) é o Segmento, o número depois dos dois pontos é o OFFSET (ou deslocamento).

inicio da memória

E como ficava o segmento de dados, stack e codigo do program ? era tudo no mesmo segmento de 64K, não havia algo com:
DS: Endereço, CS:Endereço, SS: Endereço que é visto em programas .EXE atuais, o CODE SEGMENT, DATA SEGMENT e STACK SEGMENTO não precisavam de valores informados, não era necessário porque DS,CS,SS tinham o mesmo valor, já que só poderiam ficar dentro dos 64K.

Estruturas programas .com

Estrutura de programas .COM de 64k

 

Exemplo de um programa .COM


 

Programas .EXE

É lógico que com o tempo os programas comem mais e mais memória, pessoalmente acho que o que sempre faz aumentar a memória é os recursos gráficos para games, muito mais que a necessidade comercial, os programas .EXE ocupam muito mais memória, porque cada parte do programas ocupa 1 Segmenti, então podemos ter um programa.EXE com tamanhos enormes.

Sem este recurso de colocar partes do mesmo programa em diversos segmentos o Windows não poderia ter existido, ou seria tão lento que seria inviável.

alocamento de programa na memória

BIOS

O BIOS vai fazer você entender defintivamente porque o modo REAL, é REALMENTE REAL ! ele é o que existe de puro, e quando ligamos o computador, o primeiro programa que roda é aquele gravado no CHIP BIOS (Basic Input Ouput System), ele vai se encarregar de configurar o PC, e entregar o processamento para o sistema operacional instalado, seja ele WIndows, Linux, Free, etc.. E este programa do BIOS roda exatamente na memória real (abaixo de 1 mega), e começa ser executado no endereço FFFF;0h 

Inicio do BIOS

Sim, u BIOS usa o topo da memória real, FFFF:0, mas observe que depois faz um JMP para FFFF:E05B, este espaço todo será abandonado depois que o BIOS entregar o controle para o Sistema Operacional presente no PC.

 

 

Veja mais como programar em modo real neste artigo

 

Linux é modo Real ?

O linux em modo de texto é o que mais se aproxima do modo real ! enquanto o D.O.S. sumiu absolutamente, ainda temos o Linux em modo texto para fazer acesso ao hardware com o máximo de performance, por isto, se você pensa em um produto de alta performance, esqueça o Windows, instale o linux e seja feliz, seu programa em modo real vai rodar no Linux com sucesso, já que as interrupções do modo real acessam rotinas do BIOS que é comum para qualquer sistema operacional.

A LInguagem Assembly pode fazer coisas fantásticas no modo texto do Linux, mas este mesmo código pode ser portado para o WIndows se você colocar dentro de uma rotina e não fazer acessos de entrada e saida (I/O) diretametne no hardware.

3 thoughts on “Modo Real

Carlos Roberto da silva

novamente é show de bola e presisamos de mais programadores

Ruazres

Poderia ter mais exemplos de códigos para Assembly, como somatória de dois números, média aritmética, uma coisa que ajudasse mais.

Deixe um comentário