Aula Prtica 2 Criao de programas em Assembly Ferramentas necessrias: - Editor - Montador - Linker (ligador) Existem diversas ferramentas no mercado: Masm, Nasm, Tasm, etc... Tasm Montador da Borland (age em conjunto com o linkador Tlinker, tambm da Borland) Gera programas *.obj a partir de um *.asm O linkador ento transforma os arquivos *.obj em executveis (*.exe ou *.com - dependendo da forma de montar e ligar) Diretivas Assembly Importantes .MODEL (define o modelo de memria do programa) .STACK (reserva espao de memria para instrues da pilha) .CODE (define o incio de um programa) END (finaliza um programa Assembly) Observao Um programa no Tasm dever ter um Entry Point (ou seja, ponto onde o programa comecar realmente a executar) explcito, caso contrrio o Tlink emitir o seguinte erro: No program entry point. Corpo bsico de um programa no Tasm .MODEL ... .STACK .CODE inicio: ... mov ah, 01h mov cx, 07h ... mov ah, 04h ... END inicio O label inicio o Entry Point do programa!!! Como gerar e rodar o executvel do meu programa? Exemplo: C:\>tasm ex1.asm Turbo assembler Version 2.0 Copyright (c) 1988, 1990 Borland International Assembling file: exam1.asm error messages: None Warning messages: None Passes: 1 Remaining memory: 471k C:\>tlink ex1.obj Turbo Link Version 3.0 Copyright (c) 1987, 1990 Borland International C:\>ex1 [enter] Interrupes Evento que ocorre enquanto o processador est executando uma instruo Suspende temporariamente o que o processador est fazendo no momento de sua ocorrncia Podem ser de hardware ou de software (SO / usurio), externas ou internas. INT 21H (interrupo do DOS) int 21h ;invoca a interrupo do DOS *funo 01h: l um caractere do teclado input: AH = 01h output: AL = caracter(ASCII em hexa) *funo 02h: escreve um caractere na tela input: AH = 02h DL = caracter a ser escrito output: nenhuma Exemplo 1: Programa que l um caracter do teclado e imprime este mesmo na tela www.cin.ufpe.br/~if817/arquivos/aula2.zip => ex1.asm Exemplo 2: Programa que retorna 1 se o argumento dado pelo usurio for um caractere entre 0 e 9 e 0 se no for. www.cin.ufpe.br/~if817/arquivos/aula2.zip => ex2.asm Exerccios Escreva um programa que mostre na tela os 256 caracteres do cdigo ASCII. Escreva um programa que receba dois dgitos entre 0 e 9 do teclado e imprima o maior deles. Referncias http://pjtsalina.codigolivre.org.br/news/asm/37 22.html The Pentium Microprocessor - James l. Antonakos/Editora Prentice Hall, 1997. Tabela ASCII