Menu

“Hello World” para DOS ( para modo REAL )

15 de agosto de 2015 - Praticando

“Hello World” para Modo Real ( para DOS )

Hello World Assembly

Modo Real de Programação

Vamos iniciar o Hello World da programação Assembly, se esta é a primeira vez aqui , deve dar uma olhada na primeira parte deste curso ( Curso Básico Assembly ) , lá você vai ter uma ideia fundamental de como a linguagem trabalha como Registradores, Stack, Memória, etc … se ainda não foi, vá lá, estude e depois volte aqui ! Se já sabe dos fundamentos da linguagem, então vamos para nossa Hello World Assembly.
Este primeiro Hello World, isto mesmo ! primeiro , porque teremos mais,Assembly está longe de ser uma linguagem simples, na verdade, também não tão complexa, mas exige mais do programador para poder desenvolver, existem vários setores onde ela se encaixa, você pode com ela fazer rotinas para sua linguagem de alto nível preferida, pode programar o BIOS, no MODO REAL ou paraWindows e Linux.

Este programa usa um só segmento de memória por padrão, e não tem definição deCS nem DS dentro dele, já que é um programa mínimo. ( Tiny ). Há muita vantagens de ter um código assim, um deles é que podemos inserir em qualquer lugar que desejamos, BIOS, como Rotina de linguagem de alto nível como Delphi, C, VB, etc.

 

Neste primeira parte, veremos um programa básico para o modo real que exibe a palavra Hello, copie o código abaixo dentro de um editor básico ( pode ser onotepad ) com o nome hello.asm , e também a rotina para compilar como nomecompile.bat (bloco abaixo do código ).

Espera-se também que você já tinha baixado e instalado o compilador MASM32 na raiz do sistema, ficando em: c:\masm32 .

 

hello.asm

.8086
.MODEL tiny

.CODE

ORG 100h

inicio:

mov ah, 0eh
mov al, 41h ; A
int 10h

mov ah, 0eh
mov al, 4Ch ; L
int 10h

mov ah, 0eh
mov al, 4Fh ; O
int 10h
int 20h
END inicio

 

ascii

No código acima vemos .Tiny que indica um programa minusculo, após ser compilado, este programa não leva absolutamente mais nada do que o código descrito nele, ou seja, nenhuma API do WIndows, Linux ou DOS é adicionada, o código é 100% limpoe  pode rodar em qualquer ambiente Intel.

A impressão é feita pelo BIOS ( int 10h) onde:

AH = 0Eh :
0EH Indica que algo será impresso, e o que será impresso na tela está no registrador AL

AL = 41h
AL Indica o que ser´exibido, e procurando na tabela ASCI, vemos que 41h é o “A”

no decorrer do programa vemos mais 2 rotinas que imprime na tela “ALO“.

 

Pra compilar o programa , precisaremos nesta parte do MASM32 , é fácil encontra-lo e gratuitamente.

No masm32 encnotraremos o compilador para gerar o programa, copia o fonte do programa acima e a rotina de compilação abaixo:

 

compile.bat

\masm32\bin\ml /c /AT hello.asm

\masm32\bin\Link16.exe /TINY “hello.obj”,”hello.com”;;;

 

Após rodar o BAT (compile.bat) que deverá estar na pasta do programa assembly chamado ( hello.asm ) veremos que vai gerar o programa .COM.

 

download assembly

 

Deixe um comentário