;------------------------------------------------------
Pila Segment
db 0FFFFh Dup (?) ;declracion del segmento de pila
Pila EndS
;------------------------------------------------------
;------------------------------------------------
Datos Segment ; declaracion del segmento de datos
archivo db 0;,0;?
leido db 81 dup (24h) ; Cantidad de letras que va a leer.
handle dw ? ; Identificador para el archivo.
Datos ENdS
;------------------------------------------------
;----------------------------------------------------
Codigo Segment ; declaracion del segmento de codigo
Assume CS:Codigo, DS:Datos, SS:Pila
Inicio:
mov ax, Datos
mov DS, ax
xor ax,ax
mov ah,01h
int 21h
mov archivo, al
mov dx, offset archivo ;
mov al, 0h
mov dx, offset archivo
mov ah, 3dh
int 21h
mov handle, ax
mov bx, handle
mov cx, 79h
mov dx, offset leido
mov ah, 3fh
int 21h
mov bx, handle
mov ah, 3eh
int 21h
xor ax,ax
xor dx,dx
;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 ;Termina el programa.
Codigo EndS
End Inicio
Répondre
archivo db 0;,0;?
La façon dont vous utilisez Archivo suggère que vous saisissez au clavier un nom de fichier de caractères. Ceci est bien fourni vous configurer le Archivo tampon de manière correcte:
archivo db 0,0
mov bx, handle mov cx, 79h mov dx, offset leido mov ah, 3fh int 21h
Ici, vous devez prêter attention au système de numéro que vous utilisez! Vous avez demandé une taille (en CX
) de 79 h (un nombre hexadécimal) qui est beaucoup plus que le tampon de 81 octets à leido.
Vous vouliez sans doute écrire:
mov cx, 79 ;Without the "h"
db 0FFFFh Dup (?) ;declracion del segmento de pila
Le reste du programme ne devrait poser aucun problème, sauf que je n'aime pas la façon dont vous avez configuré la pile. Vous devez toujours configurer exclusivement un même taille pile et dans ce petit programme, il n'a pas besoin d'être grand que tout:
db 512 dup (?) ;declracion del segmento de pila
Un moyen facile d'obtenir le droit même taille est en utilisant la directive dw
.
Les mêmes 512 octets pile devient alors:
dw 256 dup (?) ;declracion del segmento de pila
@GuilinNEX Si vous ne vérifiez pas les erreurs des appels DOS, assurez-vous que le répertoire en cours contient bien le fichier (avec un seul nom de fichier!) Que vous voulez lire. –
pour aider à attirer des réponses plus potentiels, s'il vous plaît traduire ce que vous pouvez en anglais. –
Et formatez votre code afin qu'il soit lisible. –
Votre code semble supposer que chaque interruption qu'il déclenche réussira. Ne fais pas ça. Consultez la documentation pour les interruptions que vous utilisez et ajoutez une gestion adéquate des erreurs à votre code. – Michael