Top Banner
Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando TASM Bruno Silva [email protected] lauro Moura [email protected]
37

Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Jul 07, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Inter face Hardware Sof tware

Aula Prática 1Introdução à programação Assembly no

DOS usando TASMBruno Silva [email protected]

lauro Moura [email protected]

Page 2: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Conteúdo

● Visão geral do processo● TASM / TLINK● HELPPC● Estrutura do Programa● Teclado: Interrupção 16h● Vídeo: Interrupção 10h● Exercícios● Referências

Page 3: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Cr iando programas

● Compilação– Geração do código em linguagem de

montagem.● Montagem

– Geração do código objeto.● Ligação

– Geração do executável a partir do objeto.

Page 4: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Cr iando programas

Foco na montagem e ligação

Page 5: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Cr iando programas

● São necessárias 3 ferramentas:– Editor (óbvio...)– Montador– Linker(ligador)

● Exemplos– Editor -> edit, notepad, context– Montador -> nasm, tasm– Linker -> tlink

Page 6: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

TASM (Turbo assembler)

● Montador da Borland(age em conjunto com o linker TLINK também da Borland)

● Traduz programas *.asm para *.obj● Enquanto o linker traduz programas *.obj

para *.exe ou *.com dependendo de forma de montar e ligar

Page 9: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Est rutura do programa no modo rea l (16-b i ts)

.model small

.data

myvar db “gbooo$”

.code

main

mov ax, @data

mov ds, ax

mov dx, offset myvar

mov ah, 09h

int 21h

mov ax, 4c00h

int 21h

end main

Page 11: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

M o d e l o s . . . ( n ã o d a V i c t o r i a ' s S e c r e t , p o r e n q u a n t o . . . )

Page 12: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Modelos . . .de memór ia !

● Sintaxe: .MODEL <model>● <model> define o modelo da memória

alocada que pode ser:– SMALL– COMPACT– MEDIUM– LARGE– HUGE

Page 13: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Dados , dados , dados . . .

● Diretiva .DATA● Aréa do programa que guarda as

variáveis que serão utilizadas● ex:

.MODEL SMALL

.Data

array DB 12,45,88,A2,B5

Page 14: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Pi lhas (não-a lca l inas)

● Diretiva: .STACK● Reserva espaço de memória para as

Instruções de pilha● Sintaxe .STACK [size] se nada for

definido o default é 1K● ex:

.MODEL SMALL

.DATA

.STACK

Page 15: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

The bra in

● Diretiva .CODE● Inicia o segmento de código● Sintaxe .CODE [name]

– Podem existir vários segmentos de código no seu programa é aconselhável que haja apenas um (KISS).

Page 16: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Modelo de um programa Assembly

.MODEL small

.DATA

.STACK

.CODE

inicio: ;define o entry point

...

...

END inicio

Page 17: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Run i t , baby , run i t ! ! !

● Vá para o diretório corrente para onde está o seu programa fonte e execute

->tasm NomeDoPrograma[.asm]● em seguida

->tlink NomeDoPrograma[.obj]● se não der problema, o código .exe ja

está disponível

Page 18: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Div id i r para conquis tar (KISS! ! ! ! )

● Procedimentos!

<nome> proc

...

<nome> endp

● Argumentos passados pela pilha ou pelos registradores.

Page 21: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Inter rupção 16h

● BIOS● Leitura de valores● Tecla disponível● Teclas de status

Page 22: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Int 16h / Ah = 00h

● Lê uma tecla do teclado.● Trava até uma tecla estar disponível.

● Sem eco...● Retorno:

– ah: Scan code– al: ASCII code

Page 23: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Scan codes? !? !? !

●Códigos individuais das teclas.●PageDown, Setas, Alt possuem scan codes?●Representação interna.

Page 24: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Int 16h / Ah = 01h

● Vê se uma tecla está disponível.● Solução para o deadlock da interrupção

anterior● Tecla disponível? Zero flag!● Retorno (se tiver alguma tecla):

– Idêntico à função anterior.● Não limpa o buffer...

Page 25: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Int 16h / Ah = 02h

● Teclas de Status (Insert, Scroll, Caps, etc...)

“Due to a bug in the BIOS code, these bits only reflect the current status of these keys, they do not necessarily reflect the status of these keys when the next key to be read from the system type ahead buffer was depressed. In order to ensure that these status bits correspond to the state of these keys when a scan code is read from the type ahead buffer, you've got to flush the buffer, wait until a key is pressed, and then immediately check the keyboard status.” [AOA Chapter 13.3]

Page 26: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Exemplo : Ler S t r ing

● String = Seqüência de caracteres ASCII.● Lê uma String terminada por '$'.● arquivo str.asm● procedimento getString● Argumentos / Retorno:

– DS:DX = Buffer de armazenamento– Retorna nada

Page 27: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Vídeo(Modos de Operação)

● Existem 21 modos de vídeo(dependendo da placa de vídeo) que se classificam em:– Modo Texto– Modo Gráfico

Page 28: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Vídeo(Coordenadas)

● O monitor pode ser considerado como um plano cartesiano com coodenadas da seguinte forma:– (0, 0) canto esquerdo superior do vídeo– (0, y_máx)esquerdo inferior do vídeo– (x_máx, 0)direito superior do vídeo– (x_máx, y_máx)direito superior do vídeo

Page 29: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Int 10h / Ah = 0Eh

● Escreve um caractere na tela atualizando o cursor

● AL recebe o código ascii do caractere a ser escrito

● BH recebe o numero da página em modo de texto

● BL recebe a cor do caractere em modo vídeo

● Não retorna nada

Page 30: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Int 10h / Ah = 0Ah

● Escreve um caractere na tela sem atualizar o cursor

● AL recebe o código ascii do caractere a ser escrito

● BH recebe o numero da página em modo de texto

● BL recebe a cor do caractere em modo vídeo

● Não retorna nada

Page 31: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Int 10h / Ah = 03h

● Lê a posição do Cursor e Tamanho● BH recebe o numero da página de vídeo● Retorna

– DH linha– DL coluna– CH e CL o tamanho do cursor

Page 32: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Int 10h / Ah = 02h

● Seta a posição do Cursor● BH recebe o numero da página de vídeo● DH recebe a linha● DL recebe a coluna

Page 33: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Int 10h / Ah = 00h

● Muda o modo de vídeo● AL recebe o tipo do modo escolhido● Veja o helppc para ver os modos de vídeo

disponíveis

Page 34: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Int 10h / Ah = 0Ch

● Desenha um pixel numa determinada coodenada

● AL recebe o valor da cor● BH recebe o numero da página● CX número da coluna● DX número da linha

Page 35: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Exemplo : Impr imi r S t r ing

● Imprime uma String terminada por '$'.● arquivo str.asm● procedimento printString[A|E]● duas versões: com e sem auto

incremento do cursor● Argumentos / Retorno:

– DS:DX = aponta para String– Retorna nada

Page 36: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Exerc í c io

● Escreva uma função que lê um numero e armazena numa determinada posição de memória

● Note que fazendo isso voçê estará convertendo um número de String para inteiro

Page 37: Interface Hardware Software - UFPEclac/infra_de_software/aula_teclado_video.… · Interface Hardware Software Aula Prática 1 Introdução à programação Assembly no DOS usando

Exerc í c io

● Escreva função que pega um número na memória e imprime a string correspondente.

● Façam e mandem até a próxima quarta meio dia. E guardem pois estas funções são muito úteis no projeto.