"Constant too large"

Résolu
cs_bye Messages postés 3 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 31 octobre 2007 - 30 oct. 2007 à 18:45
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.

4 réponses

cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
31 oct. 2007 à 14:10
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+
3
cs_Nasman Messages postés 202 Date d'inscription mardi 17 mai 2005 Statut Membre Dernière intervention 29 septembre 2008 3
31 oct. 2007 à 09:14
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+
0
cs_bye Messages postés 3 Date d'inscription mardi 3 juin 2003 Statut Membre Dernière intervention 31 octobre 2007
31 oct. 2007 à 13:54
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.
0
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
C'était ça effectivement. Champagne!
0
Rejoignez-nous