Professional Documents
Culture Documents
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
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
; 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
RESULTADO
ii.
RESULTADO
iii.
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
NO
CARRY=1
SI
RESULTADO b = 1
NO
CARRY=1
SI
RESULTADO c = 1
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
RESULTADO
ii.
RESULTADO
iii.
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
ii.
Quitando la operacin BA =A * B
iii.
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.