0% encontró este documento útil (0 votos)
74 vistas3 páginas

Programación en Assembly CISC2: Ejemplos

El primer documento presenta tres ejemplos de programación en ensamblador CISC2. El primer ejemplo muestra un programa que suma una lista de 256 números almacenados en memoria. El segundo ejemplo implementa el algoritmo clásico de multiplicación para operandos de 8 bits. El tercer ejemplo desarrolla un programa que calcula el mínimo y máximo de dos números almacenados en memoria.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
74 vistas3 páginas

Programación en Assembly CISC2: Ejemplos

El primer documento presenta tres ejemplos de programación en ensamblador CISC2. El primer ejemplo muestra un programa que suma una lista de 256 números almacenados en memoria. El segundo ejemplo implementa el algoritmo clásico de multiplicación para operandos de 8 bits. El tercer ejemplo desarrolla un programa que calcula el mínimo y máximo de dos números almacenados en memoria.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UNIVERSIDAD DISTRITAL FRANCISCO JOSE DE CALDAS

FACULTAD DE INGENIERIA
PROYECTO CURRICULAR DE INGENIERÌA ELECTRÓNICA
DIGITALES II

EJEMPLOS DE PROGRAMACION EN ASSEMBLER CISC2

1. Desarrolle un programa que permita sumar una lista de 256 números ubicados
en memoria a partir de la posición F000.

Solución:

Primero se desarrolla un algoritmo luego se sigue con su codificación. Un posible


algoritmo en este caso sería:

Inicio: Suma = 0
Índice = 0100
Bucle: Si índice = 0 vaya a guardar, sino haga
Val=mem[ EFFF + índice]
Suma = suma + val
Índice = índice -1
Vaya a bucle
Guardar: resultado = suma
Fin

Una vez desarrollado el algoritmo se asignan registros y posiciones de memoria. En este


caso una posible asignación sería:

1. Suma quedará en el registro R0


2. Índice quedará en el registro R1
3. Val quedará en el registro R2
4. Resultado quedará en la posición FFFF

Luego de haber asignado registros se identifican las operaciones del algoritmo y sus
correspondientes instrucciones:

1. Suma = 0 , carga inmediata


2. Índice = 0100, carga inmediata
3. Si índice = 0, Bifurcación con cero
4. Val=mem[ EFFF + índice] carga relativa
5. Suma = suma + val, adición
6. Indice = índice -1 , decremento
7. Vaya a bucle, salto incondicional
8. Resultado = suma, almacenamiento directo
Así las cosas el correspondiente programa queda listado como:

Inicio: LDinm R0, 0000


LDinm R1,0100
Bucle: BZ Guardar
LDrel R2,R1,EFFF
ADD R0,R0,R2
DEC R1,R1
Jump bucle
Guardar: STdir R0,FFFF
Fin: Jump Fin

2. Desarrolle un programa que implemente el algoritmo clásico de multiplicación,


considere que la longitud de los operandos es de 8 bits.

El algoritmo clásico de multiplicación se enuncia de la siguiente forma:

Inicio: x = multiplicador
Y= multiplicando
Prod = 0
Bucle: Si x(0) = 0 vaya a Desp, sino haga
Prod = prod + y
Desp: y = y << 0
x = 0 >> x
Si x= 0 vaya a guardar, sino vaya a bucle
Guardar: resultado = producto
Fin

Programa:

Se supone que el multiplicador y el multiplicando están almacenados en las posiciones


de
memoria FFFD y FFFE respectivamente. Al final el producto quedará almacenado en la
posición FFFF

Inicio: LDdir r0,FFFD


LDfir r1,FFFE
LDinm r2,000
SR r0,r0
Bucle: BNCy desp
ADD r2,r2,r1
Desp: SL r1,r1
SR r0,r0
BNZ bucle
Guardar: STdir r2, FFFF
Fin: Jump Fin
3. Desarrolle un programa que permita calcular el mínimo y el máximo de dos
números almacenados en memoria. Los números están almacenados en las
posiciones 8000 y 8001. El mínimo deberá quedar almacenado en la posición FFFE
y el máximo en la posición FFFF.

Algoritmo:

Leer A

Leer B

Resta = A-B

Si resta > 0 {Máximo = A

Mínimo = B}

Si no

{Maximo = B

Mínimo = A}

Guardar máximo

Guardar mínimo

Fin

Programa:

Inicio: LDdir R0,8000


LDdir R1,8001
Test R0,R1
Bmsb op1
Move R3,R0
Move R4,R1
Jump Guardar
Op1: Move R3,R1
Move R4,R0
Guardar: STdir R4,FFFE
STdir R3,FFFF
Fin: Jump Fin

También podría gustarte