π
<-
Chat plein-écran
[^]

Aide pour débutant en assembleur svp

Assembleur, Axe, ICE, BBC Basic...

Re: Aide pour débutant en assembleur svp

Unread postby Limonadd » 10 Sep 2019, 18:56

Y'a un truc que tu devrais savoir michel.

Tu es en ADL=1 donc tes registres font 24 bits.

si tu fais par exemple:

ld hl, (adresse) (adresse est la valeur d'une adresse peut importe laquelle)

ou

ld (adresse), hl

qu'est ce qui se passe?

sur les ti c'est en "little endian" ce qui veut dire que quand tu stockes une valeur à une adresse, c'est les octets de poids plus faibles stockés en premier.

donc si tu fais:

ld (adresse),hl

tu as les 8 bits dans l stockés à "adresse", les 8 bits de h stockés à "adresse+1", et les 8 bits de hlu stockés à "adresse+2".

pareil en sens inverse.

ld hl, (adresse)

la valeur dans à l'adresse "adresse" va dans l, celle dans "adresse+1" va dans h, et celle de "adresse+2" va dans hlu.

donc si tu veux stockés seulement une valeur 8 bits à une adresse, tu la mets par exemple dans l, et ensuite tu la stockes:

ld l, 7
ld (adresse),l

là on a seulement modifié la valeur à cette adresse.

donc dans ton code quand tu écris:

LD hl,0
LD (curRow), hl
LD (curCol), hl

tu peux le simplifier. déjà comment sont stockés les valeurs de curRow et curCol?

comme tu peux le voir dans le wiki:

http://wikiti.brandonw.net/index.php?ti ... By_Address

à l'adresse $D00595 il y a curRow, à $D00596 curCol, et l'octet d'après est inutilisé.

donc si tu écris:

LD hl,0
LD (curRow), hl

tu mets un 0 dans curRow, dans curCol, et dans l'octet d'après :)

donc fait très attention, si par exemple tu veux simplement modifié la valeur de curRow et que tu fais par exemple,

ld hl,7
ld (curRow),hl

00000000-00000000-00000111
hlu--------------h-----------l-----

et donc tu mets un 7 dans curRow et 0 dans curCol

si tu veux simplement mettre un 7 dans curRow sans toucher à curCol tu fais:

ld l,7
ld (curRow),l

j'espère que j'ai été assez clair :)
User avatar
Limonadd
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 93.4%
 
Posts: 75
Joined: 14 Feb 2018, 17:10
Gender: Male
Calculator(s):
Class: oui

Re: Aide pour débutant en assembleur svp

Unread postby emilechombier » 10 Sep 2019, 19:27

:o aAAAAh.... merci de tes longues explications, c'est très sympa mais hélas
ld l,7
ld (curRow),l
SPASM m'affiche : "error SE110: The opcode LD was given invalid operands" :bang:
Apparemment il faut absolument que je mette hl pour (curRow)

edit: ça marche en utilsant le registre "a" :comprends_po:
User avatar
emilechombier
Niveau 6: SM (Super Membre)
Niveau 6: SM (Super Membre)
Level up: 78.1%
 
Posts: 41
Joined: 01 Sep 2019, 17:29
Gender: Male
Calculator(s):

Re: Aide pour débutant en assembleur svp

Unread postby Limonadd » 11 Sep 2019, 11:19

Oui pardon dsl j'étais fatigué xD

tu peux envoyer une valeur 8 bits directement dans une adresse seulement avec a

tu peux le faire indirectement en mettant ton adresse dans hl par exmple

donc soit tu utilises a, soit a est occupé et donc par exemple tu peux mettre ton adresse dans hl

ld e,7
ld hl,curRow
ld (hl),e

ou

ld hl,curRow
ld (hl),7

ou avec a

ld a,7
ld (curRow),a

mais si tu utilises hl

ld hl,0
ld (curRow),hl

n'oublies pas que tu modifies aussi curCol

donc si tu veux mettre 7 dans curRow et 5 dans curCol tu peux faire:

ld h,5
ld l,7
ld (curRow),hl

petite précision
tu peux faire ça avec hl:

ld (hl),7

mais avec un autre registre tu dois passer par a

ld a,7
ld (bc),a
ld (de),a

et pareil dans l'autre sens

voilà :) donc encore toutes mes excuses pour l'erreur je faisais plus trop attention à ce que j'écrivais XD
User avatar
Limonadd
Niveau 9: IC (Compteur Infatigable)
Niveau 9: IC (Compteur Infatigable)
Level up: 93.4%
 
Posts: 75
Joined: 14 Feb 2018, 17:10
Gender: Male
Calculator(s):
Class: oui

Re: Aide pour débutant en assembleur svp

Unread postby emilechombier » 11 Sep 2019, 14:03

merci merci,
oui maintenant avec l'habitude, pour mettre le curseur en ligne 8 et colonne 3 je fais:
Code: Select all
ld hl,$0308
ld (curRow), hl

en hexa c'est plus lisible et plus compact (mais effectivement un non-initié ne voit pas que ça modifie le numéro de colonne )
User avatar
emilechombier
Niveau 6: SM (Super Membre)
Niveau 6: SM (Super Membre)
Level up: 78.1%
 
Posts: 41
Joined: 01 Sep 2019, 17:29
Gender: Male
Calculator(s):

Previous

Return to Langages alternatifs

Who is online

Users browsing this forum: No registered users and 1 guest

-
Search
-
Featured topics
Comparaisons des meilleurs prix pour acheter sa calculatrice !
1
-
Donations / Premium
For more contests, prizes, reviews, helping us pay the server and domains...

Discover the the advantages of a donor account !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partner and ad
Notre partenaire Jarrety 
-
Stats.
428 utilisateurs:
>402 invités
>21 membres
>5 robots
Record simultané (sur 6 mois):
6892 utilisateurs (le 07/06/2017)
-
Other interesting websites
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)