Créer un fichier ASM à partir d'un fichier HEX : Guide pratique

La programmation de microcontrôleurs, tels que les PIC, implique souvent la manipulation de différents types de fichiers, notamment les fichiers HEX et ASM. Comprendre comment convertir un fichier HEX en fichier ASM est essentiel pour l'analyse, la modification et la compréhension du code embarqué. Cet article vous guidera à travers les étapes et les outils nécessaires pour effectuer cette conversion.

Assembly, object file, binary, hexadecimal, disassembly, architecture and i8086

Comprendre les fichiers HEX et ASM

  • Fichier HEX : Un fichier HEX est un fichier texte qui contient une représentation hexadécimale du code machine. Il est couramment utilisé pour programmer des microcontrôleurs.
  • Fichier ASM : Un fichier ASM contient du code assembleur, qui est une représentation lisible par l'homme du code machine. Il permet une compréhension plus facile du fonctionnement interne du programme.

Outils nécessaires

  • MPLAB : Un environnement de développement intégré (IDE) de Microchip, utilisé pour la programmation de microcontrôleurs PIC.
  • Désassembleur : Un outil qui convertit le code machine en code assembleur.

Étapes pour créer un fichier ASM à partir d'un fichier HEX

Le processus de conversion d'un fichier HEX en fichier ASM implique l'utilisation d'un désassembleur. Voici les étapes générales :

  1. Choisir un désassembleur : Il existe plusieurs désassembleurs disponibles, tels que celui intégré à MPLAB ou des outils tiers comme IDA Pro.
  2. Ouvrir le fichier HEX : Ouvrez le fichier HEX avec le désassembleur choisi.
  3. Désassembler le code : Lancez le processus de désassemblage. Le désassembleur convertira le code machine en code assembleur.
  4. Sauvegarder le code ASM : Sauvegardez le code assembleur généré dans un fichier ASM.

Utilisation de MPLAB

MPLAB est un environnement de développement intégré (IDE) de Microchip, largement utilisé pour la programmation de microcontrôleurs PIC. Bien que MPLAB ne permette pas d'ouvrir directement des fichiers .HEX, il offre des outils pour travailler avec des fichiers assembleur et compiler des projets.

Création d'un projet dans MPLAB

Pour travailler avec un fichier assembleur dans MPLAB, vous devez d'abord créer un nouveau projet :

  1. Ouvrez MPLAB.
  2. Sélectionnez Project/Project Wizard.
  3. Suivez les instructions pour configurer votre projet, en choisissant le bon microcontrôleur et les outils appropriés.
  4. Ajoutez les fichiers sources (fichiers .ASM) à votre projet.

Compilation et assemblage

Une fois votre projet créé, vous pouvez compiler et assembler vos fichiers assembleur :

