Sie sind auf Seite 1von 115

TEMA

TEMA:
El microprocesador 68020 de Motorola

J. Ivn Maza Alcaiz


Dpto.
p Ingeniera
g
de Sistemas y Automtica
Escuela Superior de Ingenieros
Universidad de Sevilla

TEMA
TEMA:
El microprocesador 68020 de Motorola

1. Introduccin
2. Registros de la CPU
3. Organizacin de datos en memoria
4. Modos de direccionamiento
5. Juego de instrucciones
6. Ejemplos

1. Introduccin

Caractersticas MC68020/EC020:

Arquitectura de 32 bits:

Bus asncrono.
16 registros internos de datos y direcciones de 32 bits de propsito
general.
Bus de datos de 32 bits.
MC68020: Bus de direcciones de 32 bits (4-Gbytes).
MC68EC020: Bus de direcciones de 24 bits (16-Mbytes).
Tamao del ancho de bus dinmico para soportar distintos tipos de
memorias y perifricos: 8/16/32 bits.

Dos modos de operacin:

Modo usuario.
Modo supervisor.

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

1. Introduccin

Caractersticas MC68020/EC020:

Cdigo objeto compatible con microprocesadores M68000


previos.
Modos de direccionamiento nuevos.
Cach de instrucciones de 256 bytes.
Interface p
para coprocesadores:
p
FPU (MC68881)
(
) y MMU
(MC68851).
Arquitectura pipeline con alto grado de paralelismo interno:
ejecucin
j
i concurrente
t de
d mltiples
lti l instrucciones.
i t
i
Soporte de memoria virtual y mquina virtual.
Velocidades MC68020: 16.67,
16 67 20,
20 25 y 33.33
33 33 MHz.
MHz
Velocidades MC68EC020: 16.67 y 25 MHz.

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

1. Introduccin

Apple Macintosh II.


Commodore Amiga 1200.
1200
Consola Amiga CD32.
Sun 3 workstations.
Trenes TGV.

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

TEMA:
El microprocesador 68020 de Motorola
1. Introduccin
2. Registros de la CPU
3. Organizacin de datos en memoria
4. Modos de direccionamiento
5. Juego
g de instrucciones
6. Ejemplos

2. Registros de la CPU: modo usuario

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

2. Registros de la CPU: modo supervisor

SSP

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

SUPERVISOR
STACK POINTER

2. Registros de la CPU

Registros de datos:

Los bits no usados en una asignacin no se modifican.


modifican
Se suelen usar como registros ndice en el direccionamiento
indexado.
En ellos se pueden realizar operaciones con datos de tipo:

Bit, byte, word, long-word, quad-word.

Registros de direcciones:

Diseo de CPU optimizado para usarlos en los modos de


direccionamiento.
Se pueden usar como:

Punteros a memoria.
P t
Punteros
a pila.
il
Registros base.
Registros
g
ndice (menos
(
apropiados
p p
que
q los de datos).
)

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

2. Registros de la CPU

Registros de direcciones:

Usados
U
d como operando
d fuente
f
t se emplean
l
en tamao
t
16 32
bits.
Usados como operando destino se modifican por completo
independientemente de que el operando fuente sea de 8 16
bits: se extiende el signo antes de realizar la operacin.
Ejemplo:

d0: 1C 32 AB AB
a0:
0 3A 21 FC EF
movea.w d0,a0
d0: 1C 32 AB AB
a0: FF FF AB AB

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

10

2. Registros de la CPU

Registro de estado y registro de cdigos de condicin (SR y CCR):

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

11

2. Registros de la CPU

Registro de estado y registro de cdigos de condicin (SR y


CCR):

Bit X=C para algunas operaciones (las aritmticas p. ej.)


Bit N=1 si el resultado de la operacin ha sido negativo.
negativo
Bit Z=1 si el resultado de la operacin ha sido cero.
Bit C=1
C 1 cuando en una operacin se produce desbordamiento
del rango sin signo.
Bit V=1 cuando en una operacin se produce desbordamiento
del rango con signo.

Ejemplo:

4 bits sin signo: [0,15]


[0 15]
4 bits con signo usando complemento a 2: [-8,7]

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

12

TEMA:
El microprocesador 68020 de Motorola
1. Introduccin
2. Registros de la CPU
3. Organizacin de datos en memoria
4. Modos de direccionamiento
5. Juego
g de instrucciones
6. Ejemplos

3. Organizacin de datos en memoria

El direccionamiento de la memoria se hace en tamaos


byte word y long
byte,
long-word.
word
Solamente se exige alineamiento para instrucciones.
El acceso en tamao word y long
long-word
word es ms eficiente si
se hace sobre direcciones pares.
Criterio extremista mayor: la direccin de un word o longword es la de su byte ms significativo (byte de direccin
j en memoria).
)
ms baja

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

14

TEMA:
El microprocesador 68020 de Motorola
1. Introduccin
2. Registros de la CPU
3. Organizacin de datos en memoria
4. Modos de direccionamiento
5. Juego
g de instrucciones
6. Ejemplos

4. Modos de direccionamiento

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

16

4. Modos de direccionamiento

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

17

4. Modos de direccionamiento

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

18

