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