π
<-
Chat plein-écran
[^]

Aide pour débutant en assembleur svp

Assembleur, Axe, C/C++, ICE...

Aide pour débutant en assembleur svp

Message non lude emilechombier » 06 Sep 2019, 11:50

Bonjour,
Je débute en assembleur sur Ti83PCE-EP
J'apprends avec le tuto de themachine2 ici, et ceux en anglais sur le Z80
J'ai fait un essai de boucle vide avec PB que j'ai nettoyé pôur le faire fonctionner avec SPASM:

Code: Tout sélectionner
   #include "ti83pce.inc"
   .assume ADL=1
   .db tExtTok,tAsm84CeCmp
   .org userMem
   
_main:
    ld  hl,-3
    call    __frameset
    ld  bc,1
    ld  (ix+-3),bc
l_1:
    ld  bc,(ix+-3)
    inc bc
    ld  (ix+-3), bc
    ld  hl,bc
    or  a,a
    ld  bc,101
    sbc hl,bc
    jr  c,l_1
    ld  sp,ix
    pop ix
    ret


Je ne comprends pas pourquoi SPASM me renvoie :

15: error SE106: Could not find label or macro 'bc'

...alors que ça marche bien sur PB compilé avec ZDS

Merci d'avance
Avatar de l’utilisateur
emilechombier
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 8.6%
 
Messages: 51
Inscription: 01 Sep 2019, 17:29
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Aide pour débutant en assembleur svp

Message non lude Limonadd » 06 Sep 2019, 12:54

je pense que c'est à cause du ld hl,bc si tu veux mettre la valeur de bc dans hl tu peux faire:
ld l,c
ld h,b

et si tu as besoin des registres supérieurs de hl et bc (les 8 bits en plus) tu peux utiliser un push bc pop hl à la place
Avatar de l’utilisateur
Limonadd
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 97.1%
 
Messages: 82
Inscription: 14 Fév 2018, 17:10
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: oui

Re: Aide pour débutant en assembleur svp

Message non lude Limonadd » 06 Sep 2019, 12:59

mais fais attention si tu fais:
ld l,c
ld h,b

le registre supérieur de hl reste inchangé, donc si tu avais autre chose qu'un 0 dedans, tu auras donc une mauvaise valeur dans hl, c'est pourquoi tu peux mettre un ld hl,0 avant, comme ça ça met 0 dans l, dans h, et dans hlu
Avatar de l’utilisateur
Limonadd
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 97.1%
 
Messages: 82
Inscription: 14 Fév 2018, 17:10
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: oui

Re: Aide pour débutant en assembleur svp

Message non lude Limonadd » 06 Sep 2019, 13:01

quand je dis registre supérieur de hl, je veux dire hlu, quand tu es en mode ADL=1, tes registres font 24 bits. hl fait 24 bits, avec l et h, et encore hlu, mais ce dernier n'est pas accessible directement, c'est pareil pour tous les autres registres
Avatar de l’utilisateur
Limonadd
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Prochain niv.: 97.1%
 
Messages: 82
Inscription: 14 Fév 2018, 17:10
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: oui

Re: Aide pour débutant en assembleur svp

Message non lude emilechombier » 06 Sep 2019, 14:08

merci pour ces infos, mais ces lignes ont été générées automatiquement à partir du compilateur C qui est sur PB (du moins à partir de "main:", car j'ai remplacé l'en-tête vu que je change de compilateur)
https://tiplanet.org/pb/?id=229901_1567367967_86bf32715a
donc pourquoi ça marche avec PB et pas avec SPASM? mmm le mystère reste entier... B-)
Avatar de l’utilisateur
emilechombier
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 8.6%
 
Messages: 51
Inscription: 01 Sep 2019, 17:29
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Aide pour débutant en assembleur svp

Message non lude Adriweb » 07 Sep 2019, 03:09

Es-tu es bien sur d'avoir utilisé spasm-ng en mode ez80 ?

Par ailleurs, la toolchain utilise depuis quelques temps maintenant "fasmg" au lieu de spasm-ng (ni le tutorial ni le PB actuellement, ne sont a jour sur ce point la). Cést un assembleur bien plus puissant, mais plus complexe aussi ^^
Tu peux trouver des infos sur https://github.com/CE-Programming/toolchain/wiki et evidemment dans le repo de la toolchain en general : https://github.com/CE-Programming/toolchain

Quand j'aurais suffisament de temps libre pour re-bosser sur le PB, je mettrai le backend ez80_native a jour, et ajouterai d'autres modules...
Image

MyCalcs: Help the community's calculator documentations by filling out your calculators info!
MyCalcs: Aidez la communauté à documenter les calculatrices en donnant des infos sur vos calculatrices !
Inspired-Lua.org: All about TI-Nspire Lua programming (tutorials, wiki/docs...)
Avatar de l’utilisateur
AdriwebAdmin
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 80.2%
 
Messages: 14616
Images: 1218
Inscription: 01 Juin 2007, 00:00
Localisation: France
Genre: Homme
Calculatrice(s):
MyCalcs profile
Twitter/X: adriweb
GitHub: adriweb

Re: Aide pour débutant en assembleur svp

Message non lude Epharius » 07 Sep 2019, 16:32

Ah oui, ld hl,bc n'a jamais existé, on ne peut pas mettre un registre non 8bits (usuel i.e. hl, de, bc) dans un autre registre non 8bits. Donc ld hl,de ou ld bc,de ça n'existe pas non-plus etc.
Comme l'a dit Limonadd, faire "ld h,d / ld l,e" n'est pas équivalent à ce que tu veux faire. Donc si tu veux vraiment mettre DE dans HL, tu peux néanmoins écrire :
Code: Tout sélectionner
push de
pop hl

Mais c'est assez lent donc souvent ce qu'on fait c'est qu'on n'essaie pas de mettre un registre 24b dans un autre :P
Le projet Geometry Dash est terminé ! N'hésitez pas à aller jeter un coup d’œil au topic du projet ! Vous pouvez le télécharger ici.

Unis par la flèche sacrée de cupidon :favorite:
Image
Avatar de l’utilisateur
EphariusPremium
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 7.1%
 
Messages: 1110
Images: 4
Inscription: 08 Déc 2014, 17:38
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Ensimag
GitHub: MathisLav

Re: Aide pour débutant en assembleur svp

Message non lude TheMachine02 » 07 Sep 2019, 17:55

Effectivement, le compilateur ez80 de zilog émet trois pseudo-instruction qui n'existe pas dans le set du processeur :
Code: Tout sélectionner
uext hl
sext hl
ld reg24, reg24 (exemple : ld hl, bc)

Ce sont des instructions qui sont déconstruites par la suite en instructions du processeur. Ça donne en gros ça :
Pour uext hl :
Code: Tout sélectionner
or a, a
sbc hl, hl

Pour sext hl :
Code: Tout sélectionner
rla
sbc hl, hl

Pour les load 24 bits, c'est implémenté avec des push/pop.

Donc effectivement, c'est pas compris par spasm car c'est des choses qui n'existe pas pour lui, tout simplement, en tout cas de base. Dans les précédentes versions de la toolchain, il me semble que des macro ont été rajouté pour comprendre ces trucs pas beau :p
Avatar de l’utilisateur
TheMachine02Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 29.4%
 
Messages: 341
Images: 0
Inscription: 16 Jan 2013, 18:27
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile
Classe: Médecine

Re: Aide pour débutant en assembleur svp

Message non lude emilechombier » 07 Sep 2019, 21:12

OK donc essayer d'apprendre l'ASM en faisant en regardant le code que compile PB pour faire des "rapprochements", c'est une mauvaise idée...
:'( :(
Heureusement j'ai d'autres codes de jeux en ASM sous la main (dont celui de Limonad merci à lui) je les utilise pour apprendre en les "déconstruisant" par petits bouts.
Avatar de l’utilisateur
emilechombier
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 8.6%
 
Messages: 51
Inscription: 01 Sep 2019, 17:29
Genre: Homme
Calculatrice(s):
MyCalcs profile

Re: Aide pour débutant en assembleur svp

Message non lude emilechombier » 07 Sep 2019, 21:25

au fait, pendant que je vous ai au bout du fil, à quoi correspond :

Code: Tout sélectionner
_main:
    ld  hl,-3
    call    __frameset
    ld  bc,1
    ld  (ix+-3),bc


et notamment le -3 et le (ix+-3) ? ce truc me semble bizarre
(désolé pour mes questions naïves)
Avatar de l’utilisateur
emilechombier
Niveau 7: EP (Espèce Protégée: geek)
Niveau 7: EP (Espèce Protégée: geek)
Prochain niv.: 8.6%
 
Messages: 51
Inscription: 01 Sep 2019, 17:29
Genre: Homme
Calculatrice(s):
MyCalcs profile

Suivante

Retourner vers Langages alternatifs

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 11 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
Phi NumWorks jailbreak
123
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
1040 utilisateurs:
>986 invités
>48 membres
>6 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)