TEMA:
El microprocesador 68020 de Motorola
1. Introduccin
2. Registros de la CPU
3. Organizacin de datos en memoria
4. Modos de direccionamiento
5. Juego
g de instrucciones
6. Ejemplos

5. Juego de instrucciones
5.1 Movimiento de datos
B,W,L
W,L
L
B,W,L

orig dest
orig dest con ext sign

ADD Dn
Dn,<DE>
<DE>
<DE>,Dn
ADDI #<dato>,<DE>

BWL
B,W,L

dest + orig dest

B,W,L

Dato de acuerdo a anch

SUB Dn,<DE>
<DE> Dn
<DE>,Dn
SUBI #<dato>,<DE>

B,W,L

dest - orig dest

B,W,L

Dato de acuerdo a anch.

MOVE <DE>,<DE>
MOVEA <DE>,An
EXG R
Rx,Ry
R
CLR <DE>
5.2 Aritmtica entera - datos

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

20

5. Juego de instrucciones
5.2 Aritmtica entera - datos ()
MULS.W <DE>,Dn
MULS.L <DE>,Dn
MULS.L <DE>,Dh:Dl

16x16 32
orig * dest dest
32x32 32 (se descartan los bits altos)
32x32 64

MULU: Idntico
d
a MULS pero sin signo
DIVS.W
DIVS
W <DE>,Dn
<DE> Dn
DIVS.L <DE>,Dn
DIVS.L <DE>,Dr:Dq
DIVSL.L <DE>,Dr:Dq

32/16 16r:16q
32/32 32q
64/32 32r:32q
32/32 32r:32q

dest/orig dest

DIVU DIVUL:
DIVU,
DIVUL Idntico
Id i a DIVS,
DIVS DIVSL pero sin
i signo
i
FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

21

5. Juego de instrucciones
5.2 Aritmtica entera - datos ()
EXT.W Dn

8 16

EXT L Dn
EXT.L
D

16 32

EXT.B Dn

8 32

NEG <DE>

B,W,L

extiende el signo

0 dest dest

5.3 Aritmtica entera direcciones


ADDA <DE>,An

W,L

SUBA <DE>,An
<DE> An

WL
W,L

Se extiende el signo

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

22

5. Juego de instrucciones
5.4 Operaciones lgicas
NOT <DE>

B,W,L

CA1

AND <DE>,Dn
DE D
Dn,<DE>

BWL
B,W,L

orig
i AND dest
d t dest
d t

OR <DE>,Dn
Dn,<DE>

B,W,L

orig OR dest dest

EOR Dn,<DE>

B,W,L

ANDI
ORI #dato,<DE>
EORI

B,W,L

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

orig XOR dest dest

23

5. Juego de instrucciones
5.4 Operaciones lgicas ()
CMP <DE>,Dn
CMPI #dato,<DE>
CMPA <DE>,An

B,W,L
B,W,L
W,L

dest - orig

5.5 Desplazamiento
l
y rotacin
de
d bits
b
ASL Dx,Dy
Dx Dy
ASL #dato,Dn
ASL <DE>

B,W,L
B
WL
B,W,L
B,W,L

Dx indica despl mdulo 64 (6 lsb)


dato=[18]
despl de 1 bit

Ejemplo: ASL.B #1,d0


FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

24

5. Juego de instrucciones
5.5 Desplazamiento y rotacin de bits ()
ASR: idem salvo que se replica el bit de signo Dx,Dy

LSL ASL
LSR

ROL

ROR

SWAP Dn

Intercambia MSW y LSW

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

25

5. Juego de instrucciones
5.6 Instrucciones de ruptura de secuencia
5.6.1. Incondicionales
JMP <DE>
BRA <etiq>
JSR <DE>

<DE> PC
PC+despl PC SP 4 SP
Salto
l a subrutina
b
PC (SP)
<DE> PC

SP 4 SP
PC (SP)
PC+despl PC

BSR <etiq>

Salto a subrutina relativo a PC

RTS

Retorno de subrutina SP + 4 SP

NOP

PC 2 PC
PC+2

(SP) PC

N h
No
hace ninguna
i
operacin
i ms

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

26

5. Juego de instrucciones
5.6 Instrucciones de ruptura de secuencia
5.6.2. Condicionales
Bcc <etiq>

BPL N=0
BMI N=1

BGE
BGT
BLE
BLT

Si la condicin es cierta, PC+despl PC


La instruccin se basa en los bits del CCR
(pero no afecta a los cdigos de condicin)
BVC V=0
BVS V=1

BCC C=0
BCS C=1

mayor o igual
mayor
menor o igual
menor

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

BNE Z=0
BEQ Z=1

Se usan tras una instruccin CMP


Ejemplo:
CMP.L d1,d2
BGT etiqueta
(salta si d2>d1)
27

5. Juego de instrucciones
5.7 Instrucciones de control
5.7.1. Modo supervisor
STOP #dato

Mueve dato al SR y detiene la mquina hasta que


hay una interrupcin o un reset

Modificacin del SR:


ORI.W #dato,SR
ANDI.W #dato,SR
MOVE.W <DE>,SR
Lectura del SR:
MOVE W SR
MOVE.W
SR,<DE>
<DE> (tambin posible en modo usuario)
FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

28

