You are on page 1of 10

UNIVERSIDAD MAYOR DE SAN ANDRS

FACULTAD DE IINGENIIERA FACULTAD DE NGEN ER A

DOCENTE: Ing. Jos Manuel Loza Vargas UNIVERSITARIO: Borja Segovia Bertha Anglica

LA PAZ BOLIVIA

LABORATORIO N 1
1. Realice un programa en assembler 8051 para multiplicar dos nmeros mediante sumas sucesivas. DIAGRAMA DE FLUJO I

NUM1,NUM2

AUX=NUM1 ACU=NUM1

ACU=ACU+NUM2 RESUL=ACU AUX=AUX-1

NO AUX=0 SI

FIN

CODIGO FUENTE
; MULTIPLICACION MEDIANTE SUMA SUCESIVA DATO1 DATO2 RESULTADO EQU 21H ORG 0H MOV JZ MOV JZ A,#DATO1 SALIR A,#DATO2 SALIR EQU 00DCH ; 1 NUMERO HEXADECIMAL EQU 00FFH ; 2 NUMERO HEXADECIMAL ; ULTIMA POSICION DE MEMORIA DEL RESULTADO

; COMPROBAMOS SI EL PRIMER NUMERO NO ES CERO ; COMPROBAMOS SI EL SEGUNDO NUMERO NO ES CERO

; COLOCAMOS EN LA VARIABLE AUXILIAR CUANTAS VECES VA A SUMAR ; EL SEGUNDO NUMERO Y ESTE MISMO LO GUARDAMOS EN EL RESULTADO MOV DEC MOV SUMA: MOV ADD MOV JC JNC CARRY: MOV ADD MOV A,RESULTADO-1 A,#01H RESULTADO-1,A ; CARGA LA PARTE SUPERIOR DEL RESULTADO ; LE SUMA EL CARRY PRODUCIDO ; GUARDA EL NUEVO RESULTADO A,RESULTADO A,#DATO2 RESULTADO,A CARRY SIGUE ; EL VALOR DE LA SUMA PARCIAL CARGAMOS AL ACUMULADOR ; SUMAMOS EL VALOR DEL 2 NUMERO A LA SUMA PARCIAL ; GUARDAMOS LA SUMA EN EL RESULTADO ; COMPROBAMOS SI SE PRODUJO CARRY ; SI NO SIGUE SUMANDO SINO SALTA A CARRY R0,#DATO1 R0 RESULTADO,#DATO2

SIGUE: ; VERIFICA SI YA SE TERMINO DE SUMAR, POR NO SALTA A SUMA DEC CJNE SALIR: END R0 R0,#0,SUMA

PRUEBAS Haremos 3 pruebas: i. Cuando la multiplicacin se mantiene en 8 bits

RESULTADO

ii.

Cuando uno de los nmeros es 0

RESULTADO

iii.

Cuando la multiplicacin es mas de 8 bits

RESULTADO

2. El 8051 maneja datos de 8 bits, realice en cdigo assembler un programa que sume nmeros de 16 bits. DIAGRAMA DE FLUJO I

NUM1a,NUM1b, NUM2a,NUM2b

ACU = NUM1b + NUM2b RESULTADO c = ACU

NO

CARRY=1

SI

RESULTADO b = 1

ACU = RESULTADO b + NUM1a RESULTADO c = ACU

NO

CARRY=1

SI

RESULTADO c = 1

ACU = RESULTADO b + NUM2a RESULTADO c = ACU

NO

CARRY=1

SI

RESULTADO c = 1

FIN

CODIGO FUENTE
;SUMA DE 16 BITS DE 2 NUMEROS DATO1A DATO1B DATO2A DATO2B RESULTADO EQU 03H ORG 0H MOV ADD A,#DATO1B A,#DATO2B ; SUMAMOS LOS BITS DE MENOR PESO POSICIONAL EQU 0012H EQU 0095H EQU 0078H EQU 0035H ; PRIMEROS 8 BITS DEL 1 # ; SIGUIENTES 8 BITS DEL 1 # ; PRIMEROS 8 BITS DEL 2 # ; SIGUIENTES 8 BITS DEL 2 # ; DIRECCION DE DONDE TERMINARA EL RESULTADO

