Está en la página 1de 6

1

Tarea 6 Desarrollar un prototipo funcional.

Autor: Yudi Vanesa Vega Rojas

Ingeniería de Sistemas, Universidad Nacional Abierta y a Distancia

Arquitectura de Computadores

Tutor: John Manuel Soto

202016893_108

23 de mayo de 2021

This study source was downloaded by 100000781548882 from CourseHero.com on 05-24-2022 19:29:37 GMT -05:00

https://www.coursehero.com/file/94712567/tarea-FINALdocx/
2

1. El estudiante realiza un prototipo funcional en lenguaje Ensamblador, que incluya el

siguiente menú de opciones:

MENÚ

1. Datos del autor

2. Suma de dos números

3. Resta de dos números

4. Multiplicación de dos números

5. División de dos números

6. Validar si un número es positivo o negativo

7. Salir

1. name: " PROTOTIPO FINAL"


2. org 100h ; inicio de programa
3.
4. include 'emu8086.inc' ;Incluye funciones de libreria
emu8086
5. DEFINE_SCAN_NUM
6. DEFINE_PRINT_STRING
7. DEFINE_PRINT_NUM
8. DEFINE_PRINT_NUM_UNS
9.
10.
11. jmp inicio
12.
13.
14.
15. menu1 db 13,10,'JHON JARLIN JARLIN PALACIOS',13,10,
16. db 13,10,'Codigo 1010141445',13,10,
17. db 13,10,'Universidad Nacional Abierta y a
Distancia',13,10,
18. db 13,10,'Cead Quibdo',13,10
19. db 13,10,'Fecha:Diciembre 10 de 2016',13,10,
20. db 13,10, '******MENU******',13,10,
21. db 13,10,'1 Suma de dos numeros ',13,10,
22. db 13,10,'2 Resta de dos numeros ' ,13,10,

This study source was downloaded by 100000781548882 from CourseHero.com on 05-24-2022 19:29:37 GMT -05:00

https://www.coursehero.com/file/94712567/tarea-FINALdocx/
3

23. db 13,10,'3 Multiplicacion de dos numeros


',13,10,
24. db 13,10,'4 Division de dos numero',13,10,

25. db 13,10,'5 Validar numeros negativos y


positivos',13,10,
26. db 13,10,'6 Salir ' ,13,10,
27.
28.
29.
30. db 13,10,13,10,'Digite el Primer Numero: $'
31. texto2 db 13,10,13,10,'Digite el Segundo Numero: $'
32. texto3 db 13,10,13,10, 'La Suma Es: $'
33. texto4 db 13,10,'La Resta Es: $'
34. texto5 db 13,10,'La Multiplicacion Es: $'
35. texto6 db 13,10,'La Divison es: $'
36. texto7 db 13,10,'positivo: $'
37. texto8 db 13,10,'negativo: $'
38. texto9 db 13,10,'cero: $'
39.
40. num1 dw ? ;defino variables de 2 bytes
41. num2 dw ? ; el simbolo ? es para indicar q no se
inicilizan con valor algunp
42.
43. inicio:
44.
45. mov ah,09 ;instruccion para imprimir en pantalla
46. lea dx,menu1 ;carga cadena de texto 1 en dx
47. int 21h ;interrupcion pantalla
48.
49. call SCAN_NUM ;Llama Funcion SCAN_NUM que toma numero
de teclado; el valor se guarda en ax
50. mov num1,cx ;mueve numero a variable num1
51.
52. mov ah,09 ;interrupcion para imprimir en pantalla
53. lea dx,texto2 ;carga cadena de texto 2 en dx
54. int 21h
55.
56. call SCAN_NUM ;Llama Funcion SCAN_NUM que toma numero
de teclado; el valor se guarda en ax
57. mov num2,cx ;mueve numero a variable num2
58.
59. mov ah,09
60. lea dx,texto3
61. int 21h

This study source was downloaded by 100000781548882 from CourseHero.com on 05-24-2022 19:29:37 GMT -05:00

https://www.coursehero.com/file/94712567/tarea-FINALdocx/
4

62.
63. mov ax,num1 ;mueve primer numero digitado a ax
64. add ax,num2 ;suma los numeros digitado, queda
almacenaddo en ax
65. call PRINT_NUM
66.
67. mov ah,09
68. lea dx,texto4
69. int 21h
70. mov ax,num1 ;mueve primer numero digitado a ax
71. sub ax,num2 ;resta el 2do del 1er numero, queda
almacenaddo en ax
72. call PRINT_NUM
73.
74.
75.
76. mov ah,09
77. lea dx,texto5
78. int 21h
79. mov ax,num1 ;mueve primer numero digitado a ax
80. mov bx,num2 ;mueve segundo numero digitado a bx
81. mul bx ;ax = ax*bx
82. call PRINT_NUM
83.
84. mov ah,09
85. lea dx,texto6
86. int 21h
87. xor dx,dx ;deja en cero dx; si no lo hago se desborda
la division
88. ;DX ALMACENA EL modulo de la division, por eso hay q
dejarlo en cero
89. mov ax,num1 ;mueve primer numero digitado a ax
90. mov bx,num2 ;mueve segundo numero digitado a bx
91. div bx ;ax = ax*bx
92. call PRINT_NUM
93.
94. cmp bl,0
95.
96.
97. mov ah,09h
98. lea dx,texto7
99. int 21h
100.
101. mov ah,09h
102. lea dx,texto8

This study source was downloaded by 100000781548882 from CourseHero.com on 05-24-2022 19:29:37 GMT -05:00

https://www.coursehero.com/file/94712567/tarea-FINALdocx/
5

103. int 21h


104.
105. mov ah,09h
106. lea dx,texto9
107. int 21h

Configuración de las opciones:

Opción 1: debe imprimir en pantalla.

• Nombre del Estudiante.

• Centro UNAD donde estudia.

• Fecha de presentación.

Opciones 2,3,4 y 5: debe solicitar por teclado dos números de un digito cada uno.

Opción 6: debe solicitar por teclado un numero de un digito.

1. MOV al, Valor


2. SAL al, 1 <--- desplazamiento aritmetico a la izquierda (1bit)
3. JC Negativo
4. --> Es positivo
5. RET
6. Negativo:
7. --> Es negativo
8. RET
9.

1. MOV al, Valor


2. TEST al, 128 <--- ¿Esta activado el bit 7 del registro 'al'?
3. JNZ Negativo
4. --> Es positivo
5. RET
6. Negativo:
7. --> Es negativo
8. RET

This study source was downloaded by 100000781548882 from CourseHero.com on 05-24-2022 19:29:37 GMT -05:00

https://www.coursehero.com/file/94712567/tarea-FINALdocx/
6

9. ProcA Proc FAR


10. ...
11. ...
12. Ret
13. ProcA ENDP <---- fin del procedmientoA

Conclusión

Quizá el lenguaje ensamblador es el lenguaje de programación más difícil

de comprender, pero en la actualidad es una de las herramientas de programación

más utilizadas para obtener un mayor conocimiento acerca del funcionamiento

de una computadora personal y programar determinados dispositivos.

Las personas que deseen hacer uso de este lenguaje deberán tener un nivel de

comprensión alto ya que como se mencionó este lenguaje no es tan fácil, por lo que

deberán poner gran empeño para el aprendizaje.

This study source was downloaded by 100000781548882 from CourseHero.com on 05-24-2022 19:29:37 GMT -05:00

https://www.coursehero.com/file/94712567/tarea-FINALdocx/
Powered by TCPDF (www.tcpdf.org)

También podría gustarte