Programación General > ASM (Ensamblador)
Ayuda Con Lectura De Archivos
WOLFLIVING:
hola compañeros espero alguien me pueda ayudar, bueno pue estoy haciendo un tutor matematico sobre areas lleva teoria y ejercicios la cosa es que me he topado con un problema la teoria ya esta en distintos archivos dependiendo de los archivos y la leo asi:
CALL MODO ;;;SUBRUTINA PARA INICIALIZAR MODO TEXTO
LEA DX, TRI ;;;;CARGANDO VARIBLE DONDE SE ENCUENTRA ARCHIVO DEFINIDA ABAJO
CALL PINTAR ;;;;LLAMADO A SUBRRUTINA PARA IMPRESION DE ARCHIVO
;;;;;;;;SUBRRUTINA PARA IMPRIMIR EN PANTALLA;;;;;;;;;;
pintar:
MOV AL,0 ; modo de lectura
MOV AH,3Dh ; función para abrir fichero
INT 21h ; llamar al DOS
MOV handle,AX ; código de acceso al fichero
trocito:
MOV BX,handle ; código de acceso al fichero
MOV CX,2048 ; número de bytes a leer
LEA DX,buffer ; dirección del buffer
MOV AH,3Fh ; función para leer del fichero
INT 21h ; llamar al DOS
MOV CX,AX ; bytes leídos realmente
JCXZ cerrar ; no hay nada que imprimir
PUSH AX ; preservarlos
LEA BX,buffer ; imprimir buffer ...
imprime:
MOV DL,[BX] ; carácter a carácter
MOV AH,02h ; ir llamando al servicio 2 del
INT 21h ; DOS para imprimir en pantalla
INC BX ; siguiente carácter
LOOP imprime ; acabar caracteres
POP AX ; recuperar nº de bytes leídos
CMP AX,2048 ; ¿leidos 2048 bytes?
JE trocito ; sí, leer otro trocito más
cerrar:
MOV BX,handle ; código de acceso al fichero
MOV AH,3Eh ; cerrar fichero
INT 21h ; llamar al DOS
ret
;;;DEFINICION DE VARIABLES
handle DW 0 ; handle de control del fichero
TRI DB 'triang.txt','$'
buffer DB 2048 DUP (0) ; " " " " el disco
bueno pues esto funciona te lee el archivo y lo imprime en la pantalla mi problema esta cuando quiero poner otro archivo en pantall es decir por ejemplo que al presionar barra espaciadora pase a otra pagina cuando lo hago habiendo previamente definido variables para este nuevo archivo la aplicacion se traba. Si alguien me puede ayudar o decirme otra forma de leer un archivo para imprimir en pantalla se lo agradeceria mucho, espero no les de hueva leerlo GRACIAS DE ANTE MANO
Super_G:
El progrma parece estar Bien, solo tengo una observacion el nombre del archivo deberia ser tipo AsciiZ y me parece extraño que funcione, pues las pirmeras veces que experimente las funciones de archivos de la int 21h no funcionaban cuando el nombre de los archivos no eran tipo AsciiZ.
Super_G:
Poniendo las funciones en procedimientos y alguna que potra cosilla mas, aqui pongo el programa (de arriba) modificado. Compilado con TASM 2.1 (D.O.S.)
WOLFLIVING:
muchassss gracias SUPERG solo tengo una pequeña duda con respecto al programa que me has facilitado tu funcion ESPERAR soy nuevo en esto y no entiendo como funciona
esperar macro <----macro¿?
mov ah,0
int 16h
endm <---- endm
lo de enmedio si se que es la funcion para leer la tecla pulsada y guardar ascii en AL
pero como seria si yo quiero que pasa la pagina SOLO SI PRESIONO LA TECLA SPACE si presiono otra no pasa nada o si presiono R regresar a la pantalla anterior serias tan amable de aclararme estas dudas?¿ oye muchas gracias que me va a servir muchisimo no tienes idea
:huh:
WOLFLIVING:
OYE he probado poniendo un tercer archivo y me ha dado el mismo problema sera que solo pasa en mi maquina? podrias hecharme una mano y hacer la prueba con un tercer archivo a ver si a ti te funciona gracias por prestarme tiempo :kicking:
Navegación
[#] Página Siguiente
Ir a la versión completa