Académique Documents
Professionnel Documents
Culture Documents
em linguagem assembly
Espao de endereamento
Instrues de acesso memria
Modos de endereamento
Diretivas
Tabelas
Pilha
Rotinas
Jos Delgado 2013 Arquitetura de Computadores Introduo programao em linguagem assembly 1
Estrutura de um computador
Processador
Unidade
Bus de endereos
de controlo
Interface de
memria
Bus de controlo
Unidade de
dados Bus de dados
Interface de
memria
Bus de controlo
Unidade de
dados Bus de dados
Espao de endereamento
0000H
Memria 1
(com 16 bits)
Perifrico 1
Perifrico 2
Perifrico 3
Memria 2
FFFFH
Jos Delgado 2013 Arquitetura de Computadores Introduo programao em linguagem assembly 3
Diagrama de blocos
Bus de endereos
RD
WR
Descodificador
Processador Memria Perifrico
de endereos
CS1 CS2
Bus de dados
(a) (b)
A
16 (a) AB ---
B
C
D CD
32 (b) CDEF
E EF
F
Exemplo:
DUZIA EQU 12 ; definio
MOV R1, DUZIA ; utilizao (R1 12)
Exemplo:
VAR1: WORD 1 ; varivel inicializada a 1.
; Est localizada no endereo
; atribudo pelo assemblador a VAR1
Exemplo:
T1: TABLE 10 ; reserva espao para 10 palavras.
; A primeira fica localizada no
; endereo atribudo a T1, a
; segunda em T1 + 2
, , , , ,
ou ou ou ou ou
aN-1 ... a0 0
0
aN-1 ... a0
aN-1
Correspondem a multiplicar e dividir por 2n.
Jos Delgado 2013 Arquitetura de Computadores Introduo programao em linguagem assembly 32
Utilizao das instrues de
deslocamento
SHL a, n n * [ai+1 ai (i 0..N-2); a0 0]
SHR a, n n * [ai ai+1 (i 0..N-2); aN-1 0]
SHRA a, n n * [ai ai+1 (i 0..N-2); aN-1 aN-1]
aN-1 ... a0
aN-1 ... a0
C aN-1 ... a0
C aN-1 ... a0
PLACE 1000H
WORD 1234H
e
PLACE 0000H
MOV R1, 1234H
MOV R2, 1000H
MOV [R2], R1
total = 0;
for (i = 0; i < 10; i++;)
total = total + A[i];
chamada 1
retorno 2
chamada 2
rotina
Pilha
Rotina
RET
SP
Pilha
Rotina
RET
SP Retorno
Rotina
RET
Retorno
SP
Pilha vazia
CALL
Rotinas e CALL
end. ret. A
end. ret. B
a pilha CALL
end. ret. A
end. ret. C
end. ret. B
end. ret. A
TEMPO RET
end. ret. B
end. ret. A
RET
end. ret. A
CALL
end. ret. D
end. ret. A
RET
end. ret. A
RET
Pilha vazia
FIM
Jos Delgado 2013 Arquitetura de Computadores Introduo programao em linguagem assembly 55
Pilha (stack)
PUSH
livre
SP aponta para a ltima
SP 0FFFH
posio ocupada da pilha SP 0100H
(topo da pilha) SP 0789H
ocupado
00A5H
POP 0FA2H
PUSH Ri: SPSP-2; M[SP]Ri 1000H
POP Ri: RiM[SP]; SPSP+2 0123H
PUSH R1
PUSH R2 0100H R1
0FFFH
POP R1 0100H R2
0FFFH
POP R2
Jos Delgado 2013 Arquitetura de Computadores Introduo programao em linguagem assembly 56
Pilha (stack)
O POP no apaga os
valores, apenas os deixa na PUSH
livre
zona livre.
0FFFH
Os POPs tm de ser feitos 0100H
pela ordem inversa dos 0789H
789H
SP
PUSHes, seno os valores
ocupado
00A5H
A5H
vm trocados!
POP 0FA2H
FA2H
1000H
0123H
123H
PUSH R1
PUSH R2 0FFFH R1
POP R1 0100H R2
POP R2
Jos Delgado 2013 Arquitetura de Computadores Introduo programao em linguagem assembly 57
e
e
r
r
liv
liv
Zona reservada
pilha
topo
o
SP SP
ad
liv
up
oc
Pilha e
SP (a) (b)
(Stack
Pointer) topo topo
o
e
ad
r
liv
up
oc
Zona reservada
o
ad
pilha
o
up
ad
SP SP
oc
up
oc
(c) (d)
Livre
FFFFH
Jos Delgado 2013 Arquitetura de Computadores Introduo programao em linguagem assembly 62
Passagem de valores
Invocao: z = soma (x, y);
Quem chamar a funo tem de colocar os parmetros
num local combinado com a funo.
Idem para o valor de retorno
Incio
No
Operaes pergunta
Fim
Sim