IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

[FASM=>NASM] Problème traduction avec MOD et $


Sujet :

Assembleur

  1. #1
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut [FASM=>NASM] Problème traduction avec MOD et $
    Bonjour,
    En tant que membre du projet SKAN, nous avons un petit problème de traduction d'une source FASM vers NASM.
    En FASM, ca donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    times 512-($ MOD 512) db 0
    Voici l'explication par sdx :

    Le code que j'ai donné dans le source du noyau permet de remplir le noyau de zéro jusqu'au prochain multiple de 512, pour que sa taille puisse être exprimé facilement en secteurs !

    ($ MOD 512) représente le reste de la division de l'adresse courante par 512. On comprend mieux l'utilité si on dit "ce qu'il reste quand on ne peut plus soustraire 512 à l'adresse courante", soit la différence avec le multiple de 512 juste inférieur. Par exemple, si le code fait 1020 octets, on a 1020 MOD 512 = 508.

    Ensuite, 512 - ($ MOD 512), ça représente le nombre d'octets manquants pour atteindre le prochain multiple de 512. Dans l'exemple précédant, 512 - 508 = 4, on a donc bien 1020 + 4 = 1024, qui est bien un multiple de 512.

    C'était une petite astuce que j'avais trouvé "vite fait" ... mais vous pouvez faire autrement (tant que "noyau.asm" se compile comme binaire de taille multiple de 512 !!)

    Savez vous comment faire sous NASM ?
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    S'il s'agit de remplir des 0 entre la dernière déclaration et le 512ème octet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dernier:      db 'Dernière déclaration' 
                  times 512-$+Dernier db 0
    Sinon j'ai pas compris...
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Membre habitué Avatar de SteelBox
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2002
    Messages : 446
    Points : 194
    Points
    194
    Par défaut
    Non, il s'agit de mettre des 0 entre l'adresse courante et une autre adresse qui est l'adresse courante à laquelle on ajoute le modulo de l'adresse courante par 512.

    Par exemple, si on est à l'adresse 1000, on veut mettre des 0 jusqu'à 1024.
    Si on est à l'adresse 1500, on veut mettre des 0 jusqu'à 1536.
    La vitesse de la lumière étant supérieure à celle du son, il apparaît normal que beaucoup de gens paraissent brillants jusqu'à ce qu'ils l'ouvrent.

  4. #4
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 416
    Points
    59 416
    Billets dans le blog
    2
    Par défaut
    Le problème doit venir du $, si j'en crois la doc de NASM :
    http://nasm.sourceforge.net/doc/html/nasmdo10.html#section-10.1.4

    L'expression pourrait peut-être être modifiée comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    times 512-(($-$$) % 512) db 0
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 96
    Points : 116
    Points
    116
    Par défaut
    Oui, c'est ca ! Merci !
    Et moi qui me cassait la tête à essayer de détourner le problème en utilisant des macros super complexes
    Responsable du projet SKAN (OS à but didactique)
    Contactez moi pour toutes questions ou remarques sur le projet.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de traduction avec DKLang Translation Editor
    Par adelcrb dans le forum Composants VCL
    Réponses: 15
    Dernier message: 13/07/2014, 09h16
  2. [nasm] problème avec une API window
    Par ctrlD dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 09/12/2011, 14h25
  3. [Joomla!] Problème traduction formulaires et données Community Builder avec Joomfish
    Par filiplarlibe dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 17/03/2011, 15h15
  4. [D7/Win32] Problème de traduction avec dxGetText
    Par _Alain_ dans le forum Débuter
    Réponses: 3
    Dernier message: 30/03/2008, 22h03
  5. [NASM] Problème avec l'appel des interruptions
    Par homeostasie dans le forum Assembleur
    Réponses: 3
    Dernier message: 23/01/2007, 16h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo