Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

8086

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 6

UNIVERSIDAD DE LAS FUERZAS

ARMADAS – ESPE.
Departamento de Eléctrica y Electrónica.

MICROPROCESADORES

TEMA: Suma de dos números decimales, emu8086.

NRC: 2679
Nombre:
José Luis Pallo

– 2018 –
1. TEMA
Suma de dos números decimales, emu8086.

2. OBJETIVOS
Objetivo General
Desarrollar un código que permita sumar dos números decimales en lenguaje ensamblador
mediante la utilización del software emu8086.

Objetivos específicos
 Familiarizarse con la utilización del set de instrucciones que posee el
microprocesador 8086 mediante la realización de códigos específicos.
 Conocer los cambios que producen las diferentes instrucciones en cada uno de los
registros que posee el microprocesador 8086.

3. PROBLEMA
Se desea realizar un código que permita sumar dos dígitos decimales en lenguaje
ensamblador y verificar los valores existentes en cada uno de los registros. Se debe tener
en cuenta que el máximo valor de dicha suma será 18.

4. CODIGO
El código realiza la suma de dos números decimales (0,..,9), utilizando las diferentes
instrucciones disponibles para el micro 80806.

Se ha utilizado las funciones 01H y 02H de la interrupción 21H para el ingreso y salida
de los operandos de la suma respectivamente, además se permitirá visualizar la operación
en el dispositivo de salida estándar (pantalla).

Cada instrucción utilizada cumple una determinada función para permitir que los
operandos ingresados, así como el resultado sean los correctos.

org 100h

MOV AH,01 ; entrada de carácter (primer operando)


INT 21H

AAA ; ajuste decimal en AH y AL, AL= (0,1,2,3,4,5,6,7,8,9)


PUSH AX ; almaceno AX en la pila
;..............................................................................................................................................
MOV DL,2BH ;2BH código ASCII del signo (+)

MOV AH,02 ; salida de carácter (+)


INT 21H
;..............................................................................................................................................
MOV AH,01 ; entrada de carácter (segundo operando)
INT 21H

AAA ; ajuste decimal en AH y AL, AL= (0,1,2,3,4,5,6,7,8,9)


;..............................................................................................................................................
POP BX ; valor del primer operando, de la pila a BX
MOV AH,00H ; pongo a cero la parte alta de AX
ADD AL, BL ; suma de los operandos ingresados

AAA ; ajuste decimal de la suma


PUSH AX ; almaceno el valor de la suma
;..............................................................................................................................................
MOV DL,3DH ;3DH código ASCII del signo (=)

MOV AH,02 ; salida de carácter (=)


INT 21H
;..............................................................................................................................................
POP DX ; valor de la suma, de la pila a DX
MOV BL, DL ; respaldo el valor de la suma en BX

MOV DL, DH ; acomodo los dígitos de la respuesta


ADD DL,30H ; suma 30H al digito para obtener el código ASCII

MOV AH,02 ; salida de carácter


INT 21H

MOV DL, BL ; transfiero segundo digito de la respuesta


ADD DL,30H ; suma 30H al digito para obtener el código ASCII

MOV AH,02 ; salida de carácter


INT 21H

ret

5. VERIFICACIÓN
Mediante la Tabla 1 se verifica los valores que contiene cada uno del registro al ejecutar
las instrucciones del código presentado anteriormente.

Para la realización de la tabla se ha utilizado como ejemplo la siguiente suma:

9+8=17
Tabla 1:Verificacion de los registros.

AX BX CX DX IP SP CS,SS,DS,ES BP,SI,DI
2 MOV AH,01 0100 H 0000 H 0034 H 0000 H 0102 H FFFE H 0700 H 0000 H
2 INT 21H 0139 H 0000 H 0034 H 0000 H 0104 H FFFE H 0700 H 0000 H

1 AAA 0109 H 0000 H 0034 H 0000 H 0105 H FFFE H 0700 H 0000 H

1 PUSH AX 0109 H 0000 H 0034 H 0000 H 0106 H FFFC H 0700 H 0000 H

2 MOV DL,2BH 0109 H 0000 H 0034 H 002B H 0108 H FFFC H 0700 H 0000 H

