| 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 |
http://solucionesjj.googlepages.com/home
Menú en lenguaje ensamblador
Suscribirse a:
Enviar comentarios (Atom)
Interesante
ResponderEliminar