Lire aussi: Compte FFBB perdu ? Voici comment le retrouver

  1. Assurez-vous que votre code assembleur est correctement structuré, avec les directives appropriées (par exemple, ORG 0xXXX pour spécifier l'adresse mémoire).
  2. Cliquez sur le bouton de compilation pour assembler votre code.
  3. MPLAB générera un fichier .HEX que vous pourrez ensuite programmer sur votre microcontrôleur.

Exemple de code assembleur

Voici un exemple simple de code assembleur pour un PIC16F84 :

; Définition des constantes LIST P=16F84 #INCLUDE ; Configuration __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC ; Début du programme ORG 0x000 ; Initialisation MOVLW 0x0F ; Charger la valeur 0x0F dans W MOVWF PORTB ; Envoyer la valeur à PORTB ; Boucle principaleloop: GOTO loop ; Boucle infinie END

Ce code initialise le PORTB avec la valeur 0x0F et entre dans une boucle infinie.

Les systèmes d'exploitation de disquettes (Sed) des Amstrad sont au nombre de trois : Amsdos, CP/M 2.2 et CP/M 3. Nous étudions ici quelques éléments du CP/M 2.2 qui peut être utilisé sur tous les modèles de CPC. Grâce au CP/M 2.2, on dispose d'un jeu de commandes internes, d'un jeu de commandes externes et d'un accès à une banque immense de logiciels (pour autant que les fichiers CP/M subissent une adaptation au format des disquettes Amstrad).

Les commandes internes ou résidentes ne figurent pas sur les disquettes. Ce sont :

  • DIR qui affiche le catalogue des disquettes ;
  • ERA qui efface un fichier ;
  • REN qui renomme un fichier ;
  • SAVE qui sauvegarde un programme sur la disquette ;
  • TYPE qui liste un fichier texte à l'écran ;
  • USER qui change la partition sur un disque.

La documentation Amstrad sur le CP/M s'avère succincte, quoique suffisante pour la plupart des commandes. Par exemple, save est déclarée réservée aux spécialistes (!) et user est totalement passée sous silence.

Lire aussi: Basket : L'Héritage de Tony Parker

Les commandes externes sont sur disquette et doivent être suivies du suffixe .com pour être exécutées par CP/M.

Digital Research, le créateur de CP/M, livre plusieurs commandes sur disquette (voir la liste des fichiers de la disquette CP/M 2.2) :

  • ASM , l'assembleur ;
  • DDT , le débogueur, utilitaire de mise au point des programmes ;
  • UMP pour lister un fichier à l'écran ;
  • ED , l'éditeur de texte, ligne par ligne ;
  • LOAD pour convertir un fichier .hex en programme commande ;
  • MOVCPM pour changer la taille d'un CP/M ;
  • PIP pour transférer les fichiers d'une source vers une destination, disque ou entrées/sorties;
  • STAT pour des informations sur les fichiers ;
  • SUBMIT pour exécuter des fichiers par lot ;
  • SYSGEN pour créer des disquettes système ;
  • XSUB pour améliorer l'efficacité de submit.

Amstrad a complété cette liste en y ajoutant :

  • AMSDOS qui passe la main à l'Amsdos ;
  • BOOTGEN qui génère des disquettes système ;
  • CHKDISC qui compare deux disquettes dans un système à deux lecteurs ;
  • CLOAD qui charge un programme en cassette sur disquette ;
  • COPYDISC qui copie le contenu d'une disquette sur une autre (dans un système à deux unités de disquette) ;
  • CSAVE qui charge un programme sur disquette en cassette;
  • DISCCHK qui copie le contenu d'une disquette sur une autre (dans un système à une unité de disquette) ;
  • FILECOPY qui copie un fichier d'une disquette sur l'autre (dans un système à une unité de disquette) ;
  • FORMAT qui initialise une disquette vierge ;
  • SETUP qui règle les paramètres système.

La commande save permet de créer des fichiers à partir de programmes contenus en mémoire. Pour ce faire, il est nécessaire de spécifier la longueur du fichier à sauvegarder. Le point de départ est toujours le même : c'est l'adresse de début des programmes utilisateurs sous CP/M. Ils commencent tous à la même adresse, 0100H (256 décimal).

La commande save va donc créer un fichier composé du contenu de la mémoire vive commençant en 0100H. La taille du fichier est donnée dans la commande save sous la forme d'un nombre qui représente un multiple de 128 octets. Ainsi :

Lire aussi: JoJo's Bizarre Adventure: All Star Battle R - Guide de téléchargement

SAVE 3 MONPROG.COM

Où 3 représente une taille de 384 octets (soit 3 fois 128 octets). Nous avons donné au fichier le nom de monprog.COM. Le suffixe .COM signifie que ce programme est exécutable, c'est-à-dire que monprog est une commande CP/M.

Assembler avec ASM sous CP/M

Prenons un exemple : la transposition de la commande print du Basic, en Assembleur Z80 pour environnement CP/M. Ce qui, en Basic, s'écrit :

PRINT CHR$(7) ; « Ca marche » ; CHR (7)

Devient en Assembleur :

LXI D, texte : pointe le texte

MVI C,09: code d'affichage sur l'écran, le texte doit se terminer par un signe "$"

CALL 5 : effectue l'opération (appel CP/M)

JMP 0 : redonne le contrôle au CP/M

TEXTE DB 07, 'Ca marche', 07, "$" : texte

END

Une fois assemblé avec un Assembleur comme asm (l'Assembleur CP/M), on obtient les codes suivants :

11 0B 01 ;LXI D, TEXTE

0E 09 ; MVI C,09

CD 05 00 CALL 5

C3 00 00 ;JMP 0

07 6B 61 20 &emspTEXTE DB 07, 'ca marche', 07, "$"

6D 61 72 63 END

68 65 07 24

L'Assembleur asm crée un fichier qui s'appelle monprog.hex. Il ne reste plus qu'à charger ce fichier, c'est-à-dire à le transformer en fichier de commandes avec la commande load.com: load monprog. Nous disposons, pour ce faire, des codes hexadécimaux (partie gauche de la routine ci-dessus : ll,0B,01,0E,09,CD,...) et de la commande DDT.

Enfin, il faut sauvegarder :

A>SAVE 1 MONPROG.COM

Nous aurions pu indiquer le nom du lecteur de disquette :

A>SAVE 1 BMONPROG.COMEt voilà, le tour est joué ! Essayez d'entrer la commande MONPROG , vous devez entendre le son du haut-parleur et voir s'afficher la phrase : ca marche suivie de : A>.

La commande user sert à partager les disques en zones. Utile si vous voulez « cacher » certains fichiers sur vos disquettes. Par exemple, si vous voulez dissimuler le programme que vous venez de créer, il vous faut, juste après le go qui permet de sortir de DDT , entrer les commandes suivantes :

USER 7

SAVE 1 MONPROG.COM

Et retourner en zone utilisateur "0", par :

USER 0

Ni vu, ni connu. Essayez de consulter le catalogue avec la commande dir, il n'y est point ! A moins que vous n'ayez enregistré le même programme sur la zone utilisateur "0" auparavant.

tags: #créer #fichier #asm #à #partir #fichier

Articles populaires: