begin process at 2012 05 25 11:37:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Assembleur

 > 

Archives

 > 

Forum general 80xxx

 > 

[NASM] émulateur NES


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[NASM] émulateur NES

mardi 17 août 2004 à 13:31:05 | [NASM] émulateur NES

sirozz

Bonjour à tous,

Je me lance dans la programmation d'un émulateur de console NES en ASM avec NASM. J'avais déja fait un émulateur NES en VB il y a quelques années mais je n'avais pas eu le temps de le finir.
Après avoir fait des .COM en 16 bits, je me lance maintenant dans les .EXE avec les fichiers .OBJ. Je rencontre malheureusement pas mal de problemes et je me pose aussi pas mal de questions :

1 - Je n'arrive plus à accéder au segment BSS, à part si je fais pointer DS sur ce segment ! faut-il toujours faire pointer DS vers un segment pour accéder aux données qu'il contient ?

2 - J'ouvre la ROM (le fichier NES) et je parcours les opcodes comme le ferait le proc 6502. Le problème c'est que pour executer une instruction du 6502, je stocke d'abord l'opcode dans AL et j'effectue 256 fois CMP pour tester la valeur de AL. J'ai alors pensé à une sorte de table de vecteurs, par ex: opcode 56 = 56 * 100 = 5600 = adresse de la fonction qui émule l'instruction numéro 56. Mais je ne sais pas du tout si c'est possible ?

3 - J'ai crée une sorte de mémoire de 64k qui est une réplique de la mémoire de la NES, le problème c'est que je conserve les même adresse que sur la machine originale, j'ai entendu parler d'une instruction sur NASM pour redéfinir l'adresse d'un segment ?

4 - Et pour finir, j'ai trouvé les sources ASM d'un émulateur de MAC qui tourne avec un 65c02 sur le web et ca ma déja bien aidé mais connaissez vous des sources d'émulateurs NES programmé en ASM ?

Merci d'avoir pris le temps de lire ce post. @+


In tartiflette we trust !
mardi 26 octobre 2004 à 13:39:23 | Re : [NASM] émulateur NES

CodeFighter

1-Un .com n'occupe qu'un segment.

Un .exe occupe plusieur segment, generalement :

-un segment de code (pointé par CS)
-un segment de pile (pointé par SS)
-un segment de donné (pointé par DS)

On a en plus un segment "extra" qui est utilisé par les instruction de chaîne (ES)

Si j'ai bien compris tu as plusieurs segments de donné.
Quand tu fais un :

mov al, [si]

En fait, le processeur fait :

mov al, ds:[si]

Tu peux donc acceder à deux segments de donné en même temps si un est pointé par DS et l'autre par ES. Pour y accéder, il suffit de l'écrire explicitement:

ex:
si DS pointe sur DATA1 et ES sur DATA2

mov al, [Var_DATA1] ; accéder à une variable dans le segment DS

mov al, es:[Var_DATA2] ; accéder à une variable dans le segment ES

2- A partir du 386 (il me semble) il existe une instruction "Jump Table" : tu fais une table qui contient les adresses de tes routines et qui est indexé par les opcodes. Sinon, tu peux le faire avec un "Jump Register".



Cette discussion est classée dans : asm, nasm, segment, émulateur, nes


Répondre à ce message

Sujets en rapport avec ce message

problem dans le segment .data (NASM) [ par bouba ] J'ai commencé aujourd'hui la programmation en AssembleurMon premier programme est classique, le "Hello world!".J'utilise NASM sous Linux (Red Hat 7.3, Variables sour ASM pour 8086 [ par koopje ] Bonjour à tous,Etudiant, je suis en train de m'exercer avec Emu8086, un émulateur (et assembleur, au passage) d'assembleur sour 8086. J'ai tenté de f SEGMENT SOUS NASM [ par Berty2000 ] Salut.je debute l'assembleur.Dans un prog EXE,comment recuperer la valeur du segment data dans lequelse trouve mot.pour l'offset, il suffit de faire m nasm - mémoire read-only [ par Funto66 ] Bonjour,je suis en train d'écrire des tutoriaux pour le site Coder-Studio (http://www.coder-studio.com/?page=tutoriaux) mais pour la création du tutor Afficher le contenu d'un registre [ par Anakinele ] Bonjour !Grand débutant en ASM je cherche 'simplement' (rien ne semble simple en asm !) à afficher dans la console le contenu d'un registre choisi au Probleme avec NASM et ALINK [ par epineurien ] Bonjour ! Voilà ma question : Je commence à utiliser NASM mais j'ai quelques problemes avec le linker ; Alink. Avec ce code (issu de la doc. de NASM traduire du c en asm [ par VBFRANCE ] bonjour a tous,j'ai traduit un fichier c en asm grace a l'option /FAs du visual c++j'aimerais pouvoir traduire le code ainsi pondu pas visual en un fi sos [ par bubra ] bubrabubraBonjour moi je suis un etudiant en electronique et maintenance informatique qui prepare mon projet de fin d"etude et je voudrais de l aide a traduction c++ ---> asm [ par tezca_system ] Bonjour,j'adore l'asm, sa fluidité, son agilité a pacourir les registres, sa rudesse et sa capacité à obeir au doigt et a l'oeil. Je connais le c++, p Questions sur Windows et son mode protégé [ par Oeil_de_taupe ] Bonjour, J'utilise mes longue vacances pour me mettre à l'assembleur, et plus particulièrement la création d'exécutable assembleur pour Windows


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales