Chequear la declaracion en el segmento de datos para conocer la funcionalidad.
1: .model small 2: .stack 64h 3: .data4: 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,1337: 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,1353: 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,1359: DB " PRESIONE UNA TECLA ",10,13,24H
60: 61: REGISTRO DW 662: 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,087: 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 TECLA296: CALL UNO
97: JMP START98: TECLA2: CMP AL,"2"
99: JNE TECLA3100: CALL DOS
101: JMP START102: TECLA3: CMP AL,"3"
103: JNE TECLA4104: CALL TRES
105: JMP START106: TECLA4: CMP AL,"4"
107: JNE TECLA5108: CALL CUATRO
109: JMP START110: TECLA5: CMP AL,"5"
111: JNE TECLA6112: CALL CINCO
113: JMP START114: TECLA6: CMP AL,"6"
115: JNE TECLAESC116: 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 10H125: .EXIT(0)
126: 127: UNO: 128: CMP REGISTRO,25 129: JB REGISTR 130: RET 131: REGISTR: INC REGISTRO132: CALL BORRARPANTALLA
133: MOV FILA,5 134: MOV COLUMNA,0135: CALL CURSOR
136: LEA DX,MARCO 137: MOV AH,9 138: INT 21H 139: 140: 141: MOV FILA,8 142: OTROREGISTRO: 143: MOV COLUMNA,1144: CALL CURSOR
145: MOV MAX,12 146: LEA DX,MAX 147: MOV AH,10 148: INT 21H 149: 150: MOV COLUMNA,16151: CALL CURSOR
152: MOV MAX,14 153: LEA DX,MAX 154: MOV AH,10 155: INT 21H 156: 157: MOV COLUMNA,32158: CALL CURSOR
159: MOV MAX,5 160: LEA DX,MAX 161: MOV AH,10 162: INT 21H 163: 164: MOV COLUMNA,40165: 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,64186: 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,REGISTRO197: SUB CX,1
198: UBICOR: ADD DI,79199: LOOP UBICOR
200: 201: MOV FILA,8 202: MOV COLUMNA,0203: 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: AAM260: OR AH,30H
261: OR AL,30H
262: MOV [SI+70],AH 263: MOV [SI+71],AL264: CALL DECIMALES
265: ADD SI,79266: 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,0277: CALL CURSOR
278: PUSH SI 279: POP DX 280: MOV AH,9 281: INT 21H 282: ADD SI,79 283: INC FILA 284: POP CX285: LOOP IMPRIM1
286: 287: 288: MOV FILA,0 289: MOV CX,REGISTRO 290: LEOPANT2: PUSH CX 291: MOV COLUMNA,70292: 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 CX307: 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,0320: CALL CURSOR
321: LEA DX,MENU2 322: MOV AH,9 323: INT 21H 324: 325: MOV BP,0 326: MOV AH,0 327: INT 16H328: CMP AL,"1"
329: JZ OPC1330: CMP AL,"2"
331: JZ OPC2332: CMP AL,"3"
333: JZ OPC3334: CMP AL,"4"
335: JZ OPC4336: 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,0366: CALL CURSOR
367: PUSH SI 368: POP DX 369: MOV AH,9 370: INT 21H 371: ADD SI,79 372: INC FILA 373: POP CX374: 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,1395: 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,16415: CALL COMPARACION
416: 417: LEA SI,TABLA 418: MOV CX,REGISTRO 419: MOV FILA,0 420: IMPRIM2: PUSH CX 421: MOV COLUMNA,0422: CALL CURSOR
423: PUSH SI 424: POP DX 425: MOV AH,9 426: INT 21H 427: ADD SI,79 428: INC FILA 429: POP CX430: 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,70449: CALL COMPARACION1
450: 451: LEA SI,TABLA 452: MOV CX,REGISTRO 453: MOV FILA,0 454: IMPRIM6: PUSH CX 455: MOV COLUMNA,0456: CALL CURSOR
457: PUSH SI 458: POP DX 459: MOV AH,9 460: INT 21H 461: ADD SI,79 462: INC FILA 463: POP CX464: 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,0479: 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 CX489: 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 DI518: SUB SI,BP
519: MOV CX,79 ; modifique aqui 520: COPIA: MOV AL,[SI] 521: MOV [BX],AL 522: INC BX 523: INC SI524: LOOP COPIA
525: JMP SCOMP3 526: 527: COPIO6: POP DI 528: POP SI 529: PUSH SI 530: PUSH DI531: SUB SI,BP
532: MOV CX,79 ; modifique aqui 533: COPIA6: MOV AL,[SI] 534: MOV [BX],AL 535: INC BX 536: INC SI537: 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 comparacion566: 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 comparacion572: 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 comparacion1607: 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 comparacion3643: 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 DI656: SUB SI,BP
657: MOV CX,79 ; modifique aqui 658: COPIA3: MOV AL,[SI] 659: MOV [BX],AL 660: INC BX 661: INC SI662: 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 BX708: OR AL,30H
709: MOV [SI+73],AL710: 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,NMINIMA729: 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,NMINIMA737: 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,NMINIMA745: 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,NMINIMA753: 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,NMINIMA761: 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 CX771: 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 CX780: 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 COLUMNA832: 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,NMAXIMA854: 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,NMAXIMA862: 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,NMAXIMA870: 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,NMAXIMA878: 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,NMAXIMA886: 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 CX896: 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 CX905: 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 COLUMNA957: SUB COLUMNA,4
958: 959: 960: POP CX 961: RET 962: 963: 964: end
No hay comentarios:
Publicar un comentario