π
<-
Chat plein-écran
[^]

[ASM] Plusieurs questions sur l'assembleur

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

[ASM] Plusieurs questions sur l'assembleur

Message non lude Limonadd » 27 Juin 2018, 18:31

Bonjour ! Je viens tout juste de commencer l'assembleur mais il y a quelques trucs que je comprends pas. Voici le code d'un des tutos que j'ai vu:
Code: Tout sélectionner
#include "ti83pce.inc"
   
   .assume ADL=1
   .db tExtTok,tAsm84CeCmp
   .org userMem

call _homeup
call _ClrScrnFull
ld hl,text
call _PutS
call _GetKey
call _ClrScrnFull
res donePrgm,(iy+doneFlags)
ret

text:
  .db "Hello World !",0



Tout d'abord, à quoi sert _homeup exactement?
ensuite le label text, c'est l'adresse à laquelle la chaine de caractère est stockée si j'ai bien compris?
et donc je croyais que .db servait à allouer un byte donc un octet à partir de cette adresse, mais ça à pas l'air d'être ça c'est pas logique puisque la chaine doit prendre bien plus. Donc à quoi sert db exactement svp? XD ensuite à quoi sert le ,0 après le Hello world?
Et enfin à quoi sert la commande res (avec ce qui suit) ?
Désolé pour toutes ces questions, j'espère que quelqu'un pourra me réponde. :)
Merci d'avance :D
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: Plusieurs questions sur l'assembleur

Message non lude TheMachine02 » 27 Juin 2018, 18:36

_homeup est un call système de l'OS pour remettre le curseur de l'écran d'accueil tout en haut. Text est bien l'adresse de la chaîne oui, quand tu fais un db avec une chaine de caractère ça insère le nombre de byte nécessaire pour écrire la chaine en ASCII (merci l'assembleur !). L'équivalent donc de beaucoup de db x,x,x,x... Le 0 signifie juste la fin de la chaîne de caractère. C'est nécessaire, car la fonction qui affiche la chaine attends un zéro pour quitter, tu imagines bien si y'en a pas :P

res permet de mettre un bit à zéro ; ici ça met le bit 'donePrgm' de l'octet pointé par iy+doneFlags. C'est une commande un peu plus complexe, mais ça permet de supprimer le 'Done' à la fin du programme.
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: Plusieurs questions sur l'assembleur

Message non lude Limonadd » 27 Juin 2018, 18:40

Ok ! Merci beaucoup pour ta réponse très rapide et très complète :D
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: Plusieurs questions sur l'assembleur

Message non lude Limonadd » 28 Juin 2018, 10:16

Rebonjour ! J'ai d'autre questions ( oui encore xD ).
Tout d'abord sur le z80 on peut fusionner 2 registres 8 bits comme h et l pour former un registre 16 bits, hl. Sur le ez80 si on active l'ADL, si on fusionne h et l on obtient un registre 24 bits. Mais d'où viennent les 8 bits restant ?
Ensuite, pour les instructions JR et JP:
Dans le tuto il dit que JR prend soit 7 ou 12 "cycles" et JP en prend toujours 10. Mais c'est quoi un "cycle" exactement?
Merci d'avance :)
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: Plusieurs questions sur l'assembleur

Message non lude Extra44 » 28 Juin 2018, 11:16

J'ai connu l'assembleur...mais pas précisément celui ci.
Mais je peux dire :
Les cycles sont les cycles d'horloge :le Cpu à une fréquence de fonctionnement, et le cycle C est la période correspondante (il me semble).
Donc une instruction qui fait 7 cycles mets 7 fois la période de fonctionnement du cpu pour s'exécuter
PS: Tu dois pouvoir trouver sur le net un site/fichier qui te donne les références des instructions...
Avatar de l’utilisateur
Extra44Premium
Niveau 11: LV (Légende Vivante)
Niveau 11: LV (Légende Vivante)
Prochain niv.: 58.4%
 
Messages: 591
Images: 1
Inscription: 20 Jan 2011, 00:00
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: S.I.

Re: Plusieurs questions sur l'assembleur

Message non lude Limonadd » 28 Juin 2018, 11:19

Ah ok d'accord, merci beaucoup Extra44 ! :D
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

En ligne

Re: Plusieurs questions sur l'assembleur

Message non lude Epharius » 28 Juin 2018, 18:46

Les 8 bits restants tu ne peux pas y accéder directement, tu dois par exemple copier la valeur de ton registre dans la mémoire et récupérer l'octet de poids fort :
Code: Tout sélectionner
; met les 8bits inaccessibles normalement dans A
ld (memoire),hl
ld a,(memoire+2)

En gros c'est juste que les instructions de l'assembleur, pour des raisons méconnues (ça peut être pour avoir une meilleure compatibilité avec l'assembleur z80), n'ont pas permis l'accès à ces bits là mais sont réels et utilisés par exemple dans les add, sbc, etc...

Pour les cycles Extra44 a à peu près tout dit, tu peux retrouver les temps que met chaque instruction ici : https://wiki.tiplanet.org/Timings_des_instructions_eZ80
Ce ne sont pas les cycles qui sont affichés mais les TStates. Si je ne dis pas de bêtise, corrigez moi si je me trompe, un Tstate est égal à 1/48,000,000 secondes vu que le cpu est cadencé à 48Mhz. Ça permet pour le coup d'avoir une très bonne approximation du temps que va mettre un bout de code à s'exécuter (mais il doit aussi y avoir un histoire de waitstate, je ne sais pas si le tableau les prend en compte ou pas).
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: Plusieurs questions sur l'assembleur

Message non lude Ti64CLi++ » 28 Juin 2018, 18:54

Et comment a-t-on pu déterminer le nombre de TStates d'une instructions? Comment cela a-t-il été possible d'être aussi précis?
Image
Avatar de l’utilisateur
Ti64CLi++Modo
Niveau 16: CC2 (Commandeur des Calculatrices)
Niveau 16: CC2 (Commandeur des Calculatrices)
Prochain niv.: 32.3%
 
Messages: 3441
Images: 75
Inscription: 04 Juil 2014, 14:40
Localisation: Clermont-Ferrand 63
Genre: Homme
Calculatrice(s):
MyCalcs profile
Classe: ENS Rennes
GitHub: Ti64CLi

En ligne

Re: Plusieurs questions sur l'assembleur

Message non lude Epharius » 28 Juin 2018, 18:55

grâce aux timers de la calculatrice, je te conseille d'aller lire le topic : viewtopic.php?t=18168
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: Plusieurs questions sur l'assembleur

Message non lude Limonadd » 28 Juin 2018, 19:04

Ok super! Merci beaucoup! mais j'ai encore d'autres questions... je suis arrivé à l'affichage de texte. Tout d'abord je ne comprends pas la différence entre ce qu'ils appellent le curseur et le "pen". Il est dit que le curseur c'est pour les grandes polices d'écritures et le pen les petites. Mais je comprend pas trop, c'est les majuscules/minuscules? Ou alors le curseur c'est pour les lettres, etc et le pen pour les pixels? ( la position du curseur sur l'écran est définie par les variables CurRow et CurCol, et pour le pen c'est PenRow et PenCol). Je suis un peu perdu... et autre petite question: à quoi servent les .list et .nolist que l'on voit dans certains débuts de codes? Merci d'avance :)
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

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.
1257 utilisateurs:
>1204 invités
>48 membres
>5 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)