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),24H
8: 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,AX
44: CALL MODO
45: CALL PANTALLA
46: ADD ATRIBUTO,20H
47: MOV BH,ATRIBUTO
48: CALL VENTANA
49: LEA DX,MENU
50: MOV AH,9
51: INT 21H
52: MOV DH,26
53: 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 WAITING
70: CUT: CALL CUTTING
71: JMP WAITING
72: COL: CALL COLOR
73: JMP WAITING
74: QUIT: NOP
75: 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,10
84: 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,15
105: 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 CONTC
113: CALL LEERCUR
114: DEC DL
115: 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 NEXTCHR
123: RETURN: RET
124:
125: REVISAR: PUSH AX
126: 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 POSICIONAR
150: CUT1: CALL CUTTING
151: JMP POSICIONAR
152: COL1: CALL COLOR
153: JMP POSICIONAR
154: SEARCH1: CALL SEARCH
155: JMP POSICIONAR
156: 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,BUFFER
185: CALL LEERCUR
186: PUSH DX
187: MOV DL,10
188: 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 DX
204: CALL CURSOR
205: RET
206:
207: PASTING: LEA SI,BUFFER
208: CALL LEERCUR
209: PUSH DX
210: MOV BL,10
211: NEXTWRI: MOV DL,BL
212: 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 DX
221: 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,4
232: AND BH,0FH
233: AND BL,0FH
234: CMP BH,BL
235: JNE NOATRIBUTO
236: INC ATRIBUTO
237: NOATRIBUTO: CALL LEEPANTALLA
238: MOV BH,ATRIBUTO
239: CALL VENTANA
240: CALL C11
241: POP DX
242: CALL CURSOR
243: RET
244:
245:
246: SEARCH: CALL LEERCUR
247: PUSH DX
248: LEA SI,BR
249: MOV DH,5
250: MOV DL,0
251: CALL CURSOR
252: MOV AH,9
253: LEA DX,MARCO
254: INT 21H
255: MOV DH,6
256: MOV DL,46
257: CALL CURSOR
258: MOV AH,9
259: LEA DX,LINEA1
260: INT 21H
261: MOV AH,0
262: INT 16H
263: MOV BYTE PTR [SI],AL
264: MOV DL,AL
265: MOV AH,2
266: INT 21H
267: MOV DH,7
268: MOV DL,46
269: CALL CURSOR
270: MOV AH,9
271: LEA DX,LINEA2
272: INT 21H
273: MOV AH,0
274: INT 16H
275: 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 10H
294: 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 CAMBIO
303: S3: LOOP S1
304: INC DI
305: DEC DX
306: JNZ S2
307: JMP S4
308: CAMBIO: MOV BYTE PTR [DI-1],BH
309: JMP S3
310: S4: CALL C11
311: POP DX
312: CALL CURSOR
313: RET
314:
315: JUSTIFICAR: MOV CONTESP,0
316: CALL LEERCUR
317: PUSH DX
318: 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 DI
333: 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,60
342: SUB CX,BP
343: CMP CX,0
344: JE J111
345: J11: MOVSB
346: 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 DI
362: CALL LEERESP
363: POP DI
364: PUSH DI
365: ADD SI,BP
366: MOV CX,60
367: SUB CX,BP
368: MOV CX,60
369: SUB CX,BP
370: CMP CX,0
371: JE J311
372:
373: J31: MOVSB
374: 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 DI
389: CALL LEERESP
390: POP DI
391: PUSH DI
392: ADD DI,BP
393: MOV CX,60
394: SUB CX,BP
395: CMP CX,0
396: JE J211
397: J21: MOVSB
398: 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 DX
412: 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,10
420: 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,10
439: 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 LP1
449: 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 CUENTOESP
495: LEERESP2: LOOP LEERESP1
496: RET
497: CUENTOESP: INC BP
498: JMP LEERESP2
499:
500:
501: END
No hay comentarios:
Publicar un comentario