2 MOV AH,02 0209 H 0000 H 0034 H 002B H 010A H FFFC H 0700 H 0000 H

2 INT 21H 022B H 0000 H 0034 H 002B H 010C H FFFC H 0700 H 0000 H

2 MOV AH,01 012B H 0000 H 0034 H 002B H 010E H FFFC H 0700 H 0000 H

2 INT 21H 0138 H 0000 H 0034 H 002B H 0110 H FFFC H 0700 H 0000 H

1 AAA 0108 H 0000 H 0034 H 002B H 0111 H FFFC H 0700 H 0000 H

2 POP BX 0108 H 0109 H 0034 H 002B H 0112 H FFFE H 0700 H 0000 H

2 MOV AH,00H 0008 H 0109 H 0034 H 002B H 0114 H FFFE H 0700 H 0000 H

2 ADD AL,BL 0011 H 0109 H 0034 H 002B H 0116 H FFFE H 0700 H 0000 H

1 AAA 0107 H 0109 H 0034 H 002B H 0117 H FFFE H 0700 H 0000 H

1 PUSH AX 0107 H 0109 H 0034 H 002B H 0118 H FFFC H 0700 H 0000 H

2 MOV DL,3DH 0107 H 0109 H 0034 H 003D H 011A H FFFC H 0700 H 0000 H

2 MOV AH,02 0207 H 0109 H 0034 H 003D H 011C H FFFC H 0700 H 0000 H

2 INT 21H 023D H 0109 H 0034 H 003D H 011E H FFFC H 0700 H 0000 H

1 POP DX 023D H 0109 H 0034 H 0107 H 011F H FFFE H 0700 H 0000 H

2 MOV BL,DL 023D H 0107 H 0034 H 0107 H 0121 H FFFE H 0700 H 0000 H

2 MOV DL,DH 023D H 0107 H 0034 H 0101 H 0123 H FFFE H 0700 H 0000 H

3 ADD DL,30H 023D H 0107 H 0034 H 0131 H 0126 H FFFE H 0700 H 0000 H

2 MOV AH,02 023D H 0107 H 0034 H 0131 H 0128 H FFFE H 0700 H 0000 H

2 INT 21H 0231 H 0107 H 0034 H 0131 H 012A H FFFE H 0700 H 0000 H

2 MOV DL,BL 0231 H 0107 H 0034 H 0107 H 012C H FFFE H 0700 H 0000 H
3 ADD DL,30H 0231 H 0107 H 0034 H 0137 H 012F H FFFE H 0700 H 0000 H

2 MOV AH,02 0231 H 0107 H 0034 H 0137 H 0131 H FFFE H 0700 H 0000 H

2 INT 21H 0237 H 0107 H 0034 H 0137 H 0133 H FFFE H 0700 H 0000 H

6. EJECUCIÓN
En las Figuras 1, 2 y 3 siguientes se observa el funcionamiento del programa, además se
aprecia el funcionamiento de la interrupción 21H.

Mediante la función 01H se ha ingresado los valores a sumarse y mediante la función 02H
se ha podido visualizar en pantalla los signos +, = y la respuesta de la operación.

Figura 1:Operandos y signo de suma.

Figura 2: Visualización del signo, =.

Figura 3:Resultado de la operación.


7. CONCLUSIONES
 Se ha realizado un código que permite sumar dos números decimales utilizando las
instrucciones MOV, AAA, ADD, POP y PUSH, así como la interrupción 21H para la
visualización en pantalla de la operación.
 Las instrucciones POP y PUSH han permitido respaldar datos, guardándolas en la pila
para su posterior uso.
 Mediante la tabla se ha verificado el funcionamiento del código además de permitir
entender a fondo su funcionamiento paso a paso.

8. BIBLIOGRAFIA
EMU8086. (14 de junio de 2018). EMU8086, MICROPROCESSOR EMULATOR. Obtenido de
EMU8086, MICROPROCESSOR EMULATOR: file:///C:/emu8086/documentation/index.html

Gonzales, M. (6 de 14 de 2018). ENSAMBLADOR, Lenguaje de Máquina. Obtenido de


ENSAMBLADOR, Lenguaje de Máquina:
https://www.cs.buap.mx/~mgonzalez/asm_mododir.pdf

También podría gustarte