Sunteți pe pagina 1din 5

Laboratorio de Arquitectura de Computadoras

INFORME N 7

TEMA:
OBJETIVO: 1.

PROGRAMACIN EN LENGUAJE ENSAMBLADOR PUNTEROS Y TABLAS

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

Vemos dos resultados distintos con datos diferentes

Laboratorio de Arquitectura de Computadoras

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:

AL,[SI] AH,AL ;numeros a comparar SIGUE1 AH,AL ;intercambia SI repite1 MAYOR,AH

repite:

SIGUE:

;......................................... programa MAIN MOV INT ENDP END AH,4CH 21H MAIN ;peticion de fin ;fin del programa

SI repite MENOR,AH ;se almacena en MENOR

Resultados de 2 ejemplos con distintos datos

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

Laboratorio de Arquitectura de Computadoras

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

SUB AL,DL MOV AH,00H MOV BL,4 DIV BL

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

S-ar putea să vă placă și