Aux pros de l'assembleur !!! (DOS 16 bits)

Aux pros de l'assembleur !!! (DOS 16 bits) - Programmation

Marsh Posté le 10-09-2001 à 23:28:27    

vala vala ...
je m'y suis un peu remis, en particulier pour ecrire 2 ou 3 routines que je vais utiliser depuis un prog en C
alors 2 question :
apres pas mal de galeres, j'ai enfin perce toutes les conditions necessaires pour arriver a linker correctement ses routines asm avec son source en C
entre autre, il faut que les routines asm soient compilees dans le meme modele de memoire que le source C (small, large, huge ...)
alors j'aimerais m'eviter a compiler le meme source asm en 5 ou 6 objets a chaque fois
comment faire ?
je pense qu'il faut avoir recours aux lib
mais comment on en cree une ?
je suis sous tasm
j'ai tlink etc ... et un tlib aussi
mais j'ai pas de doc ... :sweat:
 
autre question, pour les masters :
une de mes routines utilise l'instruction MOVSD
elle copie ce qui se trouve en DS:[SI] vers ES:[DI] (si je me souviens bien)
mais moi je veux qu'elle fasse
DS:[ESI] vers ES:[EDI] a la place
et ca la meme instruction le fait a condition d'etre executee dans un segment 32 bits, ce qui n'est pas mon cas
alors la solution de rafistolage que j'ai trouve pour l'instant c'est de manuellement prefixer mon instruction (dans le source) a l'aide du prefixe de taille, valeur hexa = 67h
dans mon source j'ai ca :
...
DB 67h
rep movsd
...
j'aimerais savoir comment on fait pour se passer de ce prefixe = que le compilo le fasse pour moi
je pense qu'il faut jouer avec les use16 et use32 mais j'ai tres tres peu de doc et je sais pas comment on fait
une idee ?
 
et sinon, vous sauriez pas ou je pourrais trouver de l'aide ?
entre autre, comment on va sur les "comp.lang.x86" ou je sais pas quoi
parrait que c'est les forums de references (en anglais) mais je sais pas comment on y va (vous moquez pas :D)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 10-09-2001 à 23:28:27   

Reply

Marsh Posté le 10-09-2001 à 23:42:45    

houla ! tout d'abord, mes condoléances pour faire de l'asm, 16b de surcroit :)
 
pour le link, je ne me souviens pas du tout ...
 
pour les préfixes, je n'avais jamais vu d'autre solutions que les db 66h et db 67h à la pogne. soit tu compiles en 16 et tu utilises les db pour faire du 32, soit tu compiles en 32 et tu utilises les db pour faire du 16.
 
pour aller sur les newsgroups : http://groups.google.com
c'est le plus pratique pour chercher.

Reply

Marsh Posté le 11-09-2001 à 12:36:42    

merci pour ton aide
decidement, google, c'est vraiment le meilleur ami du programmeur
pour les lib, c'est une suggestion
car apparement on est bel et bien oblige de se recompiler son barda a chaque fois que l'on change de modele memoire
or il existe des lib, qu'on peut lier comme ca, pouf, quel que soit le modele memoire
enfin je crios ... je sais meme pas, j'ai jamais essaye
le truc c'est que au final les petites fonctions que j'ai faites, j'aimerais pouvoir facilement les reutiliser / distribuer et pas obliger de recompiler les sources a chaque fois :crazy:
"mes condoléances pour faire de l'asm, 16b de surcroit"
ben le but de ce "package" est justement de plus se faire chier avec les segment:offset, pouvoir utiliser toute la memoire dispo, sous DOS, en 16 bits, sans DOS Extender, depuis un programme C ... le reve quoi. ;)


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 11-09-2001 à 13:47:57    

heu on peux pas faire un truc style dans ton code c
 
.....;   /code C
asm {
  .. . . /code ASM
  .. . .
  .. . .
    }
.....;   /code C
 
je fesait un truc comme ca pour l'init de mon ecran en sofware l'asm direct dans le code et a la compilaion ca passe nickel

Reply

Sujets relatifs:

Leave a Replay

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