5. Juego de instrucciones
5.7 Instrucciones de control
5.7.2. Modo usuario
TRAP #11
DC.W 0

Equivalente a HALT en Smplez

Modificacin del CCR:


ORI W #dato
ORI.W
#dato,CCR
CCR
ANDI.W #dato,CCR
MOVE.W <DE>,CCR (solamente modifica los 8 lsb del SR)
Lectura del CCR:
MOVE W CCR
MOVE.W
CCR,<DE>
DE (rellena
( ll
con 0 los
l 8 msb)
b)
FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

29

5. Juego de instrucciones
5.8 Directivas del ensamblador
ORG <direccion>:
di
i

Etiquetas:

Establece la direccin de memoria a partir de la cual se


cargarn las instrucciones y datos que siguen
siguen.
Se usar ORG $400600
Al principio de lnea.
Hasta 255 caracteres.

<etiq> EQU <cte>:

Definicin de literal.
Ejemplo: VALOR EQU 4.

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

30

5. Juego de instrucciones
5.8 Directivas del ensamblador ()

<etiq> DC(.B,.W,.L) <cte cadena caracteres>


Introduce constantes en posiciones de memoria.
Ejemplos:

<etiq> DS(.B,.W,.L) <cte>


Reserva espacio en memoria para variables.
Ejemplo:

pepe DC.W
DC W 1,3,$20,4,-7
1 3 $20 4 7
juan DC.B Hola

TABLA DS.L 20

END
Indica el final del cdigo ensamblador.
C
Comentarios:
t i
*
Hexadecimal: $
Binario: %

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

31

6. Ejemplos: suma de los elementos de una tabla

Calcular la suma de los elementos de una tabla. La tabla


empieza en una direccin de etiqueta tabla y sus elementos
son de tamao word. La longitud de la tabla est
almacenada en una direccin de etiqueta long en tamao
word. El resultado hay que guardarlo en la direccin de
etiqueta suma en tamao word.

Versin 1: mediante direccionamiento indexado.

Pseudocdigo:
suma = 0;
0
i = 0;
mientras i<long
suma += tabla[i];
i++;
finmientras

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

32

6. Ejemplos: suma de los elementos de una tabla

Ensamblador del 68020:

* usaremos:
* d0: para ir acumulando las sumas parciales
* d1: para el contador i

tabla
l
long
suma
inicio

org $400600
bra inicio
dc.w 7,8,1,4,5,8
d
dc.w
6
ds.w 1
clr.w d0
* suma=0;
clr.w d1
* i=0;
movea.l #tabla,a0

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

33

6. Ejemplos: suma de los elementos de una tabla

bucle

fbucle

cmp.w
p long,d1
g,
bge fbucle
add.w (a0,d1.w*2),d0
addi w #1,d1
addi.w
#1 d1
bra bucle
move.w d0,suma
trap #11
dc.w 0
end

* mientras i<long
*
suma += tabla[i];
*
i++;
* finmientras
* almacena resultado en suma
* fin

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

34

6. Ejemplos: suma de los elementos de una tabla

Calcular la suma de los elementos de una tabla. La tabla


empieza en una direccin de etiqueta tabla y sus elementos
son de tamao word. La longitud de la tabla viene dada por
una directiva equ. El resultado hay que guardarlo en la
direccin de etiqueta suma en tamao word.

Versin 2: mediante puntero.

Pseudocdigo:
suma = 0;
p = tabla;
pfin = p+long*2;
mientras ppfin
suma += *p;
p=p+2;
finmientras

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

35

6. Ejemplos: suma de los elementos de una tabla

Ensamblador del 68020:

* d0: para ir acumulando las sumas parciales


* a0: puntero p
* a1: puntero pfin
org $400600
$
bra inicio
tabla
dc.w 7,8,1,4,5,8
, , , , ,
long
equ 6
suma
ds.w 1
inicio
clr w d0
clr.w
* suma=0;
suma 0;
movea.l #tabla,a0
* p=tabla;
movea.l a0,a1
move.w #long,d1
asl.w #1,d1
adda l d1,a1
adda.l
d1 a1
* pfin
pfin=tabla+long*2;
tabla+long 2;
FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

36

6. Ejemplos: suma de los elementos de una tabla


bucle

fb l
fbucle

cmpa.l a0,a1
beq fbucle
add.w (a0)+,d0
bra bucle
move.w d0,suma
d0
trap #11
dc.w 0
end

*
*
*
*

mientras ppfin
suma += p*; p=p+2;
finmientras
almacena
l
resultado
lt d en suma

* fin

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

37

Anexo: concepto de pila

Tipo de almacenamiento.
L datos
Los
d t se leen
l
en orden
d inverso
i
all que se escriben
ib
(LIFO).
Pueden estar implementada en HW especfico o simulada
por SW sobre la MP.
Solamente se trabaja sobre la cima (top) de la pila.
pila
Crece a partir de una direccin base: fondo (bottom) de
la pila.
Solamente se pueden hacer dos operaciones sobre la pila:

PUSH (apilar): escribir o introducir un dato en la pila.


POP (desapilar): leer o extraer un dato de la pila.

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

38

Anexo: concepto de pila

Es habitual tener un registro en la


$00000000
CPU actuando como puntero a
pila (SP):
PUSH
apunta siempre a la cima de la
SP
pila (o a la primera palabra libre
POP
por encima de la pila).
Se actualiza automticamente al
ejecutar las operaciones PUSH y
POP.
Solamente se le da valor
inicialmente para establecer el
fondo de la pila.
PUSH A

SP SP
A (SP)

POP A

(SP) A
SP++ SP

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

cima

fondo

$FFFFFFFF
39

Anexo: concepto de pila

Es habitual tener un registro en la


$00000000
CPU actuando como puntero a
pila (SP):
PUSH
apunta siempre a la cima de la
SP
pila (o a la primera palabra libre
por encima de la pila).
Se actualiza automticamente al
ejecutar las operaciones PUSH y
POP.
Solamente se le da valor
inicialmente para establecer el
fondo de la pila.
PUSH A

SP SP
A (SP)

cima

fondo

$FFFFFFFF
FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

40

Anexo: concepto de pila

Es habitual tener un registro en la


$00000000
CPU actuando como puntero a
pila (SP):
PUSH
apunta siempre a la cima de la
SP
pila (o a la primera palabra libre
por encima de la pila).
Se actualiza automticamente al
ejecutar las operaciones PUSH y
POP.
Solamente se le da valor
inicialmente para establecer el
fondo de la pila.
PUSH A

SP SP
A (SP)

cima

fondo

$FFFFFFFF
FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

41

Anexo: concepto de pila

Es habitual tener un registro en la


$00000000
CPU actuando como puntero a
pila (SP):
PUSH
apunta siempre a la cima de la
SP
pila (o a la primera palabra libre
por encima de la pila).
Se actualiza automticamente al
ejecutar las operaciones PUSH y
POP.
Solamente se le da valor
inicialmente para establecer el
fondo de la pila.
PUSH A

SP SP
A (SP)

A (cima)

fondo

$FFFFFFFF
FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

42

Anexo: concepto de pila

Es habitual tener un registro en la


$00000000
CPU actuando como puntero a
pila (SP):
apunta siempre a la cima de la
SP
pila (o a la primera palabra libre
POP
por encima de la pila).
Se actualiza automticamente al
ejecutar las operaciones PUSH y
POP.
Solamente se le da valor
inicialmente para establecer el
fondo de la pila.

A (cima)

fondo

POP A

(SP) A
SP++ SP

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

$FFFFFFFF
43

Anexo: concepto de pila

Es habitual tener un registro en la


$00000000
CPU actuando como puntero a
pila (SP):
apunta siempre a la cima de la
SP
pila (o a la primera palabra libre
POP
por encima de la pila).
Se actualiza automticamente al
ejecutar las operaciones PUSH y
POP.
Solamente se le da valor
inicialmente para establecer el
fondo de la pila.

A
cima

fondo

POP A

(SP) A
SP++ SP

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

$FFFFFFFF
44

Anexo: concepto de pila

Aplicaciones en llamadas a subrutinas:

P
Preservar
lla direccin
di
i de
d retorno:
t

JSR <DE>

Salto a subrutina

SP 4 SP
PC (SP)
DE PC
<DE>

BSR <etiq>

Salto a subrutina relativo a PC

RTS

R
Retorno
de
d subrutina
b i

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

SP 4 SP
PC ((SP))
PC+despl PC

SP + 4 SP
(SP) PC

45

Anexo: concepto de pila

Aplicaciones en llamadas a subrutinas:

$00000000
P
Preservar
lla direccin
di
i de
d retorno:
t

bsr
(DDR)
rutina

rutina
move.w #1,d1
< >
<>
move.w #3,d4

<>
rts

a7

$FFFFFFFF
FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

46

Anexo: concepto de pila

Aplicaciones en llamadas a subrutinas:

$00000000
P
Preservar
lla direccin
di
i de
d retorno:
t

bsr
(DDR)
rutina

rutina
move.w #1,d1
< >
<>
move.w #3,d4

<>
rts

a7

DDR

$FFFFFFFF
FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

47

Anexo: concepto de pila

Aplicaciones en llamadas a subrutinas:

$00000000
P
Preservar
lla direccin
di
i de
d retorno:
t

bsr
(DDR)
rutina

rutina
move.w #1,d1
< >
<>
move.w #3,d4

<>
rts

a7

DDR

$FFFFFFFF
FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

48

Anexo: concepto de pila

Aplicaciones en llamadas a subrutinas:

$00000000
P
Preservar
lla direccin
di
i de
d retorno:
t

bsr
(DDR)
rutina

rutina
move.w #1,d1
< >
<>
move.w #3,d4

<>
rts

a7

DDR

$FFFFFFFF
FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

49

Anexo: concepto de pila

Aplicaciones en llamadas a subrutinas:

$00000000
P
Preservar
lla direccin
di
i de
d retorno:
t

bsr
(DDR)
rutina

rutina
move.w #1,d1
< >
<>
move.w #3,d4

<>
rts

a7

$FFFFFFFF
FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

50

Anexo: concepto de pila

Aplicaciones en llamadas a subrutinas:

$00000000
P
Preservar
lla direccin
di
i de
d retorno:
t

bsr
(DDR)
rutina

rutina
move.w #1,d1
< >
<>
move.w #3,d4

