8086

UNIVERSIDAD DE LAS FUERZAS ARMADAS – ESPE. Departamento de Eléctrica y Electrónica. MICROPROCESADORES TEMA: Suma de do

Views 208 Downloads 0 File size 689KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

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 INT 21H

; entrada de carácter (primer operando)

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 INT 21H

; salida de carácter (+)

;.............................................................................................................................................. 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 ADD DL,30H

; acomodo los dígitos de la respuesta ; suma 30H al digito para obtener el código ASCII

MOV AH,02 INT 21H

; salida de carácter

MOV DL, BL ADD DL,30H

; transfiero segundo digito de la respuesta ; suma 30H al digito para obtener el código ASCII

MOV AH,02 INT 21H

; salida de carácter

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