L'école clrhome.org un assembleur en ligne.
Bonjour,
http://clrhome.org/asm/
Est un assembleur en ligne qui peut s'avérer pratique pour faire des petits programmes en langage machine. On en avait parlé une fois sans arriver à quoi que ce soit avec.
J'ai un peu creusé la question et voici les quelques bases pour assembler quelque chose :
D'abord, double-cliquer sur l'onglet "hello.z80" pour nommer le fichier en assembleur.
Ensuite remplacer le programme d'exemple par un des codes suivants:
Code pour créer un fichier au format binaire (.BIN) :
Les 4 premères lignes constitues l'entête du fichier. Elle fait 7 octets. Le programme commence à l'adresse indiqué par ".org" (J'ai mis 0D000H pour l'exemple). Il se lance à l'adresse indiquée par prgExec lorsqu'on execute l'instruction BLOAD"name.bin",R ou DEFUSR=&HD000:A=USR(0) sous Basic. Les prgExec peuvent être supprimés si l'on remplace celui derrière le .dw par prgStart.
Code pour créer un fichier au format MSX-DOS (.COM) :
Un fichier .COM du MSX-DOS démarre toujours à l'adresse 0100h. Cependant, la norme stipule qu'à cette adresse, il devrait y avoir un "JP prgStart" suivit d'un petit texte (à "prgInfo:") pour décrire la commande suivit d'un zéro. Ce texte sera visible avec la commande HELP du MSX-DOS.
Code pour créer une ROM de 16Ko (.ROM) :
Code pour créer une ROM de 32Ko (.ROM) :
Voilà, il ne vous reste plus qu'à écrire votre progamme entre les labels "prgStart:" (ou "runAddr:") et "prgEnd:".
Il faut juste faire attention aux points suivants :
Une fois votre programme entré, cliquer sur "BUILD".
Si il n'y a pas d'erreur, cliquer sur "Download" dans le cadre où les messages du déroulement de l'assemblage s'affichent. Votre programme assemblé va se télécharger.
Ps: Pour sauvegarder le code source, il faut s'inscrire sur le site ou alors faire un copier/coller dans votre éditeur de texte préféré comme moi. Edité par GDX Le 23/06/2015 à 09h44
http://clrhome.org/asm/
Est un assembleur en ligne qui peut s'avérer pratique pour faire des petits programmes en langage machine. On en avait parlé une fois sans arriver à quoi que ce soit avec.
J'ai un peu creusé la question et voici les quelques bases pour assembler quelque chose :
D'abord, double-cliquer sur l'onglet "hello.z80" pour nommer le fichier en assembleur.
Ensuite remplacer le programme d'exemple par un des codes suivants:
Code pour créer un fichier au format binaire (.BIN) :
Code TEXT :
.db$FE .dwprgStart .dwprgEnd .dwprgExec .org$D000 prgStart: prgExec: prgEnd:
Les 4 premères lignes constitues l'entête du fichier. Elle fait 7 octets. Le programme commence à l'adresse indiqué par ".org" (J'ai mis 0D000H pour l'exemple). Il se lance à l'adresse indiquée par prgExec lorsqu'on execute l'instruction BLOAD"name.bin",R ou DEFUSR=&HD000:A=USR(0) sous Basic. Les prgExec peuvent être supprimés si l'on remplace celui derrière le .dw par prgStart.
Code pour créer un fichier au format MSX-DOS (.COM) :
Code TEXT :
.org$100 jpprgStart prgInfo: .db"Program Name v.x.x by toto",0 prgStart: prgEnd:
Un fichier .COM du MSX-DOS démarre toujours à l'adresse 0100h. Cependant, la norme stipule qu'à cette adresse, il devrait y avoir un "JP prgStart" suivit d'un petit texte (à "prgInfo:") pour décrire la commande suivit d'un zéro. Ce texte sera visible avec la commande HELP du MSX-DOS.
Code pour créer une ROM de 16Ko (.ROM) :
Code TEXT :
.db$41,$42 .dwprgStart .dw0,0,0,0,0,0 .org$4000 prgStart: prgEnd: .ds$8000-prgEnd
Code pour créer une ROM de 32Ko (.ROM) :
Code TEXT :
.db$41,$42 .dwprgStart-$20 .dw0,0,0,0,0,0 .org$4000 ; Routine de sélection de la ROM sur la plage de 8000h à BFFFh .db$CD,$38,$01,$0F,$0F,$E6,$03,$4F,$06,$00,$21,$C1,$FC,$09,$7E,$E6 .db$80,$B1,$4F,$23,$23,$23,$23,$7E,$E6,$0C,$B1,$26,$80,$CD,$24,$00 prgStart: prgEnd: .ds$C000-prgEnd
Voilà, il ne vous reste plus qu'à écrire votre progamme entre les labels "prgStart:" (ou "runAddr:") et "prgEnd:".
Il faut juste faire attention aux points suivants :
- Ne rien mettre derrière les labels. (Passez à la ligne suivante!)
- ".org adrs" remplace l'habituel " org adrs".
- "#define label adrs" remplace l'habituel"label equ adrs"
- .db donnée" remplace l'habituel " db donnée".
- .dw adrs" remplace l'habituel " dw adrs".
- .ds longueur" remplace l'habituel " ds longueur".
- Les valeurs hexadécimales sont souvent précédés d'un "#" sur MSX mais ce site utilise un "$" à la place. On peut aussi indiquer un nombre hexadécimal de façon classique, c'est à dire avec un "H" collé juste derrière. Dans ce cas, le nombre doit aussi toujours commencer par un chiffre de 0 à 9. Par exemple C000H provoque une erreur. Il faut donc mettre un 0 devant. 0C000H est pareil que $C000 donc.
- Pour les valeurs binaires, le symbole utilisé est "%" placé devant le chiffre et la façon classique est un "B" collé juste derrière chiffre (sans espace entre les deux).
Une fois votre programme entré, cliquer sur "BUILD".
Si il n'y a pas d'erreur, cliquer sur "Download" dans le cadre où les messages du déroulement de l'assemblage s'affichent. Votre programme assemblé va se télécharger.
Ps: Pour sauvegarder le code source, il faut s'inscrire sur le site ou alors faire un copier/coller dans votre éditeur de texte préféré comme moi. Edité par GDX Le 23/06/2015 à 09h44
Fabf
Membre non connecté
Conseiller Municipal
Ben il n'y a plus grand chose à dire. Tu peux essayer avec des exemples donnés sur le net ou dans le "Pratique du MSX" que je prépare en PDF.
Par exemple, cette routine :
http://www.msxvillage.fr/wiki/wiki.php?title=usr
doit être modifiée de la façon suivante pour être assemblable sur clrhome.org :
Essaie, ce n'est pas compliqué ! Il y a juste l'adresse derrière "prgStart" à modifier, retirer la ligne "ORG 0C000H" et mettre chaque instruction qui se trouve derrière un label à la ligne suivante.
0C000H est un choix arbitraire. Tu peux mettre 0D000H si tu veux plus de place pour le programme Basic. Il faut mettre un CLEAR,&HD000-1 avant si le programme Basic est long pour ne pas écraser la routine. Edité par GDX Le 23/06/2015 à 09h48
Par exemple, cette routine :
http://www.msxvillage.fr/wiki/wiki.php?title=usr
doit être modifiée de la façon suivante pour être assemblable sur clrhome.org :
Code TEXT :
.db$FE .dwprgStart .dwprgEnd .dwprgExec .org$C000 prgStart: ; CP 3 RET NZ; Retour au Basic si ce n'est pas une chaine ; LD A,(DE); Longueur de la chaine OR A RET Z; Retour au Basic si longueur = 0 LD B,A; Nombre de caractères dans B pour DJNZ Convc: INC DE LD A,(DE); Prend un caractère dans la chaine CP 041H JR C,NoChar; Si A < 041H, ce n'est pas une majuscule CP 05AH JR NC,NoChar; Si A > 064H, ce n'est pas une majuscule OR 020H; Convertie la majuscule en minuscule LD (DE),A; Place le caractère dans la chaine NoChar: DJNZ Convc RET; retour au Basic prgEnd:
Essaie, ce n'est pas compliqué ! Il y a juste l'adresse derrière "prgStart" à modifier, retirer la ligne "ORG 0C000H" et mettre chaque instruction qui se trouve derrière un label à la ligne suivante.
0C000H est un choix arbitraire. Tu peux mettre 0D000H si tu veux plus de place pour le programme Basic. Il faut mettre un CLEAR,&HD000-1 avant si le programme Basic est long pour ne pas écraser la routine. Edité par GDX Le 23/06/2015 à 09h48
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie