Introduccion Al Lenguaje Ensamblador

5

Click here to load reader

description

problemas de laboratorio practicos

Transcript of Introduccion Al Lenguaje Ensamblador

Page 1: Introduccion Al Lenguaje Ensamblador

Laboratorio de Arquitectura de Computadoras INFORME N° 7

TEMA: PROGRAMACIÓN EN LENGUAJE ENSAMBLADOR PUNTEROS Y TABLAS

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 instrucción.

Cambia los datos por otros números y ejecuta el programa.

Para ver los resultados puedes hacer clic en el botón “vars”. Solución:

cuando corremos paso a paso sucede lo siguiente:

Bueno el ORG hace que comienzo nuestro programa desde la dirección 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 código.

LOOP es un bucle que funciona conjuntamente con MOV CX,4 mientras que va ejecutándose una acción 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 código, 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

Page 2: Introduccion Al Lenguaje Ensamblador

Laboratorio de Arquitectura de Computadoras INFORME N° 7

Acá vemos el resultado, es el VEC3. Dos ejemplos con distintos datos

Modificamos el programa para hallar el semiproducto de dos números.

Vemos dos resultados distintos con datos diferentes

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

Page 3: Introduccion Al Lenguaje Ensamblador

Laboratorio de Arquitectura de Computadoras INFORME N° 7 PROBLEMA N° 2

Escriba un programa que halle el número mayor y menor de una lista de números positivos. Solución: Bueno

Resultados de 2 ejemplos con distintos datos

ORG 100H TABLA 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 SI,TABLA MOV CX,10 ;inicio contador MOV AH,[SI] ;AH = numero menor DEC CX INC SI repite: MOV AL,[SI] CMP AH,AL ;numeros a comparar JL SIGUE MOV AH,AL ;intercambia SIGUE: INC SI LOOP repite MOV MENOR,AH ;se almacena en MENOR

;......................................... ;programa que el encuentra el numero mayor ;......................................... LEA SI,TABLA MOV CX,10 ;inicio contador MOV AH,[SI] ;AH = numero mayor DEC CX INC SI repite1: MOV AL,[SI] CMP AH,AL ;numeros a comparar JG SIGUE1 MOV AH,AL ;intercambia SIGUE1: INC SI LOOP repite1 MOV MAYOR,AH ;......................................... MOV AH,4CH ;peticion de fin programa INT 21H ;fin del programa MAIN ENDP END MAIN

Page 4: Introduccion Al Lenguaje Ensamblador

Laboratorio de Arquitectura de Computadoras INFORME N° 7 PROBLEMA N° 3

Escriba un programa que calcula los números pares de una lista de números. Solución: Código del programa

Resultado

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 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 AH,4CH INT 21H

Page 5: Introduccion Al Lenguaje Ensamblador

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. Solución: Buen

Resultado

ORG 100H JMP INICIO NOTAS DB 12,20,6,14,13 NOTAELIMINADO DB ? PROMEDIO DB ? INICIO: ;......................................... ;programa que el encuentra el nota menor ;......................................... LEA SI,NOTAS MOV CX,5 ;inicio contador MOV AH,[SI] ;AH = numero menor DEC CX INC SI repite: MOV AL,[SI] CMP AH,AL ;numeros a comparar JL SIGUE MOV AH,AL ;intercambia SIGUE: INC SI LOOP repite MOV DL,AH MOV NOTAELIMINADO,DL ;se almacena NOTA A ELIMINAR

;......................................... ;programa para que sume todas las notas ;......................................... LEA SI,NOTAS MOV CX,5 ;inicio contador MOV AL,[SI] DEC CX INC SI repite1: MOV AH,[SI] ADD AL,AH INC SI LOOP repite1 SUB AL,DL ;AL = suma total - nota a eliminar MOV AH,00H MOV BL,4 DIV BL

MOV PROMEDIO,AL ;......................................... MOV AH,4CH ;peticion de fin programa INT 21H ;fin del programa