Documente Academic
Documente Profesional
Documente Cultură
INFORME N 7
TEMA:
OBJETIVO: 1.
Aprender a programar el lenguaje ensamblador para la familia 8086, de Intel. Para manejo de tablas.
PROBLEMA N 1 El siguiente programa calcula la suma de cada elemento de un arreglo con los elementos correspondientes de otro arreglo. El resultado se muestra en otro tercer arreglo. Ejecuta el programa paso a paso y anota el resultado de cada instruccin. Cambia los datos por otros nmeros y ejecuta el programa. Para ver los resultados puedes hacer clic en el botn vars. Solucin: cuando corremos paso a paso sucede lo siguiente: Bueno el ORG hace que comienzo nuestro programa desde la direccin 100H JMP hace dar un salto hasta la etiqueta START LEA est cargando las direcciones de los arreglos a los respectivos registros como se ve en el cdigo. LOOP es un bucle que funciona conjuntamente con MOV CX,4 mientras que va ejecutndose una accin LOOP hace que CX vaya disminuyendo en 1 hasta que llegue CX a 1 y es cuando el programa continua ya no vuelve a repetir. Ac vemos el cdigo, con los tres arreglos lo cual va a hacer es sumar los dos primeros arreglos y el resultado lo pondr en el tercer arreglo. name "sumaarre" org 100h jmp start vec1 db 1, 2, 5, 6 vec2 db 3, 5, 6, 1 vec3 db ?, ?, ?, ? start: lea si,vec1 lea bx,vec2 lea di,vec3 mov cx,4 sum: mov al,[si] add al,[bx] mov [di],al inc si inc bx inc di loop sum ret
Laboratorio de Arquitectura de Computadoras Ac vemos el resultado, es el VEC3. Dos ejemplos con distintos datos
INFORME N 7
Modificamos el programa para hallar el semiproducto de dos nmeros. name "semipr" org 100h jmp start vec1 db 20, 20, 50, 60 vec2 db 3, 5, 6, 1 vec3 db ?, ?, ?, ? start: lea si,vec1 lea bx,vec2 lea di,vec3 mov cx,4
semi: mov al,[si] mov ah,[bx] mul ah mov cx,2 div cx mov [di],al inc si inc bx inc di loop semi ret
INFORME N 7
PROBLEMA N 2 Escriba un programa que halle el nmero mayor y menor de una lista de nmeros positivos.
ORG 100H Solucin: TABLA Bueno DB 120,34H,5,100,25H,106,107,33,29,57 MENOR DB ? MAYOR DB ? TABLA1 DB ? MAIN PROC FAR ;......................................... ;programa que el encuentra el numero menor ;......................................... LEA MOV MOV DEC INC MOV CMP JL MOV INC LOOP MOV SI,TABLA CX,10 AH,[SI] CX SI AL,[SI] AH,AL SIGUE AH,AL ;inicio contador ;AH = numero menor SIGUE1: ;numeros a comparar ;intercambia ;......................................... ;programa que el encuentra el numero mayor ;......................................... LEA SI,TABLA MOV CX,10 MOV AH,[SI] DEC CX INC SI MOV CMP JG MOV INC LOOP MOV ;inicio contador ;AH = numero mayor
repite1:
repite:
SIGUE:
;......................................... programa MAIN MOV INT ENDP END AH,4CH 21H MAIN ;peticion de fin ;fin del programa
Laboratorio de Arquitectura de Computadoras PROBLEMA N 3 Escriba un programa que calcula los nmeros pares de una lista de nmeros. Solucin: Cdigo del programa
ORG 100H JMP INICIO TABLA DB 12,20,31,43,50,66,77,83,92,101 PARES DB ?,?,?,?,?,?,?,?,?,? INICIO: ;......................................... ;programa que el encuentra los numeros pares ;......................................... LEA SI,TABLA LEA DI,PARES MOV CX,10
INFORME N 7
REPITE:
MOV AX,[SI] MOV DX,00H MOV BX,2 DIV BX CMP DX,0 JNE SEGUIR MOV dx,[SI] MOV [DI],dl INC SI INC DI LOOP REPITE MOV AH,4CH INT 21H SEGUIR: INC SI LOOP REPITE ;......................................... MOV INT AH,4CH 21H
Resultado
INFORME N 7
PROBLEMA N 4 Escriba un programa para hallar el promedio de 5 notas de laboratorio, eliminando la menor nota. Es decir se promedia con 4 notas. Solucin: Buen
ORG 100H JMP INICIO NOTAS DB 12,20,6,14,13 NOTAELIMINADO DB ? PROMEDIO DB ? INICIO: ;......................................... ;programa que el encuentra el nota menor ;......................................... LEA MOV MOV DEC INC MOV CMP JL MOV SI,NOTAS CX,5 ;inicio contador AH,[SI] ;AH = numero menor CX SI AL,[SI] AH,AL SIGUE AH,AL ;numeros a comparar ;intercambia ;......................................... ;programa para que sume todas las notas ;......................................... LEA SI,NOTAS MOV CX,5 MOV AL,[SI] DEC CX INC SI MOV ADD INC SI LOOP AH,[SI] AL,AH repite1 ;AL = suma total - nota a ;inicio contador
repite1:
eliminar
repite:
MOV PROMEDIO,AL ;......................................... MOV fin programa INT programa AH,4CH 21H ;peticion de ;fin del
SIGUE:
INC SI LOOP repite MOV DL,AH MOV NOTAELIMINADO,DL ;se almacena NOTA A ELIMINAR
Resultado