Programmer en hexadécimal ... c'est possible !!!
+10
vazerd
Le Grec
nikitouzz
linkakro
Metallica
Alexis
sandro
noelthebest
persalteas
matrefeytontias
14 participants
Page 6 sur 6
Page 6 sur 6 • 1, 2, 3, 4, 5, 6
Re: Programmer en hexadécimal ... c'est possible !!!
J'up ce sujet juste pour demander comment utiliser un fichier .inc... Je sais, je ne m'y connais pas trop, mais ce sujet m'intéresse beaucoup
Soulthym- Bronze 4
- Sexe :
Age : 27
Messages : 4
Date d'inscription : 12/12/2012
Etudes : 2nde
Points Forum : 5
Points Concours : 0
Langages :- - TI-Basic Z80
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - Grammer
- - TI-83+.fr
Re: Programmer en hexadécimal ... c'est possible !!!
Il faut placer le include ("*.inc") dans le dossier de ton projet assembleur.
Puis écrire au début de ton code source (c'est rarement ailleurs) l'instruction
#include toninclude.inc
Je crois qu'on peut le signaler au compilateur quand il est rangé ailleurs mais je ne sais plus comment.
Puis écrire au début de ton code source (c'est rarement ailleurs) l'instruction
#include toninclude.inc
Je crois qu'on peut le signaler au compilateur quand il est rangé ailleurs mais je ne sais plus comment.
linkakro- Or 4
- Sexe :
Age : 30
Messages : 768
Date d'inscription : 01/07/2010
Etudes : dut geii (elec/info)
Points Forum : 51
Points Concours : 8
Langages :- - TI-Basic Z80
- - ASM TI-82 Stats / TI-83
- - ASM TI-83+ / TI-84+
- - TI-82 Stats.fr
- - TI-84 Pocket.fr
Re: Programmer en hexadécimal ... c'est possible !!!
Ok merci beaucoup c'est juste ce qu'il me manquait^^.
Et sinon, super tuto, tu as du en baver pour trouver les correspondances asm/hexa
Et sinon, super tuto, tu as du en baver pour trouver les correspondances asm/hexa
Soulthym- Bronze 4
- Sexe :
Age : 27
Messages : 4
Date d'inscription : 12/12/2012
Etudes : 2nde
Points Forum : 5
Points Concours : 0
Langages :- - TI-Basic Z80
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - Grammer
- - TI-83+.fr
Re: Programmer en hexadécimal ... c'est possible !!!
Ça tu peux le dire et c'est pas fini.
Merci pour le compliment
Merci pour le compliment
matrefeytontias- Platinum 1
- Sexe :
Age : 26
Messages : 1383
Date d'inscription : 28/09/2011
Etudes : 1ère S SI
Points Forum : 90
Points Concours : 7
Langages :- - ASM TI-82 Stats / TI-83
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - Lua Nspire
- - Ndless Nspire
- - TI-83+.fr
- - TI-Nspire CAS
Re: Programmer en hexadécimal ... c'est possible !!!
Au pire tu prends la notice de Zilog ou la table hexa de Zeda, comme ça il ne te restes plus qu'à mettre en forme le tuto sans te fatiguer sur les traductions.
Et comme mise en forme il y a l'aspect programmation pour ton futur chapitre sur les ports.
remarque : il y a quand même quelques erreurs dans la notice zilog
Et comme mise en forme il y a l'aspect programmation pour ton futur chapitre sur les ports.
remarque : il y a quand même quelques erreurs dans la notice zilog
linkakro- Or 4
- Sexe :
Age : 30
Messages : 768
Date d'inscription : 01/07/2010
Etudes : dut geii (elec/info)
Points Forum : 51
Points Concours : 8
Langages :- - TI-Basic Z80
- - ASM TI-82 Stats / TI-83
- - ASM TI-83+ / TI-84+
- - TI-82 Stats.fr
- - TI-84 Pocket.fr
Re: Programmer en hexadécimal ... c'est possible !!!
Update, nouveau chapitre sur les différents opérateurs de l'ASM z80 ! J'ai également modifié tout le tuto pour inclure le pointeur (hl) dans les chapitres correspondant, donc une relecture des chapitres sur l'assignation vous fera pas de mal
Sauf que j'ai dépassé la limite de caractère avec mon premier message, donc je poste la suite ici
Sauf que j'ai dépassé la limite de caractère avec mon premier message, donc je poste la suite ici
- Suite du tutoriel:
- Les opérateurs, c'est ma foi bien pratique
On sait tous que l'ASM devient hyper galère dès qu'on parle de maths. Exemple : il est impossible de faire des multiplications ni des divisions en ASM (enfin en ASM z80, dans d'autres assembleurs plus récents on peut). Mais si le processeur ne sait pas faire des trucs qu'on trouve basique, il sait par contre faire des trucs qui ne nous semble pas naturels du tout. Détails plus bas
Les opérateurs de base
Ce que j'appelle opérateurs de base, ce sont les opérateurs que je trouve le plus simple à utiliser. On commence par ceux-là pour que vous puissiez bien comprendre le mode de fonctionnement du truc avant de s'attaquer à plus compliqué
Rappelez-vous que TOUS les opérateurs mettent à jour les flags de A sauf ld qu'on a déjà vu !
Premièrement, l'opérateur ADD. Il sert à ajouter à A ou HL un registre (respectivement 8 ou 16 bits) ou une valeur (8 bits et pour A uniquement). En ASM, ça donne :- Code:
add a,[registre8bits]
add a,[valeur8bits]
add hl,[registre16bits]
Comme vous avez sûrement deviné depuis le temps qu'on fait de l'hexa, ce n'est pas la même commande pour ajouter à A $14, B ou E (et pareil pour HL).- add a,** → C6**
- add a,b → 80
- add a,c → 81
- ...
- add a,(hl) → 86
- add a,a → 87
- add hl,bc → 09
- add hl,de → 19
- add hl,hl → 29
Notez qu'ajouter A à A ou HL à HL revient à multiplier le registre par 2.
Ensuite, SUB. Il sert à soustraire à A uniquement un registre ou une valeur 8 bits. En ASM, ça nous fait :- Code:
sub [valeur8bits]
sub [registre8bits]
- sub ** → D6**
- sub b → 90
- sub c → 91
- ...
- sub (hl) → 96
- sub a → 97
Notez que soustraire A à A est une méthode pour mettre A à 0 (parce qu'il y en a plusieurs) et à l'avantage de ne faire qu'on octet (contrairement à 3E00 → deux octets).
Maintenant, des opérateurs ressemblant d'assez près aux deux précédents : ADC et SBC. Ils ont la même utilité que leur presque-homonyme mais ils ajoutent ou soustraient le carry en plus de la valeur ou du registre passé. De plus, SBC est le seul opérateur permettant d'exercer une soustraction sur les registres 16 bits.
En clair, ADC et SBC ajoutent ou soustraient une valeur ou un registre PLUS le carry à un autre registre.- adc a,** → CE**
- adc a,b → 88
- adc a,c → 89
- ...
- adc a,(hl) → 8E
- adc a,a → 8F
- adc hl,bc → ED4A
- adc hl,de → ED5A
- adc hl,hl → ED6A
- sbc a,** → DE**
- sbc a,b → 98
- sbc a,c → 99
- ...
- sbc a,(hl) → 9E
- sbc a,a → 9F
- sbc hl,bc → ED42
- sbc hl,de → ED52
- sbc hl,hl → ED62
Vient ensuite EX. Cet opérateur sert à échanger les valeurs de deux registres sans passer par un troisième registre. Normalement, on peut faire 5 opérations avec, mais pour l'instant on ne va en voir qu'une (et oui c'est la crise). Je vous donne quand même les 5 opérations mais c'est absolument normal si vous n'en comprenez qu'une :- Code:
ex de,hl ← on va voir celle-là
ex af,af'
ex (sp),hl
ex (sp),ix
ex (sp),iy
Notez que vu que cette opération n'influe pas sur A, ses flags ne sont pas affectés.- ex de,hl → EB
Opérateurs binaires
Ces opérateurs sont légèrement plus compliqués que les précédents car ils exercent une action qui ne nous est pas habituelle (je veux dire autre chose qu'ajouter, soustraire, multiplier ou diviser). Voyons-les donc avec une pitite explication les précédant.
Commençons avec l'opérateur AND. L'opérateur prend deux bits (vous devriez savoir ce qu'est un bit) et renvoie 1 si les deux bits sont à 1. En gros, prenez la table de vérité suivante :Bit 1 Bit 2 Bit 1 and bit 2 0 0 0 0 1 0 1 0 0 1 1 1
Et appliquez-la à tous les bits de A et d'un autre registre ou valeur 8 bits, et vous avez l'opérateur AND.- Code:
and [valeur8bits]
and [registre8bits]
Évidemment, les flags de A sont mis à jour (et c'est le cas pour tous les opérateurs binaires sans exceptions).- and ** → E6**
- and b → A0
- and c → A1
- ...
- and (hl) → A6
- and a → A7
Après ça, il y a l'opérateur OR. Cet opérateur renvoie 1 si au moins un des deux bits sont à 1.Bit 1 Bit 2 Bit 1 or bit 2 0 0 0 0 1 1 1 0 1 1 1 1 - or ** → F6**
- or b → B0
- or c → B1
- ...
- or (hl) → B6
- or a → B7
Après ça, c'est l'opérateur XOR. Il ressemble beaucoup à OR sauf qu'il renvoie 1 si exactement un des deux bits est à 1.Bit 1 Bit 2 Bit 1 xor bit 2 0 0 0 0 1 1 1 0 1 1 1 0 - xor ** → EE**
- xor b → A8
- xor c → A9
- ...
- xor (hl) → AE
- xor a → AF
Décalages et rotations
Là on avance dans du compliqué, alors attention les potos ! Ceci dit, ces opérateurs risquent de bien vous servir. Les opérateurs de décalage et de rotations sont faciles à détecter : ils commencent tous par CB.
Commençons les décalages avec SLA. Cet opérateur exerce un décalage à gauche sur un registre 8 bits passé en argument, c'est à dire que le contenu du bit 0 passe dans le bit 1, celui du bit 1 va dans le bit 2 etc. De plus, le contenu du bit 7 va dans le carry et le bit 0 est mis à 0.
Voyons comment marche SLA. Pour cela, prenons par exemple le registre A qui vaut, disons %10110011.
A avant SLA :
A après SLA :1 0 1 1 0 0 1 1 Carry : 0 0 1 1 0 0 1 1 0 Carry : 1 - sla b → CB20
- sla c → CB21
- ...
- sla (hl) → CB26
- sla a → CB27
SRA fonctionne de la même manière : le contenu du registre 8 bits est décalé à droite, mais le bit 7 reste inchangé et c'est le bit 0 qui va dans le carry.
A avant SRA :
A après SRA :1 0 1 1 0 0 1 1 Carry : 0 1 1 0 1 1 0 0 1 Carry : 1 - sra b → CB28
- sra c → CB29
- ...
- sra (hl) → CB2E
- sra a → CB2F
Avec SLL, A est modifié comme avec SLA mais le bit 0 est mis à 1 à la place de 0.
A avant SLL :
A après SLL :1 0 1 1 0 0 1 1 Carry : 0 0 1 1 0 0 1 1 1 Carry : 1 - sll b → CB30
- sll c → CB31
- ...
- sll (hl) → CB36
- sll a → CB37
Toujours dans les décalages, SRL décale le contenu du registre 8 bits passé en argument à droite et met le bit 0 dans le carry comme SRA, mais contrairement à SRA SRL met le bit 7 à 0.
A avant SRL :
A après SRL :1 0 1 1 0 0 1 1 Carry : 0 0 1 0 1 1 0 0 1 Carry : 1 - srl b → CB38
- srl c → CB39
- ...
- srl (hl) → CB3E
- srl a → CB3F
Sur ce, bonne continuation et à bientôt pour les updates !
matrefeytontias- Platinum 1
- Sexe :
Age : 26
Messages : 1383
Date d'inscription : 28/09/2011
Etudes : 1ère S SI
Points Forum : 90
Points Concours : 7
Langages :- - ASM TI-82 Stats / TI-83
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - Lua Nspire
- - Ndless Nspire
- - TI-83+.fr
- - TI-Nspire CAS
Re: Programmer en hexadécimal ... c'est possible !!!
Très intéressant.
noelthebest- Platinum 1
- Sexe :
Age : 26
Messages : 1971
Date d'inscription : 12/03/2011
Etudes : ENS Cachan
Points Forum : 20
Points Concours : 9
Langages :- - TI-Basic Z80
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - TI-83+.fr
- - TI-Nspire CX
- - Casio Collège
- - Casio Graph
Re: Programmer en hexadécimal ... c'est possible !!!
super ( mais ca je savais deja ) il me manque cependant beaucoup de chose
merci matref, me donnerais tu l'autorisation de transcrire ceci sur le sdz ?
merci matref, me donnerais tu l'autorisation de transcrire ceci sur le sdz ?
nikitouzz- Platinum 1
- Sexe :
Age : 28
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :- - TI-Basic Z80
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - TI-Basic 68K
- - TI-Basic Nspire
- - TI-73
- - TI-76.fr
- - TI-82 Stats.fr
- - TI-83+
- - TI-84+
- - TI-92
- - TI-Nspire
- - TI-Nspire CX
Re: Programmer en hexadécimal ... c'est possible !!!
Ouais bah t'es gentil "il me manque des trucs", je mets des heures à écrire >_<
Et non, si le tuto passe sur le SdZ je m'en occupe.
Et non, si le tuto passe sur le SdZ je m'en occupe.
matrefeytontias- Platinum 1
- Sexe :
Age : 26
Messages : 1383
Date d'inscription : 28/09/2011
Etudes : 1ère S SI
Points Forum : 90
Points Concours : 7
Langages :- - ASM TI-82 Stats / TI-83
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - Lua Nspire
- - Ndless Nspire
- - TI-83+.fr
- - TI-Nspire CAS
Re: Programmer en hexadécimal ... c'est possible !!!
j'aurais essayee
nikitouzz- Platinum 1
- Sexe :
Age : 28
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :- - TI-Basic Z80
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - TI-Basic 68K
- - TI-Basic Nspire
- - TI-73
- - TI-76.fr
- - TI-82 Stats.fr
- - TI-83+
- - TI-84+
- - TI-92
- - TI-Nspire
- - TI-Nspire CX
Re: Programmer en hexadécimal ... c'est possible !!!
T'as pas un tuto Axe a finir, toi ? :regarde-en-l'air-d'un-air-distrait:
C'est la classe Matref Bravo. ça me fait baver.
C'est la classe Matref Bravo. ça me fait baver.
persalteas- Platinum 2
- Sexe :
Age : 28
Messages : 2068
Date d'inscription : 30/06/2010
Etudes : PACES (médecine)
Points Forum : 114
Points Concours : 10
Langages :- - TI-Basic Z80
- - xLib
- - Grammer
- - TI-Basic Nspire
- - TI-82 Stats.fr
- - TI-83
- - TI-83+
- - TI-84+ SE
- - TI-86
- - TI-Nspire
- - TI-Nspire CX
- - Casio Collège
- - Casio Graph
Re: Programmer en hexadécimal ... c'est possible !!!
Mmmmmmoua ? Naaaan
Sérieusement, l'ordi du lycée bloque le SdZ mais pas Espace-Ti, et j'ai plein de boulot atte aumme.
Sérieusement, l'ordi du lycée bloque le SdZ mais pas Espace-Ti, et j'ai plein de boulot atte aumme.
matrefeytontias- Platinum 1
- Sexe :
Age : 26
Messages : 1383
Date d'inscription : 28/09/2011
Etudes : 1ère S SI
Points Forum : 90
Points Concours : 7
Langages :- - ASM TI-82 Stats / TI-83
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - Lua Nspire
- - Ndless Nspire
- - TI-83+.fr
- - TI-Nspire CAS
Re: Programmer en hexadécimal ... c'est possible !!!
le tuto axe j'y passe du temps en ce moment surtout que matref ne m'aide pas ( it's joke !) mais je suis sur l'hexa en ce moment
nikitouzz- Platinum 1
- Sexe :
Age : 28
Messages : 1834
Date d'inscription : 16/01/2011
Points Forum : 7
Points Concours : 6
Langages :- - TI-Basic Z80
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - TI-Basic 68K
- - TI-Basic Nspire
- - TI-73
- - TI-76.fr
- - TI-82 Stats.fr
- - TI-83+
- - TI-84+
- - TI-92
- - TI-Nspire
- - TI-Nspire CX
Re: Programmer en hexadécimal ... c'est possible !!!
R-Up, encore désolé, mais ton programme pour le premier vrai TP sur les getkey
ne fonctionne pas: lorsque tu appuies sur une touche autre que 5 et kright, puis que tu rentres à nouveau la combinaison, ça reste bloqué en mode "wait for key"...
J'ai eu beau essayer de le refaire, il y a toujours le même problème...
Merci encore et d'avance!
PS: Dans ton code du Hello world, le tiens n'affiche que "llo world" essaies cette version très légèrement modifiee:
AsmPrgm
:EF4045
:111A1A
:ED53D786
:21A69D
:EF6145
:C9
:48656C6C6F20776F726C64202100
Jai juste changé le "21A89D" en "21A69D" car tu as enlevé le BB6D au debut du code;)
ne fonctionne pas: lorsque tu appuies sur une touche autre que 5 et kright, puis que tu rentres à nouveau la combinaison, ça reste bloqué en mode "wait for key"...
J'ai eu beau essayer de le refaire, il y a toujours le même problème...
Merci encore et d'avance!
PS: Dans ton code du Hello world, le tiens n'affiche que "llo world" essaies cette version très légèrement modifiee:
AsmPrgm
:EF4045
:111A1A
:ED53D786
:21A69D
:EF6145
:C9
:48656C6C6F20776F726C64202100
Jai juste changé le "21A89D" en "21A69D" car tu as enlevé le BB6D au debut du code;)
Soulthym- Bronze 4
- Sexe :
Age : 27
Messages : 4
Date d'inscription : 12/12/2012
Etudes : 2nde
Points Forum : 5
Points Concours : 0
Langages :- - TI-Basic Z80
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - Grammer
- - TI-83+.fr
Re: Programmer en hexadécimal ... c'est possible !!!
Impossible, j'ai tout testé à la rédaction et tout marche. Je vais revérifier, mais fais-le aussi.
matrefeytontias- Platinum 1
- Sexe :
Age : 26
Messages : 1383
Date d'inscription : 28/09/2011
Etudes : 1ère S SI
Points Forum : 90
Points Concours : 7
Langages :- - ASM TI-82 Stats / TI-83
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - Lua Nspire
- - Ndless Nspire
- - TI-83+.fr
- - TI-Nspire CAS
Re: Programmer en hexadécimal ... c'est possible !!!
J'ai retesté: même sur émulateur ça ne fonctionne pas quand on entre un code erroné puis le bon... Je pense que ça vient de ton "else".
Soulthym- Bronze 4
- Sexe :
Age : 27
Messages : 4
Date d'inscription : 12/12/2012
Etudes : 2nde
Points Forum : 5
Points Concours : 0
Langages :- - TI-Basic Z80
- - ASM TI-83+ / TI-84+
- - Axe Parser
- - Grammer
- - TI-83+.fr
Page 6 sur 6 • 1, 2, 3, 4, 5, 6
Sujets similaires
» Programmer en hexadécimal ?
» [FAQ hexadécimal] Posez ici vos questions sur l'hexadécimal 82 stats/83/83+/84+
» [83+/84+]Programmer en Grammer: la pratique
» hexadecimal...
» format en héxadécimal des nombres réels
» [FAQ hexadécimal] Posez ici vos questions sur l'hexadécimal 82 stats/83/83+/84+
» [83+/84+]Programmer en Grammer: la pratique
» hexadecimal...
» format en héxadécimal des nombres réels
Page 6 sur 6
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum
|
|