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 24H
13: 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,24H
19: 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,13
24: DB " INDIQUE LA OPCION: ",24H
25:
26:
27:
28:
29: .CODE
30: MOV AX,@DATA
31: MOV DS,AX
32: MOV ES,AX
33: CALL MODO
34: MOV AL,25
35: MOV CX,0
36: CALL SCREEN
37: LEA DX,PANTALLA1
38: MOV AH,9
39: INT 21H
40: OPCIONES: MOV DH,7
41: MOV DL,0
42: CALL CURSOR
43: LEA DX,PANTALLA2
44: MOV AH,9
45: INT 21H
46: MOV AH,0
47: INT 16H
48: CMP AL,"1"
49: JE OPCION1
50: CMP AL,"2"
51: JE OPCION2
52: 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,0
81: CALL CURSOR
82: LEA DX,LINEA1
83: MOV AH,9
84: INT 21H
85: MOV DH,12
86: MOV DL,0
87: 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 21H
118: 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 NUMERO1
130: SUB BH,7
131: NUMERO1: SUB BH,30H
132: ROL BH,4
133: CMP BL,3AH
134: JB NUMERO2
135: SUB BL,7
136: NUMERO2: SUB BL,30H
137: OR BH,BL
138: MOV [DI],BH
139: INC DI
140: ADD SI,2
141: 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 SALTO2
160: LOOP SALTO3
161: RETN
162: BURBUJA ENDP
163:
164: ORDENAR PROC NEAR
165:
166: MOV DH,13
167: MOV DL,0
168: 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 SI
180: 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 LAZO6
202: SIGUIENTE: LOOP LAZO7
203: MOV AH,0
204: INT 16H
205: RET
206: TODO: MOV DH,13
207: MOV DL,0
208: 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,4
221: AND BH,0FH
222: CMP BH,0AH
223: JC NUMERO3
224: ADD BH,7
225: NUMERO3: ADD BH,30H
226: 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 NEAR
236: 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 SI
244: LOOP LAZO4
245: MOV DX,CONTADOR
246: DIV DL
247: CALL NUMEROS
248: CALL HEX2ASC
249: MOV [PROMEDIO],BH
250: MOV [PROMEDIO+1],BL
251: MOV DH,13
252: MOV DL,0
253: 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,0
288: 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 num22
316: num23: mov byte ptr [DI],bh
317: inc di
318: inc si
319: 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: DAA
332: LOOP NUME
333: RETN
334:
335:
336: NUMEROS ENDP
337:
338:
339:
340:
341: END
No hay comentarios:
Publicar un comentario