; COLOCAMOS EL RESULTADO EN LA ULTIMA DIRECCION DEL RESULTADO MOV JC JNC RESULTADO,A CARRY SIGUE

; PREGUNTAMOS SI EN LA SUMA ANTERIOR EXISTIO CARRY ; POR NO SIGUE LA SUMA SINO SALTA A CARRY

CARRY: ; COLOCAMOS EN EL RESULTADO EL ACARREO QUE SE PRODUJO MOV SIGUE: MOV A,#DATO1A RESULTADO-1,#01H

; SUMAMOS POR SI ACASO SE PRODUJO CARRY EN LA ANTERIOR OPERACION Y ; VEMOS SI SE PRODUCE OTRO CARRY ADD JC JNC A,RESULTADO-1 CARRY2 SIGUE2

; PREGUNTAMOS SI EN LA SUMA ANTERIOR EXISTIO CARRY ; POR NO SIGUE LA SUMA SINO SALTA A CARRY2

CARRY2: ; COLOCAMOS EN EL RESULTADO EL ACARREO QUE SE PRODUJO MOV RESULTADO-2,#01H SIGUE2: ; SUMAMOS POR SI ACASO SE PRODUJO CARRY EN LA ANTERIOR OPERACION Y ; VEMOS SI SE PRODUCE OTRO CARRY ADD MOV JC JNC CARRY3: MOV SIGUE3: END RESULTADO-2,#01H A,#DATO2A RESULTADO-1,A CARRY3 SIGUE3

; PREGUNTAMOS SI EN LA SUMA ANTERIOR EXISTIO CARRY ; POR NO SIGUE LA SUMA SINO SALTA A CARRY3

PRUEBAS Haremos 3 pruebas: i. Cuando la suma se mantiene en 8 bits

RESULTADO

ii.

Cuando la suma se mantiene entre mas de 8 bits hasta 16 bits

RESULTADO

iii.

Cuando la suma excede los 16 bits

RESULTADO

3. Analice los siguientes cdigos, realice una prueba de escritorio y describa qu utilidad tienen. a)

Sol: Este ejercicio es un retardo, el motivo por el cual se utiliza los comandos MOV B,R0 y MUL AB son para tener un mayor retardo como podemos verificar en las pruebas, ademas que el acumulador actua como variable independiente quien controlara el retardo desde 10s cuando A=2 a 2ms y 305 s cuando A=1, variendo estas cantidades de 9 s en 9 s. Por ejemplo si quitamos estas 2 operaciones se producir un retardo de 766 s con A=0, si solo quitamos MUL AB se producir un retardo de 1ms y 276 s con A=0 y si tomamos en cuenta todo el ejercicio se producir un retardo de 2ms y 296 s con A=0, esto se debe a que:

1s 1s 2s 4s 2s

Como se puede ver cada instruccin tiene diferente tiempo. DIAGRAMA DE FLUJO I
R0 = ACU

R0 = R0 1 B = R0 BA =A * B NO R0 = 1 SI

FIN

PRUEBAS Haremos 3 pruebas:


i.

Quitando las operaciones B = R0 y BA =A * B

ii.

Quitando la operacin BA =A * B

iii.

Sin quitar cdigo

b)

Sol: Este ejercicio tambin es un retardo, el acumulador actua como variable independiente quien controlara el retardo desde 15s con A=1 a 2ms y 55 s con A=0, variendo estas cantidades de 8 s en 8 s.

Como se puede apreciar a diferencia del anterior ejercicio este utiliza una instruccin en vez de 2 instrucciones que es el DJNZ R1,CICLO en vez CJNE R0,#1,CICLO y DEC R0 optimizando el programa, adems que es mas entendible el manipuleo del retardo con el Acumulador.

2s 1s 1s 1s 2s 4s 2s 2s

DIAGRAMA DE FLUJO I
R0 = ACU R1 = ACU ACU = 1

B = R0 BA =A * B R1 = R1 1 NO R0 = 0 SI

R2 = B

FIN

PRUEBAS Haremos 2 pruebas, que corresponde a los extremos: i. Probando el primer extremo de A = 0

ii.

Probando el primer extremo de A = 1

You might also like