(NASM) Probleme avec 4eh de l'int 21h

Résolu
sirozz Messages postés 28 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 13 avril 2008 - 13 juil. 2004 à 12:14
TheLudo2013 Messages postés 77 Date d'inscription mardi 12 novembre 2002 Statut Membre Dernière intervention 18 octobre 2007 - 29 juil. 2004 à 17:27
Certainement un probleme tout simple :
SUR NASM :

[org 100h]
[segment .text]

mov ah, 4eh
mov dx, JPGTYPE
int 21h

ret

[segment .data]
JPGTYPE db '*.jpg$'

erreur : windows ne parvient pas à accéder au périphérique au chemin d'accès ou au fichier spécifié...

6 réponses

sirozz Messages postés 28 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 13 avril 2008
13 juil. 2004 à 16:46
J'ai résolu mon probleme, apparement faut mettre mov dx, JPGTYPE avant la ligne mov ah, 4eh (pourquoi????). J'ai un peu modifié le tout :

[bits 16]
[org 100h]

[segment .text]

setDTA
mov ah, 1ah
mov dx, DTA
int 21h

findFirst
mov dx, TYPE
mov cx,0fh
mov ah, 4eh
int 21h

afficheNom
mov [ASC0], byte '$'
mov dx, NOM
mov ah, 09h
int 21h

ret

[segment .data]
TYPE db '*.*',0

[segment .bss]
DTA resb 30
NOM resb 12 ;nom du fichier
ASC0 resb 1
3
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
13 juil. 2004 à 12:51
salut,

ce qui m'etonne, c que avec NASM les nombres hexa s'ecrivent de la maniere du C ( 0x00 plutot que 00h )

@++
0
sirozz Messages postés 28 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 13 avril 2008
13 juil. 2004 à 13:31
En fait, les 2 notations sont correctes
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
13 juil. 2004 à 18:38
re,

ca serait pas plutot a cause de la chaine de filtre et le zero de terminaison ?

je n'ai pas vraiment fait attention car les chaines pour dos des fonctions d'affichage finissent par "$", vu que la fonction 4eh est nouvelle, peut etre que la chaine doit etre finie par 0

1 ere source, on a TYPE db "*.jpg$"
2 eme source, on a TYPE db "*.*",0 ( ca semble déjà + correct )

@++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
TheLudo2013 Messages postés 77 Date d'inscription mardi 12 novembre 2002 Statut Membre Dernière intervention 18 octobre 2007
29 juil. 2004 à 17:24
apparement faut mettre mov dx, JPGTYPE avant la ligne mov ah, 4eh

mov dx, TYPE
mov cx,0fh
mov ah, 4eh
int 21h


La mise d'une valeur dans DX n'as aucune incidence sur AH...

Par contre je connais pas la syntaxe nasm mais pour charger un une adresse on utilise le mot-clef OFFSET d'habitude :...

mov dx, offset TYPE


sinon on peut faire sans "offset" avec l'instruction lea

lea dx,TYPE


Voila en espérant avoir apporté ma pierre a l'édifice et dit pas trop de conneries !!! :)
@++
TheLudo2013
0
TheLudo2013 Messages postés 77 Date d'inscription mardi 12 novembre 2002 Statut Membre Dernière intervention 18 octobre 2007
29 juil. 2004 à 17:27
ca serait pas plutot a cause de la chaine de filtre et le zero de terminaison ?

Oui après relecture c'est effectivement ca allait pas. Les fonctions de fichier de l'int 21h prennent des "null terminated strings" ;)

@++
TheLudo2013
0
Rejoignez-nous