interface hardware software
DESCRIPTION
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. - PowerPoint PPT PresentationTRANSCRIPT
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
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.
O que são?
Definindo o modelo de memória e segmentosDefinindo o modelo de memória e segmentos
Definindo variáveisDefinindo variáveis
Definindo procedimentosDefinindo procedimentos
Criando macrosCriando macros
Criando estruturasCriando estruturas
DIRETIVAS TASM
Modelos de memória
Modelo Segmento de dados Segmento de Código
*TINY UM UM
SMALL UM UM
MEDIUM UM VÁRIOS
COMPACT VÁRIOS UM
LARGE VÁRIOS VÁRIOS
HUGE VÁRIOS VÁRIOS
FLAT UM UM
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 assemblyEstrutura 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
.dataNumero db 10Numero1 dw ?VetorNumeros db 10 dup(5) ; Definindo um vetor com 10 posições
;de um byte contendo o valor 5.code....
Constantes
Declarando uma constanteDeclarando uma constante
.model small
.stack
.data
Numero db 10Numero1 dw ?ConstanteCinco equ 5
.code
...
Procedimento
Declarando uma procedureDeclarando uma 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 retFunc_1 endpend
Macros
Declarando uma MacroDeclarando uma Macro
.data
meumacro MACRO <lista de parametros>
<corpo do macro (código)>
ENDM
.code
...end
Macros
.model small
.stack
.data
num1 db 10num2 db 20
soma MACRO a , bmov al ,aadd al,bmov a ,al
Endm
.code.startup
soma num1 , num2
.exitend
Exemplo:Exemplo:
Estruturas
Declarando uma estruturaDeclarando uma estrutura
.data
minhastruc STRUC
<corpo da estrutura (definição de variáveis)>
ENDS
.code
...
end
Estruturas
Exemplo:Exemplo:.model small.stack.data
date struc ;definindo a estruturaday 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.startupmov al,aniversario.daymov ah,aniversario.monthmov bx,aniversario.year.exit
end
Exercício 1
1.Definir uma struc “telefone” com ddd e o numero do telefone;
Exercício 2
1.Definir uma struc “datas” e definir um vetor deste tipo, contendo 31 posições;
2.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.