<>
rts

a7

$FFFFFFFF
FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

51

Anexo: concepto de pila

Aplicaciones en llamadas a subrutinas:

S l
Salvaguardar
d registros:
i t

$00000000

bsr
rutina

rutina
<>
move l d1,
move.l
d1 -(a7)
(a7)
a7
move.l d3,-(a7)
move.l a1,
a1,-(a7)
(a7)
(se modifican d1,d3,a1)
) ,
movea.l ((a7)+,a1
move.l (a7)+,d3
move.l (a7)+,d1
rts

a1

d3

d1

DDR

$FFFFFFFF

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

52

Anexo: concepto de pila

Aplicaciones en llamadas a subrutinas:

P
Paso
d
de parmetros:
t

$00000000

iniprog

rut

move.w
move w
move.w
bsr rut

move.w
move.w

par1,-(a7)
par2,
par2 -(a7)
(a7)

(6,a7),d0
((4,a7),d1
, ),

a7
4

DDR

par2

par1

$FFFFFFFF
FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

53

Anexo: concepto de pila

Aplicaciones en llamadas a subrutinas:

Almacenar variables locales:

Ejemplo: rutina que usa dos variables


locales tamao word.

rut
ut
var1
var2
i i t
inirut

Sin emplear la pila:

b a inirut
bra
ut
ds.w 1
ds.w 1
move.w #3,var1
#3
1
move.w #3,var2

addi.w #1,var1

rts

Inicializacin de variables locales

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

54

Anexo: concepto de pila

Aplicaciones en llamadas a subrutinas:

Almacenar variables locales:

$00000000
Ejemplo: rutina que usa dos variables
locales tamao word.

rut

Usando la pila (obligatorio en recursividad):

move.w
move
w #3,-(a7)
#3 -(a7)
move.w #3,-(a7)

addi.w #1,(2,a7)

adda.l #4,a7
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7

3 (var2)

3 (var1)

DDR

$FFFFFFFF

55

Anexo: concepto de pila

Aplicaciones en llamadas a subrutinas:

E
Esquema
generall de
d la
l pila:
il
$00000000

variables locales
registros
DDR
parmetros

$FFFFFFFF
FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

56

Ejemplos: paso de parmetros por pila

Enunciado: programar una rutina para sumar dos nmeros.


El paso de parmetros se hace por pila y el resultado se
debe guardar en la posicin del segundo parmetro.

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

57

Ejemplos: paso de parmetros por pila

Enunciado: programar una rutina para sumar dos nmeros.


El p
paso de parmetros
p
se hace por
p pila
p y el resultado se
debe guardar en la posicin del segundo parmetro.

sum1
sum2
2
result
inicio

org $400600
bra inicio
dc.w 4
d
dc.w
6
ds.w 1
move.w sum1,-(a7)
move.w sum2,-(a7)
bsr suma
move.w (a7)+,result
( ) ,
adda.l #2,a7
trap #11
dc.w 0

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

58

Ejemplos: paso de parmetros por pila

Enunciado: programar una


para sumar dos nmeros.
rutina p
El paso de parmetros se hace
por pila y el resultado se debe
guardar en la posicin del
segundo parmetro.

suma

move.l d0,
d0,-(a7)
(a7)
move.l d1,-(a7)
move.w (12,a7),d0
move.w (14,a7),d1
(14 7) d1
add.w d0,d1
move.w d1,(12,a7)
,( , )
move.l (a7)+,d1
move.l (a7)+,d0
rts

$00000000
4

d1

d0

DDR

sum2

sum1

$FFFFFFFF

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

59

Ejemplos: paso de parmetros por pila

Enunciado: programar una rutina para sumar dos nmeros.


El paso de parmetros se hace por pila y el resultado se
debe guardar en la posicin del segundo parmetro.
suma

move.l d0,-(a7)
move.w (10,a7),d0
add.w d0,(8,a7)
( ) ,
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

60

Ejemplos: paso de parmetros por secuencia de llamada

Enunciado: programar una rutina para sumar dos nmeros. El paso de


parmetros se hace por secuencia de llamada y el resultado se debe
guardar en la posicin del segundo parmetro.

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

61

Ejemplos: paso de parmetros por secuencia de llamada

Enunciado: programar una rutina para sumar dos nmeros. El paso de


parmetros se hace por secuencia de llamada y el resultado se debe
guardar en la posicin del segundo parmetro.
parmetro

sum1
sum2
result
inicio
par1
par2

org $400600
bra inicio
dc.w 4
dc.w 6
ds.w 1
move.w sum1,par1
move.w sum2,par2
bsr suma
ds.w 1
ds w 1
ds.w
move.w par2,result
trap #11
dc w 0
dc.w

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

62

Ejemplos: paso de parmetros por secuencia de llamada

Enunciado: programar una


para sumar dos nmeros.
rutina p
El paso de parmetros se hace
por secuencia de llamada y el
resultado se debe guardar en la
posicin
del segundo parmetro.

suma

move.l d0,
d0,-(a7)
(a7)
move.l a1,-(a7)
movea.l (8,a7),a1
move.w (a1),d0
( 1) d0
add.w d0,(2,a1)
move.l ((a7)+,a1
) ,
move.l (a7)+,d0
addi.l #4,(a7)
rts

$00000000
4

a1

d0

DDR

$FFFFFFFF

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

63

Ejemplos: clculo del factorial

Enunciado: Se pide calcular el factorial de un nmero de


forma recursiva.
recursiva Se recibe el nmero en tamao word en la
pila y se devuelve el resultado en esa misma posicin de la
pila en tamao word.

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

64

Ejemplos: clculo del factorial

Enunciado: Se pide calcular el factorial de un nmero de


forma recursiva.
recursiva Se recibe el nmero en tamao word en la
pila y se devuelve el resultado en esa misma posicin de la
pila en tamao word.
f = factorial (n)
Si n>1
f = factorial (n-1);
f=n
n*f;
f;
Si no
f = 1;
Fin Si
Fin

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

65

Ejemplos: clculo del factorial

Ejemplo: n=3

f = factorial(3)
f = factorial(2);
f = 3*f;

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

66

Ejemplos: clculo del factorial

Ejemplo: n=3

f = factorial(3)
f = factorial(2);
f = 3*f;

f = factorial(2)
f = ffactorial(1);
l( )
f = 2*f;

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

67

Ejemplos: clculo del factorial

Ejemplo: n=3

f = factorial(3)
f = factorial(2);
f = 3*f;

f = factorial(2)
f = ffactorial(1);
l( )
f = 2*f;

f = factorial(1)
f = 1;

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

68

Ejemplos: clculo del factorial

Ejemplo: n=3

f = factorial(3)
f = factorial(2);
f = 3*f;

f = factorial(2)
f = ffactorial(1);
l( )
f = 2*f;

f = factorial(1)
1

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

f = 1;

69

Ejemplos: clculo del factorial

Ejemplo: n=3

f = factorial(3)
f = factorial(2);
f = 3*f;

f = factorial(2)
2

f = ffactorial(1);
l( )
f = 2*f;

f = factorial(1)
1

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

f = 1;

70

Ejemplos: clculo del factorial

Ejemplo: n=3

Prog principal
6
f = factorial(3)
f = factorial(2);
f = 3*f;

f = factorial(2)
2

f = ffactorial(1);
l( )
f = 2*f;

f = factorial(1)
1

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

f = 1;

71

Ejemplos: clculo del factorial

f
inicio
(DDR1)

org $400600
bra inicio
ds.w 1
move.w #3,-(a7)
bsr factorial
move.w (a7)+,f
trap #11
dc w 0
dc.w

a7

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

DDR1

3 (param)
72

Ejemplos: clculo del factorial

Enunciado: Se pide calcular el factorial de un nmero de


forma recursiva.
recursiva Se recibe el nmero en tamao word en la
pila y se devuelve el resultado en esa misma posicin de la
pila en tamao word.
factorial

move.l d0,-(a7)
,( )
move.w (8,a7),d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move w d0
move.w
d0,-(a7)
-(a7)
bsr factorial

(DDR2)

esUno
retorno

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

move.w (a7)+,d0
mulu.w (8,a7),d0
move.w d0,(8,a7)
bra retorno
move.w #1,(8,a7)
move.l (a7)+,d0
rts

73

Ejemplos: clculo del factorial

Enunciado: Se pide calcular el factorial de un nmero de


forma recursiva.
recursiva Se recibe el nmero en tamao word en la
pila y se devuelve el resultado en esa misma posicin de la
pila en tamao word.
factorial

move.l d0,-(a7)
,( )
move.w (8,a7),d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move w d0
move.w
d0,-(a7)
-(a7)
bsr factorial

(DDR2)

esUno
retorno

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

move.w (a7)+,d0
mulu.w (8,a7),d0
move.w d0,(8,a7)
bra retorno
move.w #1,(8,a7)
move.l (a7)+,d0
rts

74

Ejemplos: clculo del factorial

f
inicio
(DDR1)

org $400600
bra inicio
ds.w 1
move.w #3,-(a7)
bsr factorial
move.w (a7)+,f
trap #11
dc w 0
dc.w

a7

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

DDR1

3 (param)
75

Ejemplos: clculo del factorial


factorial

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l

(DDR2)

a7

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

DDR1

3 (param)
76

Ejemplos: clculo del factorial


factorial

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l

(DDR2)
a7

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

valor inic d0

DDR1

3 (param)
77

Ejemplos: clculo del factorial


factorial

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l

(DDR2)
a7

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

valor inic d0

DDR1

3 (param)
78

Ejemplos: clculo del factorial


factorial

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l

(DDR2)
a7

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

2 (param)

valor inic d0

DDR1

3 (param)
79

Ejemplos: clculo del factorial


factorial

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l

(DDR2)

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7
4

DDR2

2 (param)

valor inic d0

DDR1

3 (param)
80

Ejemplos: clculo del factorial


factorial

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l

(DDR2)

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7
4

valor d0

DDR2

2 (param)

valor inic d0

DDR1

3 (param)
81

Ejemplos: clculo del factorial


factorial

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l

(DDR2)

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7
4

valor d0

DDR2

2 (param)

valor inic d0

DDR1

3 (param)
82

Ejemplos: clculo del factorial


factorial

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l

(DDR2)

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7

1 (param)

valor d0

DDR2

2 (param)

valor inic d0

DDR1

3 (param)
83

Ejemplos: clculo del factorial


factorial

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l

(DDR2)

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7
4

DDR2

1 (param)

valor d0

DDR2

2 (param)

valor inic d0

DDR1

3 (param)
84

Ejemplos: clculo del factorial


a7
7

factorial

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l

(DDR2)

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

valor d0

DDR2

1 (param)

valor d0

DDR2

2 (param)

valor inic d0

DDR1

3 (param)
85

Ejemplos: clculo del factorial


a7
7

factorial

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l

(DDR2)

esUno

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

valor d0

DDR2

1 (param)

valor d0

DDR2

2 (param)

valor inic d0

DDR1

3 (param)
86

Ejemplos: clculo del factorial


a7
7

factorial

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l

(DDR2)

esUno
retorno

move.w
move
w #1,(8,a7)
#1 (8 a7)
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

valor d0

DDR2

1 (param)

valor d0

DDR2

2 (param)

valor inic d0

DDR1

3 (param)
87

Ejemplos: clculo del factorial


a7
7

factorial

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l

(DDR2)

esUno
retorno

move.w
move
w #1,(8,a7)
#1 (8 a7)
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

valor d0

DDR2

1 (resul)

valor d0

DDR2

2 (param)

valor inic d0

DDR1

3 (param)
88

Ejemplos: clculo del factorial


factorial

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l

(DDR2)

esUno
retorno

move.w
move
w #1,(8,a7)
#1 (8 a7)
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7
4

DDR2

1 (resul)

valor d0

DDR2

2 (param)

valor inic d0

DDR1

3 (param)
89

Ejemplos: clculo del factorial


factorial

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l

(DDR2)

esUno
retorno

move.w
move
w #1,(8,a7)
#1 (8 a7)
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7

1 (resul)

valor d0

DDR2

2 (param)

valor inic d0

DDR1

3 (param)
90

Ejemplos: clculo del factorial


factorial

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l

(DDR2)

esUno
retorno

move.w
move
w #1,(8,a7)
#1 (8 a7)
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7

1 (resul)

valor d0

DDR2

2 (param)

valor inic d0

DDR1

3 (param)
91

Ejemplos: clculo del factorial


factorial

(DDR2)

esUno
retorno

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l
move.w (a7)+,d0
mulu.w (8,a7),d0
move.w d0,(8,a7)
bra retorno
move w #1,(8,a7)
move.w
#1 (8 a7)
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7

1 (resul)

valor d0

DDR2

2 (param)

valor inic d0

DDR1

3 (param)
92

Ejemplos: clculo del factorial


factorial

(DDR2)

esUno
retorno

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l
move.w (a7)+,d0
mulu.w (8,a7),d0
move.w d0,(8,a7)
bra retorno
move w #1,(8,a7)
move.w
#1 (8 a7)
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7
4

valor d0

DDR2

2 (param)

valor inic d0

DDR1

3 (param)
93

Ejemplos: clculo del factorial


factorial

(DDR2)

esUno
retorno

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l
move.w (a7)+,d0
mulu.w (8,a7),d0
move.w d0,(8,a7)
bra retorno
move w #1,(8,a7)
move.w
#1 (8 a7)
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7
4

valor d0

DDR2

2 (param)

valor inic d0

DDR1

3 (param)
94

Ejemplos: clculo del factorial


factorial

(DDR2)

esUno
retorno

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l
move.w (a7)+,d0
mulu.w (8,a7),d0
move.w d0,(8,a7)
bra retorno
move w #1,(8,a7)
move.w
#1 (8 a7)
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7
4

valor d0

DDR2

2*1 (resul)

valor inic d0

DDR1

3 (param)
95

Ejemplos: clculo del factorial


factorial

(DDR2)

esUno
retorno

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l
move.w (a7)+,d0
mulu.w (8,a7),d0
move.w d0,(8,a7)
bra retorno
move w #1,(8,a7)
move.w
#1 (8 a7)
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7
4

valor d0

DDR2

2*1 (resul)

valor inic d0

DDR1

3 (param)
96

Ejemplos: clculo del factorial


factorial

(DDR2)

esUno
retorno

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l
move.w (a7)+,d0
mulu.w (8,a7),d0
move.w d0,(8,a7)
bra retorno
move w #1,(8,a7)
move.w
#1 (8 a7)
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7
4

DDR2

2*1 (resul)

valor inic d0

DDR1

3 (param)
97

Ejemplos: clculo del factorial


factorial

(DDR2)

esUno
retorno

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l
move.w (a7)+,d0
mulu.w (8,a7),d0
move.w d0,(8,a7)
bra retorno
move w #1,(8,a7)
move.w
#1 (8 a7)
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7

2*1 (resul)

valor inic d0

DDR1

3 (param)
98

Ejemplos: clculo del factorial


factorial

(DDR2)

esUno
retorno

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l
move.w (a7)+,d0
mulu.w (8,a7),d0
move.w d0,(8,a7)
bra retorno
move w #1,(8,a7)
move.w
#1 (8 a7)
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7
4

valor inic d0

DDR1

3 (param)
99

Ejemplos: clculo del factorial


factorial

(DDR2)

esUno
retorno

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l
move.w (a7)+,d0
mulu.w (8,a7),d0
move.w d0,(8,a7)
bra retorno
move w #1,(8,a7)
move.w
#1 (8 a7)
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7
4

valor inic d0

DDR1

3 (param)
100

Ejemplos: clculo del factorial


factorial

(DDR2)

esUno
retorno

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l
move.w (a7)+,d0
mulu.w (8,a7),d0
move.w d0,(8,a7)
bra retorno
move w #1,(8,a7)
move.w
#1 (8 a7)
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7
4

valor inic d0

DDR1

3*2 (resul)
101

Ejemplos: clculo del factorial


factorial

(DDR2)

esUno
retorno

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l
move.w (a7)+,d0
mulu.w (8,a7),d0
move.w d0,(8,a7)
bra retorno
move w #1,(8,a7)
move.w
#1 (8 a7)
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7
4

valor inic d0

DDR1

3*2 (resul)
102

Ejemplos: clculo del factorial


factorial

(DDR2)

esUno
retorno

move.l d0,-(a7)
move w (8
move.w
(8,a7),d0
a7) d0
cmpi.w #1,d0
ble esUno
subi.w #1,d0
move.w d0,-(a7)
b factorial
bsr
f
l
move.w (a7)+,d0
mulu.w (8,a7),d0
move.w d0,(8,a7)
bra retorno
move w #1,(8,a7)
move.w
#1 (8 a7)
move.l (a7)+,d0
rts

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

a7
4

DDR1

3*2 (resul)
103

Ejemplos: clculo del factorial

f
inicio
(DDR1)

org $400600
bra inicio
ds.w 1
move.w #3,-(a7)
bsr factorial
move.w (a7)+,f
trap #11
dc w 0
dc.w

a7
FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

6 (resul)
104

Ejemplos: clculo del factorial

f
inicio
(DDR1)

org $400600
bra inicio
ds.w 1
move.w #3,-(a7)
bsr factorial
move.w (a7)+,f
trap #11
dc w 0
dc.w

a7
FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

105

Ejercicio: problema P4 boletn 3

Se tiene una sucesin numrica que viene descrita por la siguiente frmula:
F(n) =

Si n = 0

5*F(n-1)+n

Si n > 0

Se pide:

Un programa principal, donde se le pasa a la rutina el trmino N, se llama a la rutina y se


recupera el resultado de la pila, almacenndolo en la posicin con etiqueta RES. Se
suponen definidas las etiquetas N y RES, correspondientes al trmino a calcular y al
resultado. Dichos elementos tendrn tamao de 16 bits.
Una rutina recursiva que recibe el parmetro N del programa principal y realiza el clculo
de F(N) segn la frmula indicada. El resultado debe ser devuelto por la pila.

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

106

Ejercicio: problema P4 boletn 3

Pseudocdigo:
f = funcion (n)
Si n>0
>0
f = funcion (n-1);
f = n + 5*f;
Si no
f = 0;
Fin Si
Fin

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

107

Ejercicio: problema P4 boletn 3

Ejemplo: n=2

f = funcion(2)
f = 2+5*funcion(1);

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

108

Ejercicio: problema P4 boletn 3

Ejemplo: n=2

f = funcion(2)
f = 2+5*funcion(1);
f = funcion(1)
f = 1+5*funcion(0);
*f
( )

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

109

Ejercicio: problema P4 boletn 3

Ejemplo: n=2

f = funcion(2)
f = 2+5*funcion(1);
f = funcion(1)
f = 1+5*funcion(0);
*f
( )
f = funcion(0)
f = 0;

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

110

Ejercicio: problema P4 boletn 3

Ejemplo: n=2

f = funcion(2)
f = 2+5*funcion(1);
f = funcion(1)
f = 1+5*funcion(0);
*f
( )
f = funcion(0)
f = 0;

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

111

Ejercicio: problema P4 boletn 3

Ejemplo: n=2

f = funcion(2)
f = 2+5*funcion(1);
f = funcion(1)
f = 1+5*funcion(0);
*f
( )
f = funcion(0)
f = 0;

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

112

Ejercicio: problema P4 boletn 3

Ejemplo: n=2

Prog principal

f = funcion(2)
f = 2+5*funcion(1);
f = funcion(1)
f = 1+5*funcion(0);
*f
( )
f = funcion(0)
f = 0;

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

113

Ejercicio: problema P4 boletn 3

Programa principal

N
RES
inicio

org $400600
bra inicio
dc.w 2
ds w 1
ds.w
move.w N,-(a7)
bsr funcion
move.w (a7)+,RES
p #11
trap
dc.w 0

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

114

Ejercicio: problema P4 boletn 3

Rutina recursiva:

funcion

move.l d0,-(a7)
move.w ((8,a7),d0
, ),
cmpi.w #0,d0
ble esCero
subi.w #1,d0
move.w d0,-(a7)
bsr funcion

esCero
finrut

FUNDAMENTOS DE COMPUTADORES Ingeniera de Telecomunicacin

move.w (a7)+,d0
mulu.w #5,d0
add.w (8,a7),d0
move.w d0,(8,a7)
bra finrut
move.w #0,(8,a7)
move.l (a7)+,d0
rts

115

Das könnte Ihnen auch gefallen