"Error 155" Problème.. au secours :-) - ASM - Programmation
Marsh Posté le 05-05-2003 à 10:45:43
on peut faire push d'une variable ? je croyais que ce n'était que pour les registres
Marsh Posté le 05-05-2003 à 11:04:15
Je ne sais pas... ca ne marche qu'avec WORD, j'ai essayé BYTE ou LONGINT ... et j'ai toujours la même erreur
Comment cela se fait-ce ?
Marsh Posté le 05-05-2003 à 11:18:54
D'après ma bible, le PUSH est prévu de base pour les words et dwords, pas pour les bytes, SAUF si c'est un immédiat, donc un truc genre PUSH 255. J'en ai déjà fait l'expérience, le PUSH ne prend pas de registre/variable 8 bits.
Il est tout à fait possible de faire un push sur une variable (mais pas 8 bits donc) et même sur les registres de segments (CS, DS, ES, FS, GS, SS).
Edit: ooops pas vu TP7. Bon, ça doit être de l'ASM 8086 et là je suis pas sûr que les variables étaient acceptées. Je dirais même que non.
Marsh Posté le 05-05-2003 à 11:25:09
non, l'assembleur connaît la taille d'après le paramètre passé à PUSH. Si on fait de l'adressage indirect, il sera sage de lui préciser le type de pointeur dans ce cas précis.
Marsh Posté le 05-05-2003 à 11:28:42
Coment je peux faire alors ?
Le type WORD n'est pas assez grand... car je dois affecter une grosse valeur a sp_adt (au moins 1 000 000).
Marsh Posté le 05-05-2003 à 11:31:31
ben le type dword
Marsh Posté le 05-05-2003 à 11:33:49
En fait, lors de la creation des variable c'est du pascal... donc dword n'est pas reconnu
Marsh Posté le 05-05-2003 à 11:40:45
Comme type de variable il y a :
1 octet (type SHORTINT ou BYTE), 2 octets (type INTEGER ou WORD) ou 4 octets (type LONGINT) alors qu'un réel est stocké sur 4 octets (type SINGLE), 6 octets (type REAL), 8 octets (type DOUBLE) ou 10 octets (type EXTENDED).
Il y en a un d'interessant lol ?
Marsh Posté le 05-05-2003 à 11:44:16
Toujours la meme erreur ...
Il n'y aurait pas moyen dans la procedure ASM de modifier qq chose .. mettre le contenu de sp_adt dans un registre ou je ne sais quoi ?
Marsh Posté le 05-05-2003 à 10:41:57
Bonjour.
J'ai un probleme avec les sources dun logiciel. En fait je veux changer le type dune variable pour pouvoir lui affecter une valeur plus grande, mais j'ai un probleme.
Fichier de declaration de variables:
Fichier avec code ASM:
Quand je declare sp_adt en DOUBLE par exemple, au niveau du push sp_adt il me met l'erreur suivant:
Je ne connais pas torp l'assembleur, donc je ne sais pas comment resoudre ce probleme. Quelqu'un aurait une idée ?
ps: a la base c'est du pascal, mais la procedure ou il y a l'erreur est en asm donc j'ai prefere poster ma question ici.
ps2: je compile avec turbo pascal 7
Message édité par mesta le 05-05-2003 à 10:44:11