aula 12 aula 12 –– assemblyassembly...

Post on 09-Dec-2018

232 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Aula 12 Aula 12 –– AssemblyAssembly -- ApresentaçãoApresentação

Anderson L. S. Moreiraanderson.moreira@recife.ifpe.edu.br

http://dase.ifpe.edu.br/~alsm

Anderson Moreira Arquitetura de Computadores 1

O que fazer com essa apresentação

Anderson Moreira Arquitetura de Computadores 2

Por que usar assembly

• Criação de sistemas operacionaisC ã d• Comunicação com dispositivos internos / externosP ã d i b d• Programação de sistemas embarcados

• Criação de device driversC i ã d i d d b• Criação de gerenciadores de boot

Anderson Moreira Arquitetura de Computadores 3

Criação de Sistemas Operacionais (SO)

Anderson Moreira Arquitetura de Computadores 4

Comunicação com dispositivos internos / externos

Anderson Moreira Arquitetura de Computadores 5

Programação de sistemas embarcados

Anderson Moreira Arquitetura de Computadores 6

Criação de devices drivers

Anderson Moreira Arquitetura de Computadores 7

Por que não usar assembly ?

Códigos podem não ser tão intuitivos•Códigos podem não ser tão intuitivos

movb $0x10,%almovw $0x0378,%dxoutb %al,%dx

mov dx msgmov ah, 9int 21h

jmp sayint 21hfldpifld dword [radio]fmul st0, st0,fmul st0, st1fld dword [height]fmul st0, st1fst dword [vol]

Anderson Moreira Arquitetura de Computadores 8

Por que não usar assembly ?

•Pode ser mais fácil trabalhar em outra linguagem

