aula 12 aula 12 –– assemblyassembly...

28
Aula 12 Aula 12 ––Assembly Assembly-- Apresentação Apresentação Anderson L. S. Moreira [email protected] http://dase.ifpe.edu.br/~alsm Anderson Moreira Arquitetura de Computadores 1

Upload: phungthien

Post on 09-Dec-2018

232 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

Anderson L. S. [email protected]

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

Anderson Moreira Arquitetura de Computadores 1

Page 2: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

O que fazer com essa apresentação

Anderson Moreira Arquitetura de Computadores 2

Page 3: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

Page 4: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

Criação de Sistemas Operacionais (SO)

Anderson Moreira Arquitetura de Computadores 4

Page 5: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

Comunicação com dispositivos internos / externos

Anderson Moreira Arquitetura de Computadores 5

Page 6: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

Programação de sistemas embarcados

Anderson Moreira Arquitetura de Computadores 6

Page 7: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

Criação de devices drivers

Anderson Moreira Arquitetura de Computadores 7

Page 8: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

Page 9: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

...

Page 10: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

Page 11: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

Page 12: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

Exemplo prático - 1

Mini-OS

OSBIOS

HARDWARE

Anderson Moreira Arquitetura de Computadores 12

Page 13: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

Exemplo prático - 2

PROGRAMA

SISTEMASISTEMAOPERACIONAL

BIOS

HARDWARE

Anderson Moreira Arquitetura de Computadores 13

HARDWARE

Page 14: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

Conclusão

Assembly é ou não necessário ?y

TEXT TEXTTET TEXTTEXT TEXTTET TEXT

Anderson Moreira Arquitetura de Computadores 14

Page 15: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

Page 16: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

Page 17: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

Page 18: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

Page 19: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

....

Page 20: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

Page 21: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

Page 22: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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.

Page 23: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

Page 24: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

Page 25: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

Page 26: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

Page 27: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

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

Page 28: Aula 12 Aula 12 –– AssemblyAssembly ...siep.ifpe.edu.br/anderson/arquivos/arqt_aula12_assembly1.pdf · Anderson Moreira Arquitetura de Computadores 25. end. Exercícios 1.Definir

DúvidasDúvidas

Anderson Moreira Arquitetura de Computadores 28