1
« en: Viernes 15 de Noviembre de 2013, 03:46 »
Si mandamos una cadena con una palabra ya definida a que te la imprima en el archivo pues obviamente lo hace, pero yo lo que quiero es pedir caracteres desde teclado y almacenarlos en una cadena y despues al presionar una tecla especial (en mi caso Flecha izq) te lo guarde en un archivo guardado en ruta. Si lo hace pero al abrir el archivo veo que solo almacena pura basura y nada de texto, la vdd no se que mas tenga que hacer uds que tienen mas experiencia en esto me podran ilustrar ya que apenas estoy aprendiendo. De ante mano gracias aqui esta el codigo que les explique:
El programa inicia pidiendote que escribas el texto que va a almacenar en la variable cadena, despues lo contenido en cadena lo pasa a FINAL, y ya escribimos el texto despues presionamos la tecla "FLECHA IZQ" y se cierra el programa eso quiere decir que ya almaceno lo contenido en FINAL al archivo, pero al abrir ese archivo me muestra solo basura
OJO: USO EL EMU8086
.model small
.stack
.data
manejador dw 0
ruta db "c:\materias\prueba.asm",0
cadena db 0
renglon db 0
columna db 0
pagina db 0
FINAL db 200 DUP(" ")
;**************AREA DE MACROS***************
ABRIR_ARCHIVO MACRO RUTA,MODO
MOV AH, 3DH
LEA DX, RUTA
MOV AL, MODO
INT 21H
ENDM
LEER_ARCHIVO MACRO BYTES,MANEJADR,BUFFER
MOV AH,3FH
MOV CX,BYTES
MOV BX,MANEJADOR
LEA DX,BUFFER
INT 21H
ENDM
IMPRIME_SINCOLOR MACRO CADENA
MOV AH,9
LEA DX,CADENA
INT 21H
ENDM
TECLA MACRO
mov ah,0
int 16h
endm
CREA_ARCHIVO MACRO archivo_crear
MOV AH,3ch
LEA DX,archivo_crear
mov cx,32
int 21h
ENDM
ESCRIBIR_ARCHIVO MACRO MANEJADOR,CUANTOS_CARACTERES,QUE_ESCRIBIR
MOV AH, 40H
MOV BX, MANEJADOR
MOV CX, CUANTOS_CARACTERES
LEA DX, QUE_ESCRIBIR
INT 21H
ENDM
macro cursor renglon,columna,pagina
mov ah,2
mov dh,renglon
mov dl,columna
mov bh,pagina
int 10h
endm
imprime macro pagina,numero,caracter,color
mov ah,9
mov bh,pagina
mov cx,numero
mov al,caracter
mov bl,color
int 10h
endm
;*******************************************
.code
Inicializa: mov ax,@data
mov ds,ax
mov es,ax
CICLO:
call tec
cmp ah,4bh
je manda
mov cx,10
rep lodsb
mov final,al
imprime 0,1,cadena,0fh
inc columna
cursor renglon,columna,pagina
jmp ciclo
manda: ABRIR_ARCHIVO ruta,2
MOV MANEJADOR, AX;
ESCRIBIR_ARCHIVO MANEJADOR,1,final
Salir: mov ax,4c00h
int 21h
tec proc
mov ah,0
int 16h
mov cadena,al
ret
tec endp