Chequear la declaracion en el segmento de datos para conocer la funcionalidad.
1: .model small
2: .stack 64h
3: .data
4: REGISTROS DB " WILSON MENDOZA 50.0 50.0 50.0 50.0 50.0 $"
5: DB " GERALINE LEAL 60.0 56.1 69.9 50.4 67.9 $"
6: db " MIKE GARCIA 48.5 59.6 50.1 60.9 76.5 $"
7: DB " ARMANDO IGLESIAS 70.5 79.1 53.3 29.6 48.9 $"
8: DB " HUGO CHAVEZ 45.6 48.0 23.5 15.3 12.5 $"
9: DB " CARLOS SANCHEZ 85.2 62.5 64.8 48.7 50.2 $"
10: DB " $"
11: DB " $"
12: DB " $"
13: DB " $"
14: DB " $"
15: DB " $"
16: DB " $"
17: DB " $"
18: DB " $"
19: DB " $"
20: DB " $"
21: DB " $"
22: DB " $"
23: DB " $"
24: DB " $"
25: DB " $"
26: DB " $"
27: DB " $"
28: DB " $"
29: DB " $"
30:
31: TABLA DB 2000 DUP (0)
32: DB 24H
33: COLOR db 71H
34: COLOR2 DB 34H
35: contador db ?
36: MARCO DB 201,72 DUP (205),187,10,13
37: DB 186,"NOMBRES ",186,"APELLIDOS ",186,"Nota 1 ",186,"NOTA 2 ",186,"NOTA 3 ",186,"NOTA 4 ",186,"NOTA 5 ",186,10,13
38: DB 200,72 DUP (205),188,24H
39: max db ?
40: real db ?
41: buffer db 20 dup (0)
42: fila db ?
43: columna db ?
44: MENU DB " 1. INGRESAR ESTUDIANTE",10,13
45: DB " 2. PROMEDIAR NOTAS",10,13
46: DB " 3. ORDENAR POR NOTA Y MATERIA",10,13
47: DB " 4. ORDENAR POR NOMBRE",10,13
48: DB " 5. ORDENAR POR APELLIDO",10,13
49: DB " 6. ORDENAR POR PROMEDIO",10,13,24H
50:
51: MENU2 DB " ORDENAR POR:",10,13
52: DB 10,13
53: DB " 1. NOTA 1",10,13
54: DB " 2. NOTA 2",10,13
55: DB " 3. NOTA 3",10,13
56: DB " 4. NOTA 4",10,13
57: DB " 5. NOTA 5",10,13
58: DB 10,13
59: DB " PRESIONE UNA TECLA ",10,13,24H
60:
61: REGISTRO DW 6
62: cadena db "ABC"
63: cadena2 db " "
64: cadena3 db "00"
65: cadena4 db "99"
66: cadena5 db " "
67:
68: TOTAL DW ?
69: nminima db ?
70: nmaxima db ?
71: SWMIN DB ?
72:
73:
74:
75: .code
76: mov ax,@data
77: mov es,ax
78: mov ds,ax
79: MOV AH,0
80: MOV AL,3
81: INT 10H
82:
83: START:
84: CALL BORRARPANTALLA
85: MOV FILA,8
86: MOV COLUMNA,0
87: CALL CURSOR
88: LEA DX,MENU
89: MOV AH,9
90: INT 21H
91: TECLA: MOV AH,0
92: INT 16H
93:
94: CMP AL,"1"
95: JNE TECLA2
96: CALL UNO
97: JMP START
98: TECLA2: CMP AL,"2"
99: JNE TECLA3
100: CALL DOS
101: JMP START
102: TECLA3: CMP AL,"3"
103: JNE TECLA4
104: CALL TRES
105: JMP START
106: TECLA4: CMP AL,"4"
107: JNE TECLA5
108: CALL CUATRO
109: JMP START
110: TECLA5: CMP AL,"5"
111: JNE TECLA6
112: CALL CINCO
113: JMP START
114: TECLA6: CMP AL,"6"
115: JNE TECLAESC
116: CALL SEIS
117: JMP START
118: TECLAESC: CMP AL,27
119: JE FINAL
120: JMP TECLA
121: FINAL:
122: MOV AH,0
123: MOV AL,3
124: INT 10H
125: .EXIT(0)
126:
127: UNO:
128: CMP REGISTRO,25
129: JB REGISTR
130: RET
131: REGISTR: INC REGISTRO
132: CALL BORRARPANTALLA
133: MOV FILA,5
134: MOV COLUMNA,0
135: CALL CURSOR
136: LEA DX,MARCO
137: MOV AH,9
138: INT 21H
139:
140:
141: MOV FILA,8
142: OTROREGISTRO:
143: MOV COLUMNA,1
144: CALL CURSOR
145: MOV MAX,12
146: LEA DX,MAX
147: MOV AH,10
148: INT 21H
149:
150: MOV COLUMNA,16
151: CALL CURSOR
152: MOV MAX,14
153: LEA DX,MAX
154: MOV AH,10
155: INT 21H
156:
157: MOV COLUMNA,32
158: CALL CURSOR
159: MOV MAX,5
160: LEA DX,MAX
161: MOV AH,10
162: INT 21H
163:
164: MOV COLUMNA,40
165: CALL CURSOR
166: MOV MAX,5
167: LEA DX,MAX
168: MOV AH,10
169: INT 21H
170:
171: MOV COLUMNA,48
172: CALL CURSOR
173: MOV MAX,5
174: LEA DX,MAX
175: MOV AH,10
176: INT 21H
177:
178: MOV COLUMNA,56
179: CALL CURSOR
180: MOV MAX,5
181: LEA DX,MAX
182: MOV AH,10
183: INT 21H
184:
185: MOV COLUMNA,64
186: CALL CURSOR
187: MOV MAX,5
188: LEA DX,MAX
189: MOV AH,10
190: INT 21H
191:
192:
193: ; ubico DI
194:
195: LEA DI,REGISTROS
196: MOV CX,REGISTRO
197: SUB CX,1
198: UBICOR: ADD DI,79
199: LOOP UBICOR
200:
201: MOV FILA,8
202: MOV COLUMNA,0
203: LEOPANTALLA: CALL CURSOR
204: MOV AH,8
205: MOV BH,0
206: INT 10H
207: STOSB
208: INC COLUMNA
209: CMP COLUMNA,80
210: JNE LEOPANTALLA
211:
212: RET
213:
214: DOS: CALL BORRARPANTALLA
215:
216: LEA SI,REGISTROS
217: MOV CX,REGISTRO
218:
219: N2REGIS: MOV TOTAL,0
220: MOV AH,[SI+32]
221: MOV AL,[SI+33]
222: AND AX,0F0FH
223: AAD
224: MOV AH,0
225: ADD TOTAL,AX
226:
227: MOV AH,[SI+40]
228: MOV AL,[SI+41]
229: AND AX,0F0FH
230: AAD
231: MOV AH,0
232: ADD TOTAL,AX
233:
234: MOV AH,[SI+48]
235: MOV AL,[SI+49]
236: AND AX,0F0FH
237: AAD
238: MOV AH,0
239: ADD TOTAL,AX
240:
241: MOV AH,[SI+56]
242: MOV AL,[SI+57]
243: AND AX,0F0FH
244: AAD
245: MOV AH,0
246: ADD TOTAL,AX
247:
248: MOV AH,[SI+64]
249: MOV AL,[SI+65]
250: AND AX,0F0FH
251: AAD
252: MOV AH,0
253: ADD TOTAL,AX
254:
255: MOV BX,5
256: MOV DX,0
257: MOV AX,TOTAL
258: DIV BX
259: AAM
260: OR AH,30H
261: OR AL,30H
262: MOV [SI+70],AH
263: MOV [SI+71],AL
264: CALL DECIMALES
265: ADD SI,79
266: LOOP N2REGIS
267: MOV CX,2000
268: LEA SI,REGISTROS
269: LEA DI,TABLA
270: REP MOVSB
271:
272: LEA SI,TABLA
273: MOV CX,REGISTRO
274: MOV FILA,0
275: IMPRIM1: PUSH CX
276: MOV COLUMNA,0
277: CALL CURSOR
278: PUSH SI
279: POP DX
280: MOV AH,9
281: INT 21H
282: ADD SI,79
283: INC FILA
284: POP CX
285: LOOP IMPRIM1
286:
287:
288: MOV FILA,0
289: MOV CX,REGISTRO
290: LEOPANT2: PUSH CX
291: MOV COLUMNA,70
292: LEOPANT1: CALL CURSOR
293: MOV AH,8
294: MOV BH,0
295: INT 10H
296: NEG AH
297: MOV BL,AH
298: MOV AH,9
299: MOV BH,0
300: MOV CX,1
301: INT 10H
302: INC COLUMNA
303: CMP COLUMNA,74
304: JNE LEOPANT1
305: INC FILA
306: POP CX
307: LOOP LEOPANT2
308:
309: CALL BMIN
310: CALL BMAX
311:
312: MOV AH,0
313: INT 16H
314: RET
315:
316: TRES: CALL BORRARPANTALLA
317:
318: MOV FILA,8
319: MOV COLUMNA,0
320: CALL CURSOR
321: LEA DX,MENU2
322: MOV AH,9
323: INT 21H
324:
325: MOV BP,0
326: MOV AH,0
327: INT 16H
328: CMP AL,"1"
329: JZ OPC1
330: CMP AL,"2"
331: JZ OPC2
332: CMP AL,"3"
333: JZ OPC3
334: CMP AL,"4"
335: JZ OPC4
336: CMP AL,"5"
337: JZ OPC5
338: JMP TRES
339:
340: OPC5: ADD BP,8
341: OPC4: ADD BP,8
342: OPC3: ADD BP,8
343: OPC2: ADD BP,8
344: OPC1: ADD BP,32
345:
346:
347: MOV CX,2
348: LEA SI,CADENA4
349: LEA DI,CADENA5
350: REP MOVSB
351:
352: LEA BX,TABLA
353: LEA DI,CADENA5
354: LEA SI,REGISTROS
355: ADD SI,BP
356:
357: CALL COMPARACION3
358:
359: CALL BORRARPANTALLA
360:
361: LEA SI,TABLA
362: MOV CX,REGISTRO
363: MOV FILA,0
364: IMPRIM3: PUSH CX
365: MOV COLUMNA,0
366: CALL CURSOR
367: PUSH SI
368: POP DX
369: MOV AH,9
370: INT 21H
371: ADD SI,79
372: INC FILA
373: POP CX
374: LOOP IMPRIM3
375: MOV AH,0
376: INT 16H
377:
378:
379:
380:
381: RET
382:
383: CUATRO:
384: CALL BORRARPANTALLA
385: MOV CX,3
386: LEA SI,CADENA
387: LEA DI,CADENA2
388: REP MOVSB
389:
390: LEA BX,TABLA
391: LEA DI,CADENA2
392: LEA SI,REGISTROS
393: ADD SI,1
394: MOV BP,1
395: CALL COMPARACION
396:
397: CALL IMPRIMIR
398: MOV AH,0
399: INT 16H
400:
401: RET
402:
403: CINCO: CALL BORRARPANTALLA
404:
405: MOV CX,3
406: LEA SI,CADENA
407: LEA DI,CADENA2
408: REP MOVSB
409:
410: LEA BX,TABLA
411: LEA DI,CADENA2
412: LEA SI,REGISTROS
413: ADD SI,16
414: MOV BP,16
415: CALL COMPARACION
416:
417: LEA SI,TABLA
418: MOV CX,REGISTRO
419: MOV FILA,0
420: IMPRIM2: PUSH CX
421: MOV COLUMNA,0
422: CALL CURSOR
423: PUSH SI
424: POP DX
425: MOV AH,9
426: INT 21H
427: ADD SI,79
428: INC FILA
429: POP CX
430: LOOP IMPRIM2
431: MOV AH,0
432: INT 16H
433:
434:
435: RET
436:
437: SEIS: CALL BORRARPANTALLA
438:
439: MOV CX,2
440: LEA SI,CADENA3
441: LEA DI,CADENA5
442: REP MOVSB
443:
444: LEA BX,TABLA
445: LEA DI,CADENA5
446: LEA SI,REGISTROS
447: ADD SI,70
448: MOV BP,70
449: CALL COMPARACION1
450:
451: LEA SI,TABLA
452: MOV CX,REGISTRO
453: MOV FILA,0
454: IMPRIM6: PUSH CX
455: MOV COLUMNA,0
456: CALL CURSOR
457: PUSH SI
458: POP DX
459: MOV AH,9
460: INT 21H
461: ADD SI,79
462: INC FILA
463: POP CX
464: LOOP IMPRIM6
465: MOV AH,0
466: INT 16H
467:
468:
469:
470:
471:
472: RET
473:
474: IMPRIMIR: LEA SI,TABLA
475: MOV CX,REGISTRO
476: MOV FILA,0
477: IMPRIM: PUSH CX
478: MOV COLUMNA,0
479: CALL CURSOR
480: CALL COLORFILA
481: INC COLOR2
482: PUSH SI
483: POP DX
484: MOV AH,9
485: INT 21H
486: ADD SI,79
487: INC FILA
488: POP CX
489: LOOP IMPRIM
490: RET
491:
492: COLORFILA:
493: PUSH AX
494: PUSH CX
495: PUSH DX
496: PUSH BX
497:
498: MOV AH,6
499: MOV AL,1
500: MOV CH,FILA
501: MOV DH,FILA
502: MOV CL,0
503: MOV DL,79
504: MOV BH,COLOR2
505: INT 10H
506:
507: POP BX
508: POP DX
509: POP CX
510: POP AX
511:
512: RET
513:
514: COPIO: POP DI
515: POP SI
516: PUSH SI
517: PUSH DI
518: SUB SI,BP
519: MOV CX,79 ; modifique aqui
520: COPIA: MOV AL,[SI]
521: MOV [BX],AL
522: INC BX
523: INC SI
524: LOOP COPIA
525: JMP SCOMP3
526:
527: COPIO6: POP DI
528: POP SI
529: PUSH SI
530: PUSH DI
531: SUB SI,BP
532: MOV CX,79 ; modifique aqui
533: COPIA6: MOV AL,[SI]
534: MOV [BX],AL
535: INC BX
536: INC SI
537: LOOP COPIA6
538: JMP SCOMP6
539:
540:
541: COMPARACION: ; parametros: en si:cadena y di:datos
542:
543: push si
544: push di
545:
546: mov dx,registro
547: sigocom: push si
548: push di
549:
550: mov cx,3
551: rep cmpsb
552: jz copio
553: SCOMP3: pop di
554: pop si
555: add si,79
556: dec dx
557: jnz sigocom
558:
559: pop di
560: pop si
561:
562: inc byte ptr es:[di+2]
563: mov al,es:[di+2]
564: cmp al,"Z"
565: jbe comparacion
566: mov byte ptr es:[di+2],"A"
567:
568: inc byte ptr es:[di+1]
569: mov al,es:[di+1]
570: cmp al,"Z"
571: jbe comparacion
572: mov byte ptr es:[di+1],"A"
573:
574: inc byte ptr es:[di]
575: mov al,es:[di]
576: cmp al,"Z"
577: jbe comparacion
578:
579: ret
580:
581:
582: COMPARACION1: ; parametros: en si:cadena y di:datos
583:
584: push si
585: push di
586:
587: mov dx,registro
588: sigocom6: push si
589: push di
590:
591: mov cx,2
592: rep cmpsb
593: jz copio6
594: SCOMP6: pop di
595: pop si
596: add si,79
597: dec dx
598: jnz sigocom6
599:
600: pop di
601: pop si
602:
603: inc byte ptr es:[di+1]
604: mov al,es:[di+1]
605: cmp al,"9"
606: jbe comparacion1
607: mov byte ptr es:[di+1],"0"
608:
609: inc byte ptr es:[di]
610: mov al,es:[di]
611: cmp al,"9"
612: jbe comparacion1
613:
614: ret
615:
616:
617:
618: COMPARACION3: ; parametros: en si:cadena y di:datos
619:
620: push si
621: push di
622:
623: mov dx,registro
624: sigocom3: push si
625: push di
626:
627: mov cx,2
628: rep cmpsb
629: jz copio3
630: SCOMP03: pop di
631: pop si
632: add si,79
633: dec dx
634: jnz sigocom3
635:
636: pop di
637: pop si
638:
639: dec byte ptr es:[di+1]
640: mov al,es:[di+1]
641: cmp al,"0"
642: jge comparacion3
643: mov byte ptr es:[di+1],"9"
644:
645: dec byte ptr es:[di]
646: mov al,es:[di]
647: cmp al,"0"
648: jge comparacion3
649:
650: ret
651:
652: COPIO3: POP DI
653: POP SI
654: PUSH SI
655: PUSH DI
656: SUB SI,BP
657: MOV CX,79 ; modifique aqui
658: COPIA3: MOV AL,[SI]
659: MOV [BX],AL
660: INC BX
661: INC SI
662: LOOP COPIA3
663: JMP SCOMP03
664:
665:
666:
667: BORRARPANTALLA:
668: MOV AH,6
669: MOV AL,0
670: MOV CX,0
671: MOV DH,24
672: MOV DL,79
673: MOV BH,COLOR
674: INT 10H
675: RET
676: CURSOR:
677: MOV AH,2
678: MOV BH,0
679: MOV DL,COLUMNA
680: MOV DH,FILA
681: INT 10H
682: RET
683:
684: DECIMALES: MOV TOTAL,0
685: MOV AH,0
686: MOV AL,[SI+35]
687: AND AL,0FH
688: ADD TOTAL,AX
689:
690: MOV AL,[SI+43]
691: AND AL,0FH
692: ADD TOTAL,AX
693:
694: MOV AL,[SI+51]
695: AND AL,0FH
696: ADD TOTAL,AX
697:
698: MOV AL,[SI+59]
699: AND AL,0FH
700: ADD TOTAL,AX
701:
702: MOV AL,[SI+67]
703: AND AL,0FH
704: ADD TOTAL,AX
705: MOV DX,0
706: MOV BX,5
707: DIV BX
708: OR AL,30H
709: MOV [SI+73],AL
710: MOV BYTE PTR [SI+72],"."
711:
712: RET
713:
714: BMIN:
715: MOV FILA,0
716: LEA SI,REGISTROS
717: MOV CX,REGISTRO
718:
719: BMIN3:
720: PUSH CX
721: MOV SWMIN,0
722: MOV NMINIMA,0
723: BMIN5: MOV COLUMNA,32
724: MOV AH,[SI+32]
725: MOV AL,[SI+33]
726: AND AX,0F0FH
727: AAD
728: CMP AL,NMINIMA
729: CALL BMIN2
730:
731: ADD COLUMNA,8
732: MOV AH,[SI+40]
733: MOV AL,[SI+41]
734: AND AX,0F0FH
735: AAD
736: CMP AL,NMINIMA
737: CALL BMIN2
738:
739: ADD COLUMNA,8
740: MOV AH,[SI+48]
741: MOV AL,[SI+49]
742: AND AX,0F0FH
743: AAD
744: CMP AL,NMINIMA
745: CALL BMIN2
746:
747: ADD COLUMNA,8
748: MOV AH,[SI+56]
749: MOV AL,[SI+57]
750: AND AX,0F0FH
751: AAD
752: CMP AL,NMINIMA
753: CALL BMIN2
754:
755: ADD COLUMNA,8
756: MOV AH,[SI+64]
757: MOV AL,[SI+65]
758: AND AX,0F0FH
759: AAD
760: CMP AL,NMINIMA
761: CALL BMIN2
762:
763: CMP SWMIN,1
764: JE BMIN4
765: INC NMINIMA
766: CMP NMINIMA,99
767: JNE BMIN51
768: BMIN4: INC FILA
769: ADD SI,79
770: POP CX
771: LOOP BMIN31
772: RET
773: BMIN31: JMP BMIN3
774: BMIN51: JMP BMIN5
775:
776: BMIN2: JZ SOMBR
777: RET
778: SOMBR: MOV SWMIN,1
779: PUSH CX
780: CALL CURSOR
781:
782: MOV AH,8
783: MOV BH,0
784: INT 10H
785: NEG AH
786: ROL AH,2
787: MOV BL,AH
788: MOV AH,9
789: MOV BH,0
790: MOV CX,1
791: INT 10H
792: INC COLUMNA
793:
794: CALL CURSOR
795: MOV AH,8
796: MOV BH,0
797: INT 10H
798: NEG AH
799: ROL AH,2
800: MOV BL,AH
801: MOV AH,9
802: MOV BH,0
803: MOV CX,1
804: INT 10H
805: INC COLUMNA
806:
807: CALL CURSOR
808: MOV AH,8
809: MOV BH,0
810: INT 10H
811: NEG AH
812: ROL AH,2
813: MOV BL,AH
814: MOV AH,9
815: MOV BH,0
816: MOV CX,1
817: INT 10H
818: INC COLUMNA
819:
820: CALL CURSOR
821: MOV AH,8
822: MOV BH,0
823: INT 10H
824: NEG AH
825: ROL AH,2
826: MOV BL,AH
827: MOV AH,9
828: MOV BH,0
829: MOV CX,1
830: INT 10H
831: INC COLUMNA
832: SUB COLUMNA,4
833:
834:
835: POP CX
836: RET
837:
838:
839: BMAX:
840: MOV FILA,0
841: LEA SI,REGISTROS
842: MOV CX,REGISTRO
843:
844: BMAX3:
845: PUSH CX
846: MOV SWMIN,0
847: MOV NMAXIMA,99
848: BMAX5: MOV COLUMNA,32
849: MOV AH,[SI+32]
850: MOV AL,[SI+33]
851: AND AX,0F0FH
852: AAD
853: CMP AL,NMAXIMA
854: CALL BMAX2
855:
856: ADD COLUMNA,8
857: MOV AH,[SI+40]
858: MOV AL,[SI+41]
859: AND AX,0F0FH
860: AAD
861: CMP AL,NMAXIMA
862: CALL BMAX2
863:
864: ADD COLUMNA,8
865: MOV AH,[SI+48]
866: MOV AL,[SI+49]
867: AND AX,0F0FH
868: AAD
869: CMP AL,NMAXIMA
870: CALL BMAX2
871:
872: ADD COLUMNA,8
873: MOV AH,[SI+56]
874: MOV AL,[SI+57]
875: AND AX,0F0FH
876: AAD
877: CMP AL,NMAXIMA
878: CALL BMAX2
879:
880: ADD COLUMNA,8
881: MOV AH,[SI+64]
882: MOV AL,[SI+65]
883: AND AX,0F0FH
884: AAD
885: CMP AL,NMAXIMA
886: CALL BMAX2
887:
888: CMP SWMIN,1
889: JE BMAX4
890: DEC NMAXIMA
891: CMP NMAXIMA,0
892: JNE BMAX51
893: BMAX4: INC FILA
894: ADD SI,79
895: POP CX
896: LOOP BMAX31
897: RET
898: BMAX31: JMP BMAX3
899: BMAX51: JMP BMAX5
900:
901: BMAX2: JZ SOMBR2
902: RET
903: SOMBR2: MOV SWMIN,1
904: PUSH CX
905: CALL CURSOR
906:
907: MOV AH,8
908: MOV BH,0
909: INT 10H
910: NEG AH
911: ROR AH,2
912: MOV BL,AH
913: MOV AH,9
914: MOV BH,0
915: MOV CX,1
916: INT 10H
917: INC COLUMNA
918:
919: CALL CURSOR
920: MOV AH,8
921: MOV BH,0
922: INT 10H
923: NEG AH
924: ROR AH,2
925: MOV BL,AH
926: MOV AH,9
927: MOV BH,0
928: MOV CX,1
929: INT 10H
930: INC COLUMNA
931:
932: CALL CURSOR
933: MOV AH,8
934: MOV BH,0
935: INT 10H
936: NEG AH
937: ROR AH,2
938: MOV BL,AH
939: MOV AH,9
940: MOV BH,0
941: MOV CX,1
942: INT 10H
943: INC COLUMNA
944:
945: CALL CURSOR
946: MOV AH,8
947: MOV BH,0
948: INT 10H
949: NEG AH
950: ROR AH,2
951: MOV BL,AH
952: MOV AH,9
953: MOV BH,0
954: MOV CX,1
955: INT 10H
956: INC COLUMNA
957: SUB COLUMNA,4
958:
959:
960: POP CX
961: RET
962:
963:
964: end
No hay comentarios:
Publicar un comentario