Este programa era un editor de texto que inicialmente, segun requerimiento de la practica, debia esperar la combinacion de teclas Ctrl + E para entrar en funcionamiento, luego podrias Escribir, cambiar el color de la fuente, cortar, pegar, buscar, reemplazar y justificar. Para salir se presiona la combinacion Ctrl + Q
1: .MODEL SMALL 2: .STACK 64H 3: .DATA 4: MENU DB 80 DUP (205)5: DB "Escribir Color cOrtar Pegar Buscar/reemplazar Justificar"
6: DB " F1 F2 F3 F4 F5 F6 "
7: DB 80 DUP (205),24H8: MARCO DB " ",201,14 DUP (205),187,10,13
9: DB " ",186,14 DUP (20H),186,10,13
10: DB " ",186,14 DUP (20H),186,10,13
11: DB " ",200,14 DUP (205),188,24H
12: LINEA1 DB " BUSCAR:",24H
13: LINEA2 DB " REEMPLAZAR:",24H
14: ATRIBUTO DB 17H 15: CONTC DB ? 16: CONTF DB ? 17: BUFFER DB 60 DUP (?) 18: LINEA01 DB 61 DUP (?) 19: LINEA02 DB 61 DUP (?) 20: LINEA03 DB 61 DUP (?) 21: LINEA04 DB 61 DUP (?) 22: LINEA05 DB 61 DUP (?) 23: LINEA06 DB 61 DUP (?) 24: LINEA07 DB 61 DUP (?) 25: LINEA08 DB 61 DUP (?) 26: LINEA09 DB 61 DUP (?) 27: LINEA10 DB 61 DUP (?) 28: LINEA11 DB 61 DUP (?) 29: LINEA12 DB 61 DUP (?) 30: LINEA13 DB 61 DUP (?) 31: LINEA14 DB 61 DUP (?) 32: LINEA15 DB 61 DUP (?) 33: LINEA16 DB 61 DUP (?) 34: CONTJ DB 0 35: CONTESP DB 0 36: BR DB 0,0 37: 38: 39: 40: .CODE 41: MOV AX,@DATA 42: MOV DS,AX 43: MOV ES,AX44: CALL MODO
45: CALL PANTALLA
46: ADD ATRIBUTO,20H 47: MOV BH,ATRIBUTO48: CALL VENTANA
49: LEA DX,MENU 50: MOV AH,9 51: INT 21H 52: MOV DH,2653: CALL CURSOR
54: WAITING: MOV AH,0 55: INT 16H 56: CMP AX,1205H 57: JE WRITE 58: CMP AX,180FH 59: JE CUT 60: CMP AX,1011H 61: JE QUIT 62: CMP AX,1910H 63: JE PASTE 64: CMP AX,2E03H 65: JE COL 66: JMP WAITING 67: 68: WRITE: CALL WRITING
69: JMP WAITING70: CUT: CALL CUTTING
71: JMP WAITING72: COL: CALL COLOR
73: JMP WAITING 74: QUIT: NOP75: SALIR: CALL MODO
76: .EXIT(0)
77: PASTE: CALL PASTING
78: JMP WAITING 79: 80: WRITING: MOV CONTF,0 81: MOV DH,9 82: NEXTFIL: MOV CONTC,0 83: MOV DL,1084: CALL CURSOR
85: NEXTCHR: MOV AH,0 86: INT 16H 87: CMP AX,1011H 88: JE SALIR 89: CMP AL,0 90: JE REVISAR 91: CMP AL,13 92: JE TECLAENT 93: CMP AL,8 94: JE BORRA 95: 96: PRINT: MOV DL,AL 97: MOV AH,2 98: INT 21H 99: INC CONTC 100: CMP CONTC,60 101: JNE NEXTCHR 102: MOV CONTC,0 103: INC CONTF 104: CMP CONTF,15105: TECLAENT: CALL LEERCUR
106: CMP DH,23 107: JE NEXTFIL 108: INC DH 109: JMP NEXTFIL 110: BORRA: CMP CONTC,0 111: JE NEXTCHR 112: DEC CONTC113: CALL LEERCUR
114: DEC DL115: CALL CURSOR
116: MOV AL,20H 117: MOV AH,9 118: MOV BH,0 119: MOV BL,ATRIBUTO 120: MOV CX,1 121: INT 10H 122: JMP NEXTCHR123: RETURN: RET
124: 125: REVISAR: PUSH AX126: CALL LEERCUR
127: POP AX 128: CMP AH,3DH 129: JE CUT1 130: CMP AH,3CH 131: JE COL1 132: CMP AH,3EH 133: JE PASTE1 134: CMP AH,3FH 135: JE SEARCH1 136: CMP AH,40H 137: JE JUST1 138: CMP AH,4DH 139: JE RIGHT 140: CMP AH,4BH 141: JE LEFT 142: CMP AH,48H 143: JE UP 144: CMP AH,50H 145: JE DOWN 146: JMP POSICIONAR 147: 148: PASTE1: CALL PASTING
149: JMP POSICIONAR150: CUT1: CALL CUTTING
151: JMP POSICIONAR152: COL1: CALL COLOR
153: JMP POSICIONAR154: SEARCH1: CALL SEARCH
155: JMP POSICIONAR156: JUST1: CALL JUSTIFICAR
157: JMP POSICIONAR 158: 159: 160: RIGHT: CMP DL,69 161: JE POSICIONAR 162: INC DL 163: INC CONTC 164: JMP POSICIONAR 165: LEFT: CMP DL,10 166: JE POSICIONAR 167: DEC DL 168: DEC CONTC 169: JMP POSICIONAR 170: UP: CMP DH,9 171: JE POSICIONAR 172: DEC DH 173: DEC CONTF 174: JMP POSICIONAR 175: DOWN: CMP DH,23 176: JE POSICIONAR 177: INC DH 178: INC CONTF 179: JMP POSICIONAR 180: 181: POSICIONAR: CALL CURSOR
182: JMP NEXTCHR 183: 184: CUTTING: LEA SI,BUFFER185: CALL LEERCUR
186: PUSH DX 187: MOV DL,10188: NEXTREA: CALL CURSOR
189: MOV AH,8 190: MOV BH,0 191: INT 10H 192: MOV [SI],AL 193: INC SI 194: MOV AH,9 195: MOV AL,20H 196: MOV BH,0 197: MOV BL,ATRIBUTO 198: MOV CX,1 199: INT 10H 200: INC DL 201: CMP DL,70 202: JNE NEXTREA 203: POP DX204: CALL CURSOR
205: RET 206: 207: PASTING: LEA SI,BUFFER208: CALL LEERCUR
209: PUSH DX 210: MOV BL,10 211: NEXTWRI: MOV DL,BL212: CALL CURSOR
213: MOV DL,BYTE PTR [SI]
214: MOV AH,2 215: INT 21H 216: INC SI 217: INC BL 218: CMP BL,70 219: JNE NEXTWRI 220: POP DX221: CALL CURSOR
222: RET 223: 224: 225: 226: COLOR: CALL LEERCUR
227: PUSH DX 228: INC ATRIBUTO 229: MOV BH,ATRIBUTO 230: MOV BL,ATRIBUTO 231: ROL BH,4232: AND BH,0FH
233: AND BL,0FH
234: CMP BH,BL 235: JNE NOATRIBUTO 236: INC ATRIBUTO237: NOATRIBUTO: CALL LEEPANTALLA
238: MOV BH,ATRIBUTO239: CALL VENTANA
240: CALL C11
241: POP DX242: CALL CURSOR
243: RET 244: 245: 246: SEARCH: CALL LEERCUR
247: PUSH DX 248: LEA SI,BR 249: MOV DH,5 250: MOV DL,0251: CALL CURSOR
252: MOV AH,9 253: LEA DX,MARCO 254: INT 21H 255: MOV DH,6 256: MOV DL,46257: CALL CURSOR
258: MOV AH,9 259: LEA DX,LINEA1 260: INT 21H 261: MOV AH,0 262: INT 16H263: MOV BYTE PTR [SI],AL
264: MOV DL,AL 265: MOV AH,2 266: INT 21H 267: MOV DH,7 268: MOV DL,46269: CALL CURSOR
270: MOV AH,9 271: LEA DX,LINEA2 272: INT 21H 273: MOV AH,0 274: INT 16H275: MOV BYTE PTR [SI+1],AL
276: MOV DL,AL 277: MOV AH,2 278: INT 21H 279: MOV AH,0 280: S5: INT 16H 281: CMP AL,13 282: JNE S5 283: MOV AH,8 284: MOV BH,0 285: INT 10H 286: MOV BH,AH 287: MOV AH,6 288: MOV AL,4 289: MOV CH,5 290: MOV CL,0 291: MOV DH,8 292: MOV DL,79 293: INT 10H294: CALL LEEPANTALLA
295: LEA DI,LINEA01 296: LEA SI,BR 297: MOV DX,14 298: MOV AL,[SI] 299: MOV BH,[SI+1] 300: S2: MOV CX,60 301: S1: SCASB 302: JZ CAMBIO303: S3: LOOP S1
304: INC DI 305: DEC DX 306: JNZ S2 307: JMP S4308: CAMBIO: MOV BYTE PTR [DI-1],BH
309: JMP S3310: S4: CALL C11
311: POP DX312: CALL CURSOR
313: RET 314: 315: JUSTIFICAR: MOV CONTESP,0316: CALL LEERCUR
317: PUSH DX318: CALL LEEPANTALLA
319: MOV AH,0 320: MOV AL,CONTJ 321: MOV DX,3 322: DIV DL 323: MOV CONTJ,AH 324: CMP AH,0 325: JE JUSTD 326: CMP AH,1 327: JE JUSTI 328: 329: LEA DI,LINEA01 330: LEA SI,LINEA01 331: J1: PUSH SI 332: PUSH DI333: CALL LEERESP
334: XOR DX,DX
335: MOV AX,BP 336: MOV BX,2 337: DIV BX 338: POP DI 339: PUSH DI 340: ADD DI,AX 341: MOV CX,60342: SUB CX,BP
343: CMP CX,0 344: JE J111 345: J11: MOVSB346: MOV BYTE PTR [SI-1],20H
347: LOOP J11
348: J111: POP DI 349: POP SI 350: ADD SI,61 351: ADD DI,61 352: INC CONTESP 353: CMP CONTESP,15 354: JNE J1 355: JMP J4 356: 357: JUSTI: 358: LEA DI,LINEA01 359: LEA SI,LINEA01 360: J3: PUSH SI 361: PUSH DI362: CALL LEERESP
363: POP DI 364: PUSH DI 365: ADD SI,BP 366: MOV CX,60367: SUB CX,BP
368: MOV CX,60369: SUB CX,BP
370: CMP CX,0 371: JE J311 372: 373: J31: MOVSB374: MOV BYTE PTR [SI-1],20H
375: LOOP J31
376: J311: POP DI 377: POP SI 378: ADD SI,61 379: ADD DI,61 380: INC CONTESP 381: CMP CONTESP,15 382: JNE J3 383: JMP J4 384: JUSTD: 385: LEA DI,LINEA01 386: LEA SI,LINEA01 387: J2: PUSH SI 388: PUSH DI389: CALL LEERESP
390: POP DI 391: PUSH DI 392: ADD DI,BP 393: MOV CX,60394: SUB CX,BP
395: CMP CX,0 396: JE J211 397: J21: MOVSB398: MOV BYTE PTR [SI-1],20H
399: LOOP J21
400: J211: POP DI 401: POP SI 402: ADD SI,61 403: ADD DI,61 404: INC CONTESP 405: CMP CONTESP,15 406: JNE J2 407: JMP J4 408: 409: J4: CALL C11
410: INC CONTJ 411: POP DX412: CALL CURSOR
413: RET 414: 415: C11: LEA DX,LINEA01 416: PUSH DX 417: MOV BL,9 418: C1: MOV DH,BL 419: MOV DL,10420: CALL CURSOR
421: POP DX 422: MOV AH,9 423: INT 21H 424: ADD DX,61 425: PUSH DX 426: INC BL 427: CMP BL,24 428: JNE C1 429: POP DX 430: RET 431: 432: LEEPANTALLA: MOV CH,CONTF 433: MOV CL,CONTC 434: PUSH CX 435: LEA SI,LINEA01 436: MOV BP,0 437: MOV DH,9 438: MOV DL,10439: LP1: CALL CURSOR
440: MOV AH,8 441: MOV BH,0 442: INT 10H 443: MOV DS:[SI+BP],AL 444: INC BP 445: CMP BP,60 446: JE LP2 447: INC DL 448: JMP LP1449: LP2: MOV BYTE PTR DS:[SI+BP],24H
450: MOV BP,0 451: ADD SI,61 452: MOV DL,10 453: INC DH 454: CMP DH,24 455: JNE LP1 456: POP CX 457: MOV CONTC,CL 458: MOV CONTF,CH 459: RET 460: 461: MODO: MOV AH,0 462: MOV AL,3 463: INT 10H 464: RET 465: CURSOR: MOV AH,2 466: MOV BH,0 467: INT 10H 468: RET 469: LEERCUR: MOV AH,3 470: MOV BH,0 471: INT 10H 472: RET 473: VENTANA: MOV AH,6 474: MOV AL,15 475: MOV CH,9 476: MOV CL,10 477: MOV DH,23 478: MOV DL,69 479: INT 10H 480: RET 481: 482: PANTALLA: MOV AH,6 483: MOV AL,0 484: MOV CX,0 485: MOV DX,184FH 486: MOV BH,ATRIBUTO 487: INT 10H 488: RET 489: 490: LEERESP: MOV BP,0 491: MOV CX,60 492: MOV AL,20H 493: LEERESP1: SCASB 494: JZ CUENTOESP495: LEERESP2: LOOP LEERESP1
496: RET 497: CUENTOESP: INC BP 498: JMP LEERESP2 499: 500: 501: END
No hay comentarios:
Publicar un comentario