(NASM) Probleme avec 4eh de l'int 21h [Résolu]

Signaler
Messages postés
28
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
13 avril 2008
-
Messages postés
77
Date d'inscription
mardi 12 novembre 2002
Statut
Membre
Dernière intervention
18 octobre 2007
-
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é...
A voir également:

6 réponses

Messages postés
28
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
13 avril 2008

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
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
salut,

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

@++
Messages postés
28
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
13 avril 2008

En fait, les 2 notations sont correctes
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1
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 )

@++
Messages postés
77
Date d'inscription
mardi 12 novembre 2002
Statut
Membre
Dernière intervention
18 octobre 2007

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
Messages postés
77
Date d'inscription
mardi 12 novembre 2002
Statut
Membre
Dernière intervention
18 octobre 2007

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