Interface Hardware Software

Post on 11-Jan-2016

31 views 2 download

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 Presentation

Transcript of Interface Hardware Software

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.