Variable 32 bits stoquée dans 2 varialbes 16 bits ?

Variable 32 bits stoquée dans 2 varialbes 16 bits ? - Delphi/Pascal - Programmation

Marsh Posté le 12-05-2003 à 16:49:57    

Est-ce possible? Si oui comment faire...
 
En fait j'ai un logiciel que je compile avec turbo pascal 7, e til marche en 16 bits, or j'ai besoin de creer une variable dans laquelle j'affecterai un grand nombre.
 
Merci.

Reply

Marsh Posté le 12-05-2003 à 16:49:57   

Reply

Marsh Posté le 12-05-2003 à 16:52:45    

y a pas de longint sur 32 bits dans TP7 ? :??:


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-05-2003 à 16:58:35    

En fait, la variable que je cree en pascal, je la reutilise dans des procedure en ASM, et je ne peux pas pusher des variable 32 bits :/ donc je me suis dis k'avec 2 varaibles 16 bits ca marcherai pe etre ...

Reply

Marsh Posté le 12-05-2003 à 17:10:52    

bah tu découpes ta valeur alors:
 
v1 = val and $0000FFFF;
v2 = val shr 16;


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-05-2003 à 17:16:10    

Si tu pouvais m'expliquer en meme temps ca serait sympa ;)
 
and $00.. et shr 16 a quoi ca correspond ?
 
Et en pascal je fais ca comment ?


Message édité par mesta le 12-05-2003 à 17:22:16
Reply

Marsh Posté le 12-05-2003 à 17:22:35    

antp a écrit :

bah tu découpes ta valeur alors:
 
v1 = val and $0000FFFF;
v2 = val shr 16;
 


 
hi et lo c'est peut être plus sympa pour un mec qui a pas l'air de piger les décalages de registres :D


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 12-05-2003 à 17:49:24    

ouais et en plus c'est ":=" et pas "=" :o
bah en effet utilise Hi et Lo alors pour avoir chacune des deux parties ;)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-05-2003 à 18:16:23    

Je conais pas trop le pascal (de même pour l'ASM)
Ca marche comment Hi et Lo svp ?
 
Avant javais:

Code :
  1. Pascal...
  2. word sp_adt;
  3. Asm...
  4. push sp_adt;


 
Et comment vais je faire maintenant ?

Reply

Marsh Posté le 12-05-2003 à 19:28:57    

mesta a écrit :


Ca marche comment Hi et Lo svp ?


 
ça marche pas dans ton cas en fait, c'est Zion qui dit n'importe quoi je crois :D d'après la doc c'est pour couper un integer 16 bits en deux bytes...
 
t'as donc :
 
longint truc; (qui contient la valeur)
word sp_adt1;  
word sp_adt2;  
 
sp_adt1 := truc and $0000FFFF;
sp_adt2 := truc shr 16;
 
puis:
 
push sp_adt1;
push sp_adt2;
 
enfin, je suis pas sûr que ça marche, faut tester et vérifier qu'il découpe bien le truc...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 12-05-2003 à 19:37:06    

antp a écrit :


c'est Zion qui dit n'importe quoi je crois :D  


 
[:cupra]


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 12-05-2003 à 19:37:06   

Reply

Marsh Posté le 12-05-2003 à 19:41:02    

héhé:
 
en asm, tu mets db 66, et ça passe l'opérande en 32 bits...
 
exemple:
 
db 66h  
push ax
 
donnera "push eax"
 
idem
 
db 66h
add ax,bx
 
donnera "add eax,ebx"

Reply

Marsh Posté le 12-05-2003 à 19:42:47    

exemple d'utilisation:
 
http://www.bsdg.org/swag/HARDWARE/0013.PAS.html
 
c'est chiant, mé ça marche, les démo-makers de l'ancien temps :D utilisaient bien ça :D

Reply

Marsh Posté le 13-05-2003 à 09:19:07    

Vi merci, mais dans mon cas je fais comment ?
 
db 66h
push sp_adt  
 
Cela ?
 
(avec sp_adt declaré en longint?)
 
ps:jy connais rien en asm.


Message édité par mesta le 13-05-2003 à 09:21:27
Reply

Marsh Posté le 13-05-2003 à 10:43:06    

:bounce:

Reply

Marsh Posté le 13-05-2003 à 23:57:59    

tu veux quoi, mettre une variable 32bits dans la pile ?
 
donc à priori oui ce serait ça...

Reply

Marsh Posté le 14-05-2003 à 09:46:00    

oui c'est ca mettre une varialble 32 bits dans la pile ...
 
Mais plus loin il y a un pop in_nmb, ou in_nmb est une variable 16 bits :/ donc je dois faire
 
db 66h
pop in_nmb  
 
c bon ?

Reply

Marsh Posté le 14-05-2003 à 10:32:12    

Jai donc declaré ma variable sp_adt en longint, mais quand je fais db 66h; push sp_adt il me met toujours la meme erreur : Invalid combinaison of opcode and operands  

Reply

Marsh Posté le 14-05-2003 à 11:21:04    

pop c'est prendre une variable sur la pile, et la mettre dans la destination...
 
tu veux faire quoi, pousser une variable sur le pile ? (push)
ou retirer une variable de la pile ? (pop)
 
si tu veux pousser un entier 32 bits sur la pile, je ferais ça:
 
longint truc
 
 
db 66h
push truc  
 
ou si TP geule:
 
push WORD PTR[truc]


Message édité par bjone le 14-05-2003 à 11:21:58
Reply

Marsh Posté le 14-05-2003 à 18:33:14    

En fait jai ca :
 
push    sp_adt; pop   in_nmb
 
C pour ca que je demandais ... sp_adt est en longint & in_nmb en word. jai donc fais ca push    WORD PTR[scan.sp_adt] ca passe mais kan je lance le soft ca plante ... normal ?

Reply

Marsh Posté le 14-05-2003 à 21:28:17    

bin si tu dépiles pas ce que t'empile, oui....

Reply

Marsh Posté le 14-05-2003 à 21:28:56    

file ton source...

Reply

Marsh Posté le 15-05-2003 à 09:26:52    

Ok tu as icq, aim, irc, msn pour que je puisse te parler, ca serait plus simple que par mail ou ici sur le forum.

Reply

Marsh Posté le 15-05-2003 à 14:24:26    

bin le but du forum c'est que tout le monde en profite... :D

Reply

Marsh Posté le 15-05-2003 à 14:26:48    

Certes, mais ces sources ne sont pas "gratuites" donc je ne peux pas les mettre a disposition de tout le monde.
Comme tu veux...

Reply

Marsh Posté le 15-05-2003 à 14:34:10    

ha ouki...

Reply

Marsh Posté le 15-05-2003 à 14:56:35    

Je peux te les envoyer quand même ou non ? tu as aim, .. ?

Reply

Marsh Posté le 15-05-2003 à 22:29:31    

icq ou en MP je t'en voyes mon nom d'utilisateur aimesshaine...

Reply

Marsh Posté le 16-05-2003 à 09:34:49    

Ok.

Reply

Marsh Posté le 16-05-2003 à 14:41:47    

jtai envoye un msg sur icq ;)

Reply

Marsh Posté le 16-05-2003 à 15:36:44    


Dites les gars, y a les privés pour discuter hein  :heink:


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 19-05-2003 à 09:23:26    

Oui desole je viens seulement de savoir ou et comment ca marchait :o

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed