Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2965 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  "Error 155" Problème.. au secours :-)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

"Error 155" Problème.. au secours :-)

n°382411
mesta
Posté le 05-05-2003 à 10:41:57  profilanswer
 

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:

Code :
  1. sp_adt          : word;        { averaging }


 
Fichier avec code ASM:

Code :
  1. procedure get_spi;assembler;
  2. const qq = 100;
  3. var n,nn,mm,a,i,j,md,vv,ia,l,ii,bb,i0,zz,aa : integer; fb : byte;
  4. { In ax 0..N  }
  5. asm
  6.          mov     zz,  0ffffh
  7.          mov     a,      ax   ; call  get_pb
  8.          mov     ax,scan.sp_nx; mov   n, ax; mov nn, ax; mov mm, ax
  9.          push    sp_adt  ; pop   in_nmb
  10.          etc .....


 
Quand je declare sp_adt en DOUBLE par exemple, au niveau du push sp_adt il me met l'erreur suivant:

Code :
  1. Error 155: Invalid combinaison of opcode and operands.


 
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
mood
Publicité
Posté le 05-05-2003 à 10:41:57  profilanswer
 

n°382419
antp
Super Administrateur
Champion des excuses bidons
Posté le 05-05-2003 à 10:45:43  profilanswer
 

on peut faire push d'une variable ? :??: je croyais que ce n'était que pour les registres


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°382441
mesta
Posté le 05-05-2003 à 11:04:15  profilanswer
 

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 ?

n°382471
drasche
Posté le 05-05-2003 à 11:18:54  profilanswer
 

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.


Message édité par drasche le 05-05-2003 à 11:20:00

---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°382473
JPA
Posté le 05-05-2003 à 11:20:19  profilanswer
 

La syntaxe ne serait-elle pas ?
push dword sp_adt

n°382485
drasche
Posté le 05-05-2003 à 11:25:09  profilanswer
 

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.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°382491
mesta
Posté le 05-05-2003 à 11:28:42  profilanswer
 

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).

n°382498
drasche
Posté le 05-05-2003 à 11:31:31  profilanswer
 

ben le type dword [:spamafote]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°382503
mesta
Posté le 05-05-2003 à 11:33:49  profilanswer
 

En fait, lors de la creation des variable c'est du pascal... donc dword n'est pas reconnu :/

n°382510
chrisbk
-
Posté le 05-05-2003 à 11:38:27  profilanswer
 

ben t'as quand meme bien un truc sur 32bits non ?

mood
Publicité
Posté le 05-05-2003 à 11:38:27  profilanswer
 

n°382513
mesta
Posté le 05-05-2003 à 11:40:45  profilanswer
 

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 ?

n°382517
chrisbk
-
Posté le 05-05-2003 à 11:42:06  profilanswer
 

ben longint ?

n°382519
mesta
Posté le 05-05-2003 à 11:44:16  profilanswer
 

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 ?


Message édité par mesta le 05-05-2003 à 11:53:24

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  "Error 155" Problème.. au secours :-)

 

Sujets relatifs
Problème d'accents et de couleurs[JS-HTML] Problème de variable...
Problème avec un KeyListenerprobleme de despecialisation
[JAVA] Socket UDP et InputStream, probleme de read[PHP-MYSQL] J'ai un problème que je n'arrive pas à résoudre SVP
Gros problème de transfert de BDD MySQL ![C/C++] Sockets en UDP, problème d'envoi à une IP
[PHP]Probleme d'execution de script avec Easy Phpprobleme avec une boucle
Plus de sujets relatifs à : "Error 155" Problème.. au secours :-)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR