140 likes | 250 Views
Interface Hardware Software. Monitoria Ângelo Lima Mazer - alm Daniel Brito de Oliveira Carvalho – dboc Diogo de Lima Lages – dll Igor Marcel Leal de Morais - imlm Lucio Paulo de Souza Ribeiro - lpsr Pedro Fernandes Dallegrave – pfd2 Rodolfo Cesar de Avelar Ferraz - rcaf.
E N D
Interface Hardware Software Monitoria Ângelo Lima Mazer - alm Daniel Brito de Oliveira Carvalho – dboc Diogo de Lima Lages – dll Igor Marcel Leal de Morais - imlm Lucio Paulo de Souza Ribeiro - lpsr Pedro Fernandes Dallegrave – pfd2 Rodolfo Cesar de Avelar Ferraz - rcaf
Diretivas assembler O que são? Diferentemente das instruções assembly (mov, add, push, jmp...), que são comandos direcionados à CPU, as diretivas assembler são comandos direcionados ao assembler(exemplo: TASM). As diretivas assembler são executadas em tempo de “compilação” (montagem). Já as instruções assembly são executadas em tempo de execução. Diretivas assembly podem ser comandos para reservar áreas de memória, definir procedimentos, definir constantes, entre outros.
DIRETIVAS TASM Definindo o modelodememória e segmentos Definindovariáveis Definindoprocedimentos Criando macros Criandoestruturas
Modelos de memória Obs.: No modelo tiny o segmento de dados e o de código compartilham a mesma região de memória.
Definindo modelo de memória Estrutura básica de um código em assembly .model small ;Diretiva assembler .model definindo o modelo de memória .stack ;Definindo o segmento de pilha .data ;Definindo segmento de dados .code ;Definindo segmento de código mov ax,@data mov ds,ax mov ax, 4c00h int 21h end ;Fim do segmento de código
Variáveis .model small .stack .data Numero db10 Numero1 dw? VetorNumeros db10 dup(5) ; Definindo um vetor com 10 posições ;de um byte contendo o valor 5 .code ....
Constantes Declarandoumaconstante .model small .stack .data Numero db 10 Numero1 dw ? ConstanteCinco equ 5 .code ...
Procedimento Declarandouma procedure .model small ;modelo de memória a ser usado .stack ;Define o segmento de pilha .data ;Define segmento de dados .code ;Define segmento de código mov ax,@data ;DS aponta para o segmento de dados mov ds,ax call Func_1 mov ax, 4c00h ;AH – Função a ser chamada int 21h ;Chama SO para executar função requisitada Func_1 proc push bx mov bx,ax pop bx ret Func_1 endp end
Macros Declarandouma Macro .data meumacro MACRO <lista de parametros> <corpo do macro (código)> ENDM .code ... end
Macros .model small .stack .data num1 db 10 num2 db 20 soma MACRO a , b mov al ,a add al,b mov a ,al Endm .code .startup soma num1 , num2 .exit end Exemplo:
Estruturas Declarando uma estrutura .data minhastruc STRUC <corpo da estrutura (definição de variáveis)> ENDS .code ... end
Estruturas Exemplo: .model small .stack .data date struc ;definindo a estrutura day db ? month db ? year dw ? ends aniversario date <04h,05h,1987h> ;criando variável do tipo date feriado date <15h,11h,2008h> ;e inicializando .code .startup mov al,aniversario.day mov ah,aniversario.month mov bx,aniversario.year .exit end
Exercício 1 • Definir uma struc “telefone” com ddd e o numero do telefone;
Exercício 2 • Definir uma struc “datas” e definir um vetor deste tipo, contendo 31 posições; • Definir uma macro que receba 3 parâmeros (dia, mês, ano), e armazene estes valores na primeira posição do vetor criado. • 3. Definir uma macro que receba 4 parâmeros (data, mês, ano e posição de memória), que armazene estes valores na variável “data” correspondente; • 4. Definir um procedimento, que utilize a macro criada, para inserir no vetor os 31 dias do mês de outubro de 2008.