2010-09-30 6 views
0
dseg segment 
FileName db "hex.txt$" 
dseg ends 
cseg seg.. 
... 
wrFile proc 
push ax bx cx dx 
mov ax,3D00h 
mov dx, offset fileName 
int 21h 
mov bx,ax 
mov cx,10*type scores 
mov dx,offset highscoresnum 
mov ah,40h 
int 21h 
mov dx,offset highscoresdate 
mov ah,40h 
int 21h 
mov ah,3eh 
int 21h 
pop dx cx bx ax 
ret 
wrFile endp 

au premier int 21h (ah = 3dH) CF n'est pas effacé et AX passe à 2h. dans le net, il est écrit que AX contient le code d'erreur, mais je ne pouvais pas le trouver. qu'est-ce que je fais mal?assembleur écrire dans le fichier problème

+0

'pousser ax bx cx dx'? Quel assembleur utilisez-vous pour ça? – paxdiablo

+0

8086, c'est ce qu'ils nous enseignent à l'école – eden

+1

eden, je comprends les mnémotechniques, je n'ai jamais vu un assembleur qui vous permet de pousser ou de pop plus d'un registre à la fois. Ce n'est pas faisable en x86 standard, donc je suppose que l'assembleur lui-même transforme cela en «hache de poussée»; pousser bx; ... 'qui est une fonctionnalité intéressante. D'où ma question - je voulais regarder dans le produit assembleur réel. – paxdiablo

Répondre

2

Je pense que vous obtenez une erreur «fichier introuvable», car les fonctions INT 21h qui utilisent des noms de fichier ou de chemin nécessitent généralement qu'ils se terminent avec un octet zéro, pas un '$'.

+0

Correct. D'après ceci: http://www.ctyme.com/intr/rb-2779.htm c'est une chaîne ASCIZ, donc c'est zéro terminé. – Guffa