quarta-feira, 11 de agosto de 2010

Informática - Linguagem Assembly - Parte 1

Estou fazendo atualmente faculdade, e tenho a matéria entitulada "Desenvolvimento de Sistemas de Informação", nesta o Professor pediu um trabalho sobre uma determinada linguagem, fiquei encarregado de realizar sobre a linguagem Assembly (alguns falam: Assembler, entretanto este é o nome do compilador).

Bem, como bom programador exagerado que sou, resolvi estrapolar um pouquinho e construir um SO, matando inclusive saudade dos meus anos de programador Assembly. Entretanto, aqui vamos realizar algo mais simples e aprender um pouco dessa linguagem através de um novo enfoque, não aquele comumente é encontrado no qual a pessoa deve primeiro dominar as bases binárias e hexadecimais para conseguir escrever algo. Quero ensinar Assembly como aprendi, através de exemplificações simples.

Como primeira ato, precisamos de um ambiente, existem vários e alguns são os mais utilizados, são eles:
  • TASM - Turbo Assembler da Borland, atualmente se encontra na versão 5.0 (http://info.borland.com/borlandcpp/cppcomp/tasmfact.html)
  • MASM - Microsoft Assembler (http://www.masm32.com)
  • Emu8086 - Emulador para o ambiente 8086 (http://www.emu8086.com/)
 Entre estes, utilizaremos Emu8086, deste modo, visite o site indicado e baixe a versão, a licença dura em torno de 90 dias, tempo mais que suficiente para realizarmos alguns testes e se você realmente sentir gosto pela linguagem, U$ 19,95 não mata ninguém.

Nosso Primeiro Programa

Ao terminar de instalar o Emu8086, execute-o e estaremos no ambiente, depois você pode verificar os "Code Examples", mas como primeiro programa quero realizar um prático "Hello World", então selecione "New" e nas templates selecione "COM template", será montado o seguinte trecho de código:

org 100h
; add your code here
ret

A primeira instrução informa ao compilador que este deve gerar um executável do tipo COM e a última sai do programa (em Java seria algo como "return"). Iremos inserir outras instruções entre um comando e outro:

org 100h
MOV AH, 0Eh
MOV AL, 'H'
INT 10h
MOV AL, 'e'
INT 10h
MOV AL, 'l'
INT 10h
MOV AL, 'l'
INT 10h
MOV AL, 'o'
INT 10h
MOV AL, '!'
INT 10h
ret

A primeira instrução seleciona o modo de subfunção para iniciar a impressão de um texto, a próxima define o caracter H para a saída de vídeo e INT é abreviatura de interrupção, esta linguagem trabalha com interrupções, entenda isso como se você estivesse fazendo alguma coisa e alguém lhe interrompesse solicitando que você fosse fazer outra. No caso "INT 10h" é a de vídeo. Essa dupla de comandos é repetida sucessivamente até formar o trecho desejado.

Para executar nosso programa, clique no botão "Emulate" e em seguida em "run" e teremos a palavra "Hello!" escrita na tela.

Abraços e até a próxima
Fernando Anselmo

Dica: Visite a seguinte página para conhecer outras interrupções http://www.htl-steyr.ac.at/~morg/pcinfo/hardware/interrupts/inte1at0.htm.

0 comentários:

Postar um comentário