"Constant too large" [Résolu]

Messages postés
3
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
31 octobre 2007
- - Dernière réponse : cs_bye
Messages postés
3
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
31 octobre 2007
- 31 oct. 2007 à 15:33
Salut,
J'ai ce genre d'erreurs lorsque j'essaye d'afficher certains de mes messages. Certains puisque les messages déclarés en premier ne posent aucun problème.

Comme je suis débutant j'aurai voulu avoir un avis éclairé là dessus, et savoir comment faire pour régler ce pb.

Merci.

ps:j'utilise model small.
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
202
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
29 septembre 2008
3
Merci
Rebonjour,

A priori l'erreur que tu as provient du fait que le pointeur que tu utilises pour la fonction 9 de l'interruption DOS est dl et nom pas dx. La chaine est normalement pointée par DS:DX, soit un offset pouvant varier entre 0 et 65535 (taille d'un segment) alors qu'avec dl tu est limité de 0 à 255. Je parie que celà ne marche plus dès que le message est situé à plus de 255 octets du début de la section de données.
Remplaces dl par dx et je pense que celà ira mieux.

A+

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 219 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_Nasman
Messages postés
202
Date d'inscription
mardi 17 mai 2005
Statut
Membre
Dernière intervention
29 septembre 2008
0
Merci
Bonjour bye,

Il est difficile de t'aider dans la mesure du possible où tu n'indique pas dans quel contexte tu as ce message d'erreurs. Je vais essayer de deviner.
Je subodore que tu utilises Masm et que l'erreur apparait à la compilation.

Si la constante en question est censée être:
-un octet non signé alors la valeur doit être entre 0 et 255
-un octet signé      "            "            "            "   -128 et 127
-un word non signé            "            "            "   0 et 65535
-un word signé                  "              "            "  -32768 et 37267
-un dword non signé         "               "            "  0 et 4294967295
-un dword signé               "               "              -2147483648 et 214748364
-un float simple précision   "               "            -3.4e+38 et 3.4e+38

Pour t'aider davantage il faudrait que tu donnes plus de précision sur ton programme.
- assembleur
- quand apparait l'erreur (compilation, linkage, exécution)
- mettre le code (section programme et data)

A+
Commenter la réponse de cs_Nasman
Messages postés
3
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
31 octobre 2007
0
Merci
Oui en effet, j'ai peut-être été un peu trop vague.

En fait j'utilise tasm, tlink et td sur du x86. Et ce sont des erreurs de compilation en effet.

erreur -> MOV DL,OFFSET msg5
MOV AH,9
INT 21H

J'utilise 6 msg différents, tous plus longs les uns que les autres. Et il semble que les premiers msg déclarés prennent trop de place pour permettre de déclarer également les messages suivants.

Du coup si je réduit la taille des messages, ces erreurs disparaîssent. J'imagine qu'il faudrait alors que j'alloue moi même de la mémoire suplémentaire pour le segment de donnée, mais je ne sais pas du tout comment m'y prendre.

Peut-être que je me trompe sur l'interprétation de l'erreur, mais voilà où j'en suis resté avant de poster ce sujet hier.

Merci d'avance.
Commenter la réponse de cs_bye
Messages postés
3
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
31 octobre 2007
0
Merci
C'était ça effectivement. Champagne!
Commenter la réponse de cs_bye