if ( ){ mov al a

•Pode ser mais fácil trabalhar em outra linguagem

if (a){a += b*c;

}else{a = b+c;

mov al, amov bl, bmov cl, cxor ah, aha -= b+c;

}xor ah, ahcmp al, ahjz L1:mult bl, cl,add al, bl jmp L2L1: add bl, clsub al, blL2:

Anderson Moreira Arquitetura de Computadores 9

...

Por que não usar assembly ?

• Alguns programadores tem pavor de g p g passembly;• Pode ser complicado pensar em assembly;p p y;•Testar os programas e descobrir erros pode ser um aventura (eventuais falhas do SO).( )

Anderson Moreira Arquitetura de Computadores 10

Fases de um projeto utilizando assembly

Fase 2 Fase 4Fase 3Fase 1 Fase 5Fase 2 Fase 4Fase 3 Fase 1 Fase 5

IdentificarObjetivos

Analisar recursosa serem utilizados

Verificarviabilidade Desenvolver Testes

Anderson Moreira Arquitetura de Computadores 11

Exemplo prático - 1

Mini-OS

OSBIOS

HARDWARE

Anderson Moreira Arquitetura de Computadores 12

Exemplo prático - 2

PROGRAMA

SISTEMASISTEMAOPERACIONAL

BIOS

HARDWARE

Anderson Moreira Arquitetura de Computadores 13

HARDWARE

Conclusão

Assembly é ou não necessário ?y

TEXT TEXTTET TEXTTEXT TEXTTET TEXT

Anderson Moreira Arquitetura de Computadores 14

Diretivas Assembler

O que são?Diferentemente das instruções assembly (mov, add, push, jmp...), que são comandos direcionados à CPU, as diretivas assemblerã d di i d bl Asã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 outrosmemória, definir procedimentos, definir constantes, entre outros.

Anderson Moreira Arquitetura de Computadores 15

Diretivas TASM

• Definindo o modelo de memória e segmentos;

• Definindo variáveis;

• Definindo procedimentos;

• Criando macros;

C i d t t• Criando estruturas.

Anderson Moreira Arquitetura de Computadores 16

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ÁRIOSHUGE 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.

Anderson Moreira Arquitetura de Computadores 17

g

Definindo modelos e segmentos

Estrutura básica de um código em assembly

model small ;Diretiva assembler model definindo o 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.code ;Definindo segmento de códigomov ax,@datamov ds,ax

mov ax, 4c00h int 21h

end ;Fim do segmento de códigog g

Anderson Moreira Arquitetura de Computadores 18

Variáveis

.model small

.stack

.dataNumero db 10N 1 d ?Numero1 dw ?VetorNumeros db 10 dup(5) ; Definindo um vetor com 10 posições

;de um byte contendo o valor 5d

Anderson Moreira Arquitetura de Computadores 19

.code

....

Constantes

D l d t tDeclarando uma constante

.model small

.stack

.data

Numero db 10Numero1 dw ?C t t Ci 5ConstanteCinco equ 5

.code

...

Anderson Moreira Arquitetura de Computadores 20

Procedimentos

Declarando uma procedure.model small ;modelo de memória a ser usado .stack ;Define o segmento de pilha.data ;Define segmento de dadoscode ;Define segmento de código.code ;Define segmento de código

mov ax,@data ;DS aponta para o segmento de dadosmov ds,ax call Func 1 _mov ax, 4c00h ;AH – Função a ser chamadaint 21h ;Chama SO para executar função requisitada

Func 1 procFunc_1 procpush bxmov bx,axpop bxp pret ;instrução que recupera da pilha o endereço para retornar à linha

;seguinte à chamada do procedimentoFunc_1 endpend

Anderson Moreira Arquitetura de Computadores 21

end

Macros

D fi i d M

.data

Definindo uma Macro

meumacro MACRO <lista de parametros>

<corpo do macro (código)>

ENDM.code...end

A definição da macro pode estar em qualquer parte do seu arquivo de código (dentro doend parte do seu arquivo de código (dentro do segmento de código ou dados). Afinal, durante a execução, ela não estará armazenada em nenhum dos dois Será usada apenas durante anenhum dos dois. Será usada apenas durante a montagem do código objeto, sendo “colada” no segmento de código tantas vezes quanto for chamada

Anderson Moreira Arquitetura de Computadores 22

chamada.

Macros

Exemplo:.model small.stack.data

num1 db 10num2 db 20

soma MACRO a , blmov al ,a

add al,bmov a ,al

Endm

.code.startup

soma num1 , num2

.exitend

Anderson Moreira Arquitetura de Computadores 23

Estruturas

Declarando uma estrutura

.data

i h t STRUCminhastruc STRUC

<corpo da estrutura (definição de variáveis)>

ENDS

.code

...

dend

Anderson Moreira Arquitetura de Computadores 24

Estruturas

model small

Exemplo:.model small.stack.datadate STRUC ;definindo a estrutura

day db ?month db ?year dw ?

ENDSENDS

aniversario date <04h,05h,1987h> ;criando variável do tipo date feriado date <15h 11h 2008h> ;e inicializando-aferiado date <15h,11h,2008h> ;e inicializando-a

.code

.startupmov al,aniversario.daymov ah,aniversario.monthmov bx,aniversario.yearexit

Anderson Moreira Arquitetura de Computadores 25

.exitend

Exercícios

1.Definir uma struc “telefone” com ddd e o numero do telefone;numero do telefone;

(para esses exercícios utilizar tabela da aula 10 de diretivas assembly).

Anderson Moreira Arquitetura de Computadores 26

Exercício 2

1.Definir uma struc “datas” e definir um vetor deste tipo, t d 31 i õcontendo 31 posições;

2 Definir uma macro que receba 3 parâmeros (dia mês ano)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

iá l “d t ” d t d dvariável “data” correspondente ao endereço passado;

4 Definir um procedimento que utilize a macro criada para4.Definir um procedimento, que utilize a macro criada, para inserir no vetor os 31 dias do mês de outubro de 2008.

Anderson Moreira Arquitetura de Computadores 27

DúvidasDúvidas

Anderson Moreira Arquitetura de Computadores 28

top related