Revisar la declaracion del segmento de datos para conocer la funcionalidad de la aplicación
1: .MODEL SMALL 2: .STACK 64H 3: .DATA 4: CONTADOR DW ? 5: TABLA DB 40 DUP (?) 6: TABLAHEX DB 20 DUP (?) 7: TABLAHEX2 DB 20 DUP (?)8: PANTALLA3 DB " EL PROMEDIO DE LOS NUMEROS INTRODUCIDOS ES "
9: PROMEDIO DB 0,0 10: DB 24H 11: TABLAORD DB 80 DUP (?) 12: DB 24H13: LINEA1 DB " ******** INTRODUCE LOS NUMEROS Y PRESIONE ENTER PARA FINALIZAR ******** ",24H
14: PANTALLA1 DB 79 DUP ("="),10,13
15: DB 79 DUP ("="),10,13
16: DB "******** PRACTICA N¦ 2. MANEJO DE INSTRUCCIONES, TECLADO Y PANTALLA ********",10,13
17: DB 10,13 18: DB 10,13,24H19: PANTALLA2 DB " 1. INTRODUCIR NUMEROS",10,13
20: DB " 2. ORDENAR NUMEROS",10,13
21: DB " 3. PROMEDIAR",10,13
22: DB 10,13 23: DB 10,1324: DB " INDIQUE LA OPCION: ",24H
25: 26: 27: 28: 29: .CODE 30: MOV AX,@DATA 31: MOV DS,AX 32: MOV ES,AX33: CALL MODO
34: MOV AL,25 35: MOV CX,036: CALL SCREEN
37: LEA DX,PANTALLA1 38: MOV AH,9 39: INT 21H 40: OPCIONES: MOV DH,7 41: MOV DL,042: CALL CURSOR
43: LEA DX,PANTALLA2 44: MOV AH,9 45: INT 21H 46: MOV AH,0 47: INT 16H48: CMP AL,"1"
49: JE OPCION150: CMP AL,"2"
51: JE OPCION252: CMP AL,"3"
53: JE OPCION3 54: CMP AL,1BH 55: JE SALIR 56: JMP OPCIONES 57: 58: OPCION1: CALL LIMPIAR
59: CALL INTRODUCIR
60: CALL ASC2HEX
61: CALL LIMPIAR
62: JMP OPCIONES 63: 64: OPCION2: CALL LIMPIAR
65: CALL ORDENAR
66: CALL LIMPIAR
67: JMP OPCIONES 68: 69: OPCION3: CALL LIMPIAR
70: CALL PROMEDIAR
71: CALL LIMPIAR
72: JMP OPCIONES 73: 74: SALIR: CALL MODO
75: .EXIT(0)
76: 77: INTRODUCIR PROC NEAR 78: MOV CONTADOR,0 79: MOV DH,10 80: MOV DL,081: CALL CURSOR
82: LEA DX,LINEA1 83: MOV AH,9 84: INT 21H 85: MOV DH,12 86: MOV DL,087: CALL CURSOR
88: LEA SI,TABLA 89: MOV CX,20 90: LAZO1: MOV AH,0 91: INT 16H 92: CMP AL,13 93: JE SALIR1 94: CMP AL,30H 95: JC LAZO1 96: CMP AL,3AH 97: JNC LAZO1 98: MOV [SI],AL 99: INC SI 100: MOV DL,AL 101: MOV AH,2 102: INT 21H 103: LAZO2: MOV AH,0 104: INT 16H 105: CMP AL,30H 106: JC LAZO2 107: CMP AL,47H 108: JNC LAZO2 109: MOV [SI],AL 110: INC SI 111: MOV DL,AL 112: MOV AH,2 113: INT 21H 114: INC CONTADOR 115: MOV DL,20H 116: MOV AH,2 117: INT 21H118: LOOP LAZO1
119: SALIR1: RETN 120: INTRODUCIR ENDP 121: 122: ASC2HEX PROC NEAR 123: LEA DI,TABLAHEX 124: LEA SI,TABLA 125: MOV CX,CONTADOR 126: LAZO3: MOV BH,[SI] 127: MOV BL,[SI+1] 128: CMP BH,3AH 129: JB NUMERO1130: SUB BH,7
131: NUMERO1: SUB BH,30H
132: ROL BH,4 133: CMP BL,3AH 134: JB NUMERO2135: SUB BL,7
136: NUMERO2: SUB BL,30H
137: OR BH,BL
138: MOV [DI],BH 139: INC DI 140: ADD SI,2141: LOOP LAZO3
142: RETN 143: ASC2HEX ENDP 144: 145: BURBUJA PROC NEAR 146: MOV CX,CONTADOR 147: DEC CX 148: SALTO3: LEA SI,TABLAHEX 149: MOV BL,0 150: SALTO2: MOV AL,[SI] 151: CMP AL,[SI+1] 152: JC SALTO1 153: MOV BH,[SI+1] 154: MOV [SI],BH 155: MOV [SI+1],AL 156: SALTO1: INC SI 157: INC BL 158: CMP BL,CL 159: JNE SALTO2160: LOOP SALTO3
161: RETN 162: BURBUJA ENDP 163: 164: ORDENAR PROC NEAR 165: 166: MOV DH,13 167: MOV DL,0168: CALL CURSOR
169: CALL BURBUJA
170: MOV CX,CONTADOR 171: LEA DI,TABLAORD 172: LEA SI,TABLAHEX 173: LAZO5: MOV AL,[SI]174: CALL HEX2ASC
175: MOV BYTE PTR [DI],BH
176: MOV BYTE PTR [DI+1],BL
177: MOV BYTE PTR [DI+3],20H
178: ADD DI,3 179: INC SI180: LOOP LAZO5
181: LEA SI,TABLAORD 182: MOV CX,CONTADOR 183: LAZO7: MOV DL,[SI] 184: MOV AH,2 185: INT 21H 186: INC SI 187: MOV DL,[SI] 188: MOV AH,2 189: INT 21H 190: INC SI 191: MOV DL,[SI] 192: MOV AH,2 193: INT 21H 194: INC SI 195: LAZO6: MOV AH,0 196: INT 16H 197: CMP AL,13 198: JE SIGUIENTE 199: CMP AL,20H 200: JE TODO 201: JMP LAZO6202: SIGUIENTE: LOOP LAZO7
203: MOV AH,0 204: INT 16H 205: RET 206: TODO: MOV DH,13 207: MOV DL,0208: CALL CURSOR
209: LEA DX,TABLAORD 210: MOV AH,9 211: INT 21H 212: MOV AH,0 213: INT 16H 214: RET 215: ORDENAR ENDP 216: 217: HEX2ASC PROC NEAR 218: MOV BH,AL 219: MOV BL,AL 220: ROL BH,4221: AND BH,0FH
222: CMP BH,0AH 223: JC NUMERO3 224: ADD BH,7 225: NUMERO3: ADD BH,30H226: AND BL,0FH
227: CMP BL,0AH 228: CMP BL,0AH 229: JC NUMERO4 230: ADD BL,7 231: NUMERO4: ADD BL,30H 232: RETN 233: HEX2ASC ENDP 234: 235: PROMEDIAR PROC NEAR236: CALL NUMERO
237: LEA SI,TABLAHEX2 238: MOV CX,CONTADOR 239: MOV AX,0 240: MOV BX,0 241: LAZO4: MOV BL,[SI] 242: ADD AX,BX 243: INC SI244: LOOP LAZO4
245: MOV DX,CONTADOR 246: DIV DL247: CALL NUMEROS
248: CALL HEX2ASC
249: MOV [PROMEDIO],BH 250: MOV [PROMEDIO+1],BL 251: MOV DH,13 252: MOV DL,0253: CALL CURSOR
254: LEA DX,PANTALLA3 255: MOV AH,9 256: INT 21H 257: MOV AH,0 258: INT 16H 259: RETN 260: PROMEDIAR ENDP 261: 262: MODO PROC NEAR 263: MOV AH,0 264: MOV AL,3 265: INT 10H 266: RETN 267: MODO ENDP 268: 269: SCREEN PROC NEAR 270: MOV AH,6 271: MOV BH,71H 272: MOV DX,184FH 273: INT 10H 274: RETN 275: SCREEN ENDP 276: 277: CURSOR PROC NEAR 278: MOV AH,2 279: MOV BH,0 280: INT 10H 281: RETN 282: CURSOR ENDP 283: 284: LIMPIAR PROC NEAR 285: MOV AL,15 286: MOV CH,7 287: MOV CL,0288: CALL SCREEN
289: RETN 290: LIMPIAR ENDP 291: 292: 293: NUMERO PROC NEAR 294: PUSH DX 295: PUSH BX 296: LEA SI,TABLAHEX 297: LEA DI,TABLAHEX2 298: MOV CX,CONTADOR 299: num1: mov al,[si]300: and al,0fh
301: mov dl,al 302: mov al,[si]303: and al,0f0h
304: rol al,4 305: mov dh,al 306: mov bh,0 307: num22: dec dl 308: jnz num2 309: inc bh 310: mov dl,9 311: dec dh 312: cmp dh,0ffh 313: je num23 314: num2: inc bh 315: jmp num22316: num23: mov byte ptr [DI],bh
317: inc di 318: inc si319: loop num1
320: 321: POP BX 322: POP DX 323: RETN 324: NUMERO ENDP 325: 326: NUMEROS PROC NEAR 327: MOV CH,0 328: MOV CL,AL 329: MOV AX,0 330: NUME: INC AL 331: DAA332: LOOP NUME
333: RETN 334: 335: 336: NUMEROS ENDP 337: 338: 339: 340: 341: END
No hay comentarios:
Publicar un comentario