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