Leer archivo de texto x86
Publicado por angel (4 intervenciones) el 11/04/2014 06:05:30
Hola gente! me encontré este código por ahí que lee archivos de texto, pero no lo hace muy bien lo que pasa es que cuando le pongo la cantidad de caracteres y son mas de 29 me imprime basura al final y cuando son mas de 80 se queda pegado, espero que me puedan ayudar, gracias de antemano.
Aquí dejo el codigo
Aquí dejo el codigo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
SegPila Segment para Stack 'Stack'
db 64 Dup ('SegStack ')
SegPila EndS
SDatos Segment para 'Data'
archivo db "archivo.txt", 0 ;ascii del nombre del archivo
leido db "$$$$$$$$$$$$$$$$$$$$$$$$$$$$$"
handle dw ? ;identificador del arhivo
SDatos EndS
CSeg Segment para public 'Code' ;Define el segmento de código paragraph tasm.
Begin:
Assume CS:SDatos, SS:SegPila ;Asignación de los segmentos a los registro de segmentos del CPU.
;Va a reservar la dirección del PSP en el ES.
xor ax,ax ;Pone en cero al reg ax.
mov ax,SDatos ;Mueve la posición de SData al reg ax.
mov DS,ax ;Mueve la posición de ax (SData) al reg DS.
mov al, 0h ;modo de acceso para abrir arhivo, modo lectura/escritura
mov dx, offset archivo ;offset lugar de memoria donde esta la variable
mov ah, 3dh ;se intenta abrir el archivo
int 21h ;llamada a la interrupcion DOS
mov handle, ax ;si no paso mover a lo que le dio el SO
mov bx, handle
mov cx, 79h ;<---- cantidad de caracteres que lee del archivo
mov dx, offset leido ;<--- pasa al dx lo que hay en el archhivo
mov ah, 3fh
int 21h
;cerramos archivo
mov bx, handle
mov ah, 3eh
int 21h
;imprimir el contenido de leido
mov dx, offset leido ;
mov ah, 9
int 21h
xor ax,ax ;Limpia el al y prepara el ah para la salida.
mov ax,4c00h ;Servicio AH=4c int 21h para salir del programa.
int 21h ;Llamada al DOS. Termine el programa.
CSeg EndS ;Fin del segmento de código.
End Begin
Valora esta pregunta
0