Problème réécriture Assembleur

Résolu
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 - 17 déc. 2009 à 23:29
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 - 19 déc. 2009 à 15:31
Bonjour à tous,

Je voulais me faire plaisir en cette fin d'année en réécrivant un jeu d'arcade que j'aimais beaucoup et qui est développé en BP7. Malheureusement mes souvenirs en assembleurs remontent à l'époque du 8086. J'ai donc plusieurs macros écrites en assembleur qui faisaient appel à des interruptions du DOS. Avant que je ne lance dans l'aventure, je voulais votre avis.

1. Mon environnement actuel est XP Pro et D7 personnel. Existe t-il toujours le noyau du Dos dans le XP ? autrement dit, puis-je garder mes macros assembleurs qui font appel à des interruptions type DOS?

2. Si oui, quelle est l'instruction équivalente à l'instruction intr($10, r)? Interruption 10, je ne sais même plus ce qu'elle était. Mais ça c'est pas un problème, je vais le retrouver dans mes papiers.

3. Si non, qu'elle technique utiliser pour remplacer mes macros assembleur? threads? fonction système XP spécifique ?

4. Voici un exemple de code:

Type Registers = Record
case Integer of
0:(AX,BX,CX,DX,BP,SI,DI,DS,ES,Flags:Word);
1:(AH,AL,BL,BH,CL,CH,DL,DH:Byte);
End;

[b]{- initialisation video -------}
procedure init_mode_video;
var r: registers;
begin
r.ah:= 0;
r.al:= $13;
intr($10, r);
set_table;
affiche_decor;
end; /b

5. Quel est l'équivalent de l'ancienne instruction Mem ?
exemple : mem[$A000: 27* 320+ vi]: = cc;

Voilà, s'il y a des anciens bricoleurs de l'ASM qui ont déjà transposé du code pour Delphi,
je suis tout ouie!

Bien à vous!

Jean_Jean

7 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 34
19 déc. 2009 à 00:36
hahaha


laisse tomber. essayer d'initialiser le Mode X sur le shell windows c'est tout simplement du suicide.

en gros, tu recommence tout en GDI, GDI+, OpenGL ou DirectX si tu veux.
mais le mode X ... tu oublis.
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 34
19 déc. 2009 à 15:02
précision :

en gros le modeX permet d'ecrire directement dans la DAC de la carte video.
ce qui est plus rapide que de passé par le driver VGA ou EGA.

cela n'a plus sa justification aujourd'hui et aucun systeme, aucune carte graphique recents, ne te laissera accéder à la "DAC" de la carte graphique.

http://fr.wikipedia.org/wiki/Mode_X
beckerich Messages postés 302 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 17 septembre 2013 2
18 déc. 2009 à 00:13
Bonsoir,

je n'y connais rien en assembleur, mais je sais que l'on peut inclure du code assembleur dans delphi.

procedure TForm1.Button2Click(Sender: TObject);
Var a,b:Integer;
begin
  A:=1;
  B:=2;
  Asm
    Mov EAX,A
    Add B,EAX
  End;
  Label1.Caption:=IntToStr(b);
end;


voir ici.

Luc.
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
18 déc. 2009 à 00:24
Merci beckerich !

mais je sais cela, mon souci est la transposition d'un assembleur 8686 en assembleur pentium ou interprété par D7. Je cherche en vain sur la toile!

Je crois que le XP a viré le noyau DOS, donc il faut que remplace mes macros assembleur par une autre technique : threads, messages windows, je ne sais pas!

Parmi toutes les têtes pensantes de ce site, il y en a bien un qui s'est déjà planché sur ce problème? Bah, ils dorment tous ce soir! Demain, ils seront au chaud, ils auront tout loisir de delphiminer...

A+

Jean_Jean

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
19 déc. 2009 à 11:31
Merci Foxi pour cette mauvaise nouvelle que je craignai d'entendre!
Qu'est-ce que tu appelles le mode X?
Le mode graphique sur canvas?
J'avais pensé qu'avec des threads, des messages windows ou des hooks je pouvais m'en sortir en D7.
A+
Jean_Jean
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 34
19 déc. 2009 à 14:59
[i]r.ah:= 0;
r.al:= $13;
intr($10, r);
/i
> tentative d'init du mode X.
c'est un mode graphique avancé qui existait à l'époque ou les PC n'avait pas de carte graphique 3D. (carte EGA, VGA, SVGA).

aujourd'hui le mieux est d'utiliser OpenGL ou DirectX. openGL etant un peu plus accessible sous delphi que DX.

sur D7 par exemple, tu peux installer GLScene et travailler avec le GLCanvas qui permet donc de faire des manip GDI mais en openGL.

bonne chance.
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
19 déc. 2009 à 15:31
Ah oui, merci pour cette précision que j'avais oublié. Bref on utilisait les interruptions du noyau DOS.
Oui, bien sûr Open GL est performant pour le graphique, je l'avais déjà essayé pour programmer le modèle de la Relativité complexe. Mais j'ai trop perdu en Maths, c'est plus de mon niveau!...
Je me recentre sur un projet que j'ai commencé il y a deux ans et à la vitesse que je développe (j'en suis encore dans les spécifications et le début du niveau alpha)!!!!
Je travaille dans le sens de préparer une future équipe de développement et une internationalisation du programme. Quant à l'adaptation à différentes plates-formes et spécificités hard ou logicielles, elles ne sont plus dans mes compétences. Je cherche avant tout à développer une interface agréable et à développer le moteur de recherche de ce projet basé en partie sur des performances de calcul de probabilités.
Bon, je suis encore hors sujet!
A+
Jean_Jean
Rejoignez-nous