ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Programación en lenguaje esamblador


Enviado por   •  28 de Octubre de 2015  •  Prácticas o problemas  •  2.444 Palabras (10 Páginas)  •  191 Visitas

Página 1 de 10

1

Taller 1: Simulaci´on

Asignatura: Estructuras Computacionales

Docente: Jaime Le´on Hincapie

Monitor: Yohan Ricardo C´espedes Villar

Universidad Nacional de Colombia - Sede Manizales

Departamento de Ingenier´ia El´ectrica, Electr´onica y Computaci´on.

Abstract— En este documento se presenta una de

las muchas soluciones posibles para cada problema

planteado. Los c´odigos deben ser usados en un software

de simulaci´on compatible con los microcontroladores

Atmel de la serie 80C5X, bien sea Pinnacle o MCU.

El software de Simulaci´on se encuentra en el siguiente link:

http://xurl.es/m1ec7

I. EJERCICIO 1

Hallar el complemento del n´umero que se encuentre en la

posici´on de memoria 25H. El resultado se debe almacenar en

la posici´on de memoria 26H.

inicio:

mov a,25h

cpl a

mov 26h,a

sjmp inicio

end

II. EJERCICIO 2

Dividir en 2 nibbles el n´umero que se encuentre en la

posici´on de memoria 25H e intercambiarlos, es decir, el nibble

m´as significativo debe quedar en el menos significativo y

viceversa.

inicio:

mov a,25h

swap a

mov 26h,a

sjmp inicio

end

III. EJERCICIO 3

Dividir en 2 nibbles e intercambiar los menos significativos

de las posiciones de memoria 25H y 26H. Guardar los

resultados en 27H y 28H.

Ej: 25H = #15H y 26H = #36H

entonces 27H = #16H y 28H = #35H.

mov 25h,#15h

mov 26h,#36h

inicio:

mov a,25h

mov r0,#26h

xchd a,@r0

mov 27h,a

mov 28h,26h

sjmp inicio

end

IV. EJERCICIO 4

Intercambiar los 2 bits m´as significativos con los 2 bits

menos significativos del contenido que est´a en la posici´on

de memoria 25H y guardar el resultado en la posici´on de

memoria 26H.

Ej: 25H = #5BH = 01011011B

entonces 26H = #D9H = 11011001B.

inicio:

;guardo en registros cada par de bits

mov r0,25h

mov a,#03h

anl a,r0

mov r1,a

mov a,#0c0h

anl a,r0

mov r2,a

mov a,r0

subb a,r2

subb a,r1

;desplazo los bits a sus nuevas posiciones

mov r4,a

mov a,r2

rl a

rl a

mov r2,a

mov a,r1

rr a

rr a

mov r1,a

;se genera el resultado final por medio de la suma

mov a,r4

add a,r1

add a,r2

mov 26h,a

sjmp inicio

end

V. EJERCICIO 5

Sumar el n´umero que se encuentra en la posici´on de

memoria 25H con el que est´a en la posici´on de memoria 26H.

2

El resultado se debe almacenar en la posici´on 27H.

mov 25h,#04h

mov 26h,#07h

inicio:

mov a,25h

add a,26h

mov 27h,a

sjmp inicio

end

VI. EJERCICIO 6

Restar el n´umero que se encuentra en la posici´on de

memoria 25H con el que est´a en la posici´on de memoria 26H.

El resultado se debe almacenar en la posici´on 27H.

mov 25h,#07h

mov 26h,#02h

inicio:

mov a,25h

subb a,26h

mov 27h,a

sjmp inicio

end

VII. EJERCICIO 7

Correr el contenido de la posici´on de memoria 25H un bit

a la izquierda y almacenar el resultado en 26H, el bit a la

derecha debe ser cero.

inicio:

mov a,25h

rl a

clr acc.0

sjmp inicio

end

VIII. EJERCICIO 8

Tomar el dato de la posici´on de memoria 25H, si el n´umero

de unos que contiene es par, sumarle 5, si es impar sumarle

3. Almacenar el resultado en la posici´on de memoria 26H, si

hay acarreo (carry) entonces 26H debe quedar en cero.

inicio:

mov a,25h

jb p,impar

add a,#05h

jc limpiar

mov 26h,a

sjmp inicio

impar:

add a,#03h

jc limpiar

mov 26h,a

sjmp inicio

limpiar:

mov 26h,#00h

sjmp inicio

end

IX. EJERCICIO 9

Multiplicar el contenido de las posiciones de memoria 25H

y 26H, el resultado debe quedar almacenado en las posiciones

de memoria 27H y 28H.

mov 25h,#17h

mov 26h,#02h

inicio:

mov a,25h

mov b,26h

mul ab

mov 27h,a

mov 28h,27h

sjmp inicio

end

X. EJERCICIO 10

Dividir el contenido de la posici´on de memoria 25H con lo

que hay en la posici´on de memoria 26H y guardar el cociente

en 27H y el residuo en 28H. Si el valor que hay en la posici´on

26H es cero, entonces 27H = #0FFH.

inicio:

mov a,26h

cjne a,#00h,dividir

mov 27h,#0ffh

sjmp inicio

dividir:

mov a,25h

mov b,26h

div ab

mov 27h,a

mov 28h,b

sjmp inicio

end

XI. EJERCICIO 11

Compara dos n´umeros a y b que est´an en 25H y 26H

respectivamente, y establecer lo siguiente:

Si a > b entonces 27H = #0FFH y 28H = #00H

Si a = b entonces 27H = #00H y 28H = #00H

Si a < b entonces 27H = #00H y 28H = #0FFH

mov 25h,#03h

mov 26h,#03h

inicio:

mov a,25h

mov b,26h

cjne a,b,dif ;si a<b, hay carry

mov 27h,#00h ;a=b

mov 28h,#00h

sjmp inicio

dif:

jc menor

mov 27h,#0ffh ;a>b no carry

3

mov 28h,#00h

sjmp inicio

menor:

mov 27h,#00h ;a<b hay carry

mov 28h,#0ffh

sjmp inicio

end

XII. EJERCICIO 12

Comparar bit a bit los contenidos de las posiciones de

memoria 25H y 26H y establecer el n´umero de bits en

los cuales son diferentes, guardar el dato en la posici´on de

memoria 27H y a partir de la posici´on de memoria 28H

guardar las posiciones de los bits diferentes (la posicion 0

corresponde al bit menos significativo). Ej:

25H = #00H = 00000000B, 26H = #05H = 00000101B

entonces 27H = #02H (2 bits diferentes)

por lo tanto 28H = #00H y 29H = #02H (los que estan

en las posiciones 0 y 2).

inicio:

mov a,25h

mov b,26h

xrl a,b

conteo:

rlc a

jc cont

djnz r1,conteo

mov 27h,r3

sjmp salir

cont:

mov r2,a ;guardo temporalmente el

...

Descargar como (para miembros actualizados) txt (18 Kb) pdf (75 Kb) docx (28 Kb)
Leer 9 páginas más »
Disponible sólo en Clubensayos.com