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

Programación en lenguaje esamblador

Sergio Daniel Garcia RojasPráctica o problema28 de Octubre de 2015

2.444 Palabras (10 Páginas)242 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 dato

mov a,r1

clr acc.0 ;alternatica de resta del 1

mov @r0,a

mov a,r2

inc r0 ;posiciones de memoria

inc r3 ;contador de bits diferentes

djnz r1,conteo

mov 27h,r3

sjmp salir

salir:

sjmp salir

end

XIII. EJERCICIO 13

Sumar un n´umero decimal que se encuentra en la posici´on

de memoria 25H con otro n´umero decimal que est´a en la

posici´on de memoria 26H. El resultado que debe quedar en

decimal se guarda en la posici´on de memoria 28H. Si el

resultado es mayor que 99, la posici´on de memoria 27H debe

ser igual a #01H, de lo contrario, 27H = #00H. Ej: 67+ 86

= 153 por lo tanto 27H = #01H, 28H = #53H.

num1 equ 25h

num2 equ 26h

res equ 28h

inicio:

mov a,num1

add a,num2

da a

mov res,a

jc mayor

jb psw.6,mayor

mov 27h,#00h

sjmp inicio

mayor:

mov 27h,#01h

sjmp inicio

end

XIV. EJERCICIO 14

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

memoria 25H con el n´umero decimal que est´a en la posici´on

de memoria 26H. El resultado que debe quedar en decimal

se guarda en la posici´on de memoria 28H. Si el n´umero

en 25H es menor que el n´umero en 26H entonces 27H =

#01H (resultado negativo), de lo contrario 27H = #00H

(resultado positivo).

Ej: 25H = #15H, 26H = #64H (numeros 15 y 64 en

decimal)

teniendo como resultado que:

27H = #01H y 28H = #49H que equivale a: 15 ?? 64 =

??49.

num1 equ 25h

num2 equ 26h

inicio:

clr c

mov a,num1

da a

mov num1,a

mov a,num2

da a

mov num2,a

mov a, num1

cjne a, num2,dif

mov 27h,#00h

mov 28h,#00h

sjmp inicio

dif:

jc cambiar

mov a,num1

subb a,num2

subb a,#06h

mov 28h,a

sjmp inicio

cambiar:

mov 27h,#01h

mov a,num1

mov num1,num2

mov num2,a

clr c

sjmp dif

end

4

XV. EJERCICIO 15

Sumar dos n´umeros de 16 bits (2 posiciones de memoria

por numero).

inicio:

mov a,26h

add a,36h

mov 46h,a

mov a,25h

addc a,35h

jc cent

mov 45h,a

sjmp inicio

cent:

mov 44h,#01h

mov 45h,a

sjmp inicio

end

XVI. EJERCICIO 16

Restar dos n´umeros de 16 bits.

inicio:

mov a,26h

subb a,36h

mov 46h,a

mov a,25h

subb a,35h

mov 45h,a

sjmp inicio

end

XVII. EJERCICIO 17

Calcular

...

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