Variable 32 bits stoquée dans 2 varialbes 16 bits ? - Delphi/Pascal - Programmation
Marsh Posté le 12-05-2003 à 16:52:45
y a pas de longint sur 32 bits dans TP7 ?
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 ...
Marsh Posté le 12-05-2003 à 17:10:52
bah tu découpes ta valeur alors:
v1 = val and $0000FFFF;
v2 = val shr 16;
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 ?
Marsh Posté le 12-05-2003 à 17:22:35
antp a écrit : bah tu découpes ta valeur alors: |
hi et lo c'est peut être plus sympa pour un mec qui a pas l'air de piger les décalages de registres
Marsh Posté le 12-05-2003 à 17:49:24
ouais et en plus c'est ":=" et pas "="
bah en effet utilise Hi et Lo alors pour avoir chacune des deux parties
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 :
|
Et comment vais je faire maintenant ?
Marsh Posté le 12-05-2003 à 19:28:57
mesta a écrit : |
ça marche pas dans ton cas en fait, c'est Zion qui dit n'importe quoi je crois 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...
Marsh Posté le 12-05-2003 à 19:37:06
antp a écrit : |
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"
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 utilisaient bien ça
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.
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...
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 ?
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
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]
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 ?
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.
Marsh Posté le 15-05-2003 à 14:24:26
bin le but du forum c'est que tout le monde en profite...
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...
Marsh Posté le 15-05-2003 à 14:56:35
Je peux te les envoyer quand même ou non ? tu as aim, .. ?
Marsh Posté le 15-05-2003 à 22:29:31
icq ou en MP je t'en voyes mon nom d'utilisateur aimesshaine...
Marsh Posté le 16-05-2003 à 15:36:44
Dites les gars, y a les privés pour discuter hein
Marsh Posté le 19-05-2003 à 09:23:26
Oui desole je viens seulement de savoir ou et comment ca marchait
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.