Aula 12 Aula 12 –– AssemblyAssembly...
-
Upload
phungthien -
Category
Documents
-
view
232 -
download
0
Transcript of Aula 12 Aula 12 –– AssemblyAssembly...
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
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