1 | ;Autor: John J Martinez CC. 80.170.712 |
2 | ;Descripción: Programa para realizar diferentes actividades |
3 | ;tales como; sumar, restar, multiplicar, dividir, determinar |
4 | ;si y un numero es positivo o negativo. |
5 | .model small |
6 | .stack 100h |
7 | ;Definición de constantes |
8 | CR EQU 13 ;Define la constante CR que contiene el caracter 13 que es retorno de carro |
9 | LF EQU 10 ;Define la constante LF que contiene el caracter 10 que es salto de linea |
10 | .data |
11 | ;Definición de textos para imprimir en pantalla |
12 | ;Items del menu |
13 | txtTituloMenu db "MENU:$" |
14 | txtItemDatosAutor db " 1. Datos del autor.$" |
15 | txtItemSuma db " 2. Suma de dos numeros.$" |
16 | txtItemResta db " 3. Resta de dos numeros.$" |
17 | txtItemMultiplicacion db " 4. Multiplicacion de dos numeros.$" |
18 | txtItemDivision db " 5. Division de dos numeros.$" |
19 | txtItemValidar db " 6. Validar numero positivo o negativo.$" |
20 | txtItemSalir db " 7. Salir.$" |
21 | txtTeclaContinuar db "Oprima cualquier tecla para continuar...$" |
22 | txtGracias db "!!!Gracias!!!$" |
23 | txtDigiteNumero db "Ingrese un digito del 0 al 9:",CR,LF,"$" |
24 | opcionSeleccionada db 0 |
25 | saltoLinea db CR,LF,'$' |
26 | |
27 | .code |
28 | programa: ;Inicia el programa |
29 | ;la función call, llama las diferentes sub rutinas definidas |
30 | call muestraMenu |
31 | call imprimeSolicitud |
32 | call leerOpcionMenu |
33 | call analizarOpcion |
34 | loop programa |
35 | |
36 | |
37 | muestramenu proc |
38 | call limpiaPantalla |
39 | call imprimeTituloMenu |
40 | call saltarLinea |
41 | call imprimeItemDatosAutor |
42 | call saltarLinea |
43 | call imprimeItemSuma |
44 | call saltarLinea |
45 | call imprimeItemResta |
46 | call saltarLinea |
47 | call imprimeItemMultiplicacion |
48 | call saltarLinea |
49 | call imprimeItemDivision |
50 | call saltarLinea |
51 | call imprimeItemValidar |
52 | call saltarLinea |
53 | call imprimeItemSalir |
54 | call saltarLinea |
55 | ret |
56 | |
57 | limpiaPantalla proc |
58 | mov ax,00 ;Establece el modo de video |
59 | mov al,03h ;Modo 80x25 |
60 | int 10h ;Ejecuta el modo de video |
61 | ret ;Termina rutina |
62 | |
63 | imprimeTituloMenu proc |
64 | mov ax,seg txtTituloMenu ;Coloca en el registro ax el valor del segmento de la definicion |
65 | mov ds,ax ;Coloca el contenido del registro ax en el registro ds |
66 | lea dx,txtTituloMenu ;Coloca el texto en el registro dx |
67 | mov ah,09 ;Imprime en la salida estandar |
68 | int 21h ;Llama a la funcion que se encuentra en el registro AH |
69 | ret ;Termina rutina |
70 | |
71 | imprimeItemDatosAutor proc |
72 | mov ax,seg txtItemDatosAutor ;Coloca en el registro ax el valor del segmento de la definicion |
73 | mov ds,ax ;Coloca el contenido del registro ax en el registro ds |
74 | lea dx,txtItemDatosAutor ;Coloca el texto en el registro dx |
75 | mov ah,09 ;Imprime en la salida estandar |
76 | int 21h ;Llama a la funcion que se encuentra en el registro AH |
77 | ret ;Termina rutina |
78 | |
79 | |
80 | imprimeItemSuma proc |
81 | mov ax,seg txtItemSuma ;Coloca en el registro ax el valor del segmento de la definicion |
82 | mov ds,ax ;Coloca el contenido del registro ax en el registro ds |
83 | lea dx,txtItemSuma ;Coloca el texto en el registro dx |
84 | mov ah,09 ;Imprime en la salida estandar |
85 | int 21h ;Llama a la funcion que se encuentra en el registro AH |
86 | ret ;Termina rutina |
87 | |
88 | imprimeItemResta proc |
89 | mov ax,seg txtItemResta ;Coloca en el registro ax el valor del segmento de la definicion |
90 | mov ds,ax ;Coloca el contenido del registro ax en el registro ds |
91 | lea dx,txtItemResta ;Coloca el texto en el registro dx |
92 | mov ah,09 ;Imprime en la salida estandar |
93 | int 21h ;Llama a la funcion que se encuentra en el registro AH |
94 | ret ;Termina rutina |
95 | |
96 | imprimeItemMultiplicacion proc |
97 | mov ax,seg txtItemMultiplicacion ;Coloca en el registro ax el valor del segmento de la definicion |
98 | mov ds,ax ;Coloca el contenido del registro ax en el registro ds |
99 | lea dx,txtItemMultiplicacion ;Coloca el texto en el registro dx |
100 | mov ah,09 ;Imprime en la salida estandar |
101 | int 21h ;Llama a la funcion que se encuentra en el registro AH |
102 | ret ;Termina rutina |
103 | |
104 | imprimeItemDivision proc |
105 | mov ax,seg txtItemDivision ;Coloca en el registro ax el valor del segmento de la definicion |
106 | mov ds,ax ;Coloca el contenido del registro ax en el registro ds |
107 | lea dx,txtItemDivision ;Coloca el texto en el registro dx |
108 | mov ah,09 ;Imprime en la salida estandar |
109 | int 21h ;Llama a la funcion que se encuentra en el registro AH |
110 | ret ;Termina rutina |
111 | |
112 | imprimeItemValidar proc |
113 | mov ax,seg txtItemValidar ;Coloca en el registro ax el valor del segmento de la definicion |
114 | mov ds,ax ;Coloca el contenido del registro ax en el registro ds |
115 | lea dx,txtItemValidar ;Coloca el texto en el registro dx |
116 | mov ah,09 ;Imprime en la salida estandar |
117 | int 21h ;Llama a la funcion que se encuentra en el registro AH |
118 | ret ;Termina rutina |
119 | |
120 | imprimeItemSalir proc |
121 | mov ax,seg txtItemSalir ;Coloca en el registro ax el valor del segmento de la definicion |
122 | mov ds,ax ;Coloca el contenido del registro ax en el registro ds |
123 | lea dx,txtItemSalir ;Coloca el texto en el registro dx |
124 | mov ah,09 ;Imprime en la salida estandar |
125 | int 21h ;Llama a la funcion que se encuentra en el registro AH |
126 | ret ;Termina rutina |
127 | |
128 | imprimeSolicitud proc |
129 | lea dx,txtDigiteNumero ;Coloca el texto en el registro dx |
130 | mov ah,09 ;Imprime en la salida estandar |
131 | int 21h ;Llama a la funcion que se encuentra en el registro AH |
132 | ret ;Termina rutina |
133 | |
134 | leerOpcionMenu proc |
135 | mov ah,01 ;Se prepara para leer caracter del teclado |
136 | int 21h ;Ejecuta la función que se encuentra en el registro ah |
137 | sub al,30h ;Resta 30 al número leido para poder realizar operaciones con él |
138 | mov opcionSeleccionada,al ;Almacena el número leido en la variable |
139 | ret ;Termina rutina |
140 | |
141 | finalizaEjecucion proc |
142 | call limpiaPantalla |
143 | call saltarLinea |
144 | call saltarLinea |
145 | mov ax,seg txtGracias ;Coloca en el registro ax el valor del segmento de la definicion |
146 | mov ds,ax ;Coloca el contenido del registro ax en el registro ds |
147 | lea dx,txtGracias ;Coloca el texto en el registro dx |
148 | mov ah,09 ;Imprime en la salida estandar |
149 | int 21h ;Llama a la funcion que se encuentra en el registro AH |
150 | mov AH,4CH ;4CH = Termina el programa |
151 | int 21H ;Llama a la funcion que se encuentra en el registro AH |
152 | ret ;Termina rutina |
153 | |
154 | saltarLinea proc |
155 | mov ax,seg saltoLinea ;Coloca en el registro ax el valor del segmento de la definicion saltoLinea |
156 | mov ds,ax ;Coloca el contenido del registro ax en el registro ds |
157 | lea dx,saltoLinea ;Coloca el texto en el registro dx |
158 | mov ah,09 ;Imprime en la salida estandar |
159 | int 21h ;Llama a la funcion que se encuentra en el registro AH |
160 | ret ;Termina rutina |
161 | |
162 | analizarOpcion proc |
163 | mov al,opcionSeleccionada |
164 | cmp al,1 |
165 | ;je opcionAutores |
166 | cmp al,2 |
167 | ;je opcionSumar |
168 | cmp al,3 |
169 | ;je opcionRestar |
170 | cmp al,4 |
171 | ;je opcionMultiplicar |
172 | cmp al,5 |
173 | ;je opcionDividir |
174 | cmp al,6 |
175 | ;je opcionValidar |
176 | cmp al,7 |
177 | je finalizaEjecucion |
178 | |
179 | ret |
180 | |
181 | end programa ;Termina programa principal |
:: Blog de Cerebro ::
http://solucionesjj.googlepages.com/home
Menú en lenguaje ensamblador
Suscribirse a:
Entradas (Atom)