Débutant qui a un prob avec l'int21h

sibi12 Messages postés 337 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 avril 2006 - 25 mars 2003 à 21:38
sibi12 Messages postés 337 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 avril 2006 - 2 avril 2003 à 01:13
salut voivi mon code :

mov ah, 09h
mov dx, offset buffer
int 21h

buffer a été déclaré comme ca:

buffer db 50 dup(0)

le compilateur me met une erreur pour la ligne mov dx, offset buffer: les operandes ne sont pas de meme taille.

si je mets mov edx, offset buffer le proramme se plante à int 21h

aidez-moi svp merci d'avance

9 réponses

gblade Messages postés 85 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 19 mai 2003
25 mars 2003 à 22:59
Ca fait trop longtemps que je n'ai pas programmer sous MASM mais à mon avis, tu travailles en mode 32bits et non 16bits.
Désolé de ne pas pouvoir t'en dire plus :/.
@+
0
cs_Nemesis Messages postés 22 Date d'inscription dimanche 6 octobre 2002 Statut Membre Dernière intervention 18 avril 2003
26 mars 2003 à 17:18
je suis d'accord avec gblade... Tu dois utiliser le mode 32 bits et pas le mode 16 bits. Les adresses 32 bits ne tiennent pas dans le registre dx, mais elles tiennent dans edx. En mode 32 bits, tu n'a pas accès au interruptions dos.

A mon avis il faudrait te reporter à la doc de ton compilateur pour savoir comment utiliser le mode 16 bits (mode réel) à la place du mode 32 bits (mode protégé)

Nemesis
0
sibi12 Messages postés 337 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 avril 2006
27 mars 2003 à 15:39
Merci c vrai que j'avais pas penser que j'étais en mode protéger

@+
0
CoreBreaker Messages postés 540 Date d'inscription dimanche 23 mars 2003 Statut Membre Dernière intervention 5 octobre 2007 1
31 mars 2003 à 18:52
Le code est bon a condition de mettre la déclaration de buffer et ton code dans un segment 16bits.
Ca dépend ce que tu utilise comme compilateur.
Essaie:

mov dx, small offset buffer

Core Breaker :)
0

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

Posez votre question
sibi12 Messages postés 337 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 avril 2006
31 mars 2003 à 19:12
non, ça ne fonctionne pas merci quand meme. Est-ce que tu sais comment définir qu'on travail en 16bit ?
0
gblade Messages postés 85 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 19 mai 2003
31 mars 2003 à 23:15
Assembler en 16 bits :
Pour NASM :
[BITS 16]

Pour MASM :
_DATA segment use16

(je crois)
0
sibi12 Messages postés 337 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 avril 2006
1 avril 2003 à 00:00
Merci pour tes réponse mais cela ne fonctionne tjrs pas,

Voila ma ligne :

mov dx, small offset buffer

il me met qu'il ne trouve pas d'opérateur (missing operator in expression) !!!!!!!!
0
gblade Messages postés 85 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 19 mai 2003
1 avril 2003 à 21:30
Arf, moi perso je n'ai jamais rajouté small devant offset mais si ça marche enfin bon essaie le code suivant (non testé) :

_DATA segment public use16
buffer db 10 dup(0) ; je connais plus al syntaxe exacte
_DATA ends

_TEXT segment public use16
mov dx, offset buffer
_TEXT ends
0
sibi12 Messages postés 337 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 avril 2006
2 avril 2003 à 01:13
non ça veut rien savoir je crois que je vais laisser tomber le mode réel...

merci qd meme pour ton aide

@+ ;)
0
Rejoignez-nous