ۥ-@ - KZDJjJjjJjJjJjJjJxJ JJJJ J JJJ5J(K1K1K1K1K1K1K1K3K3K3K3K3K3KQK4KQKjJQKQK"#Syntaxe de ASM flash 1) Gnralits sur l'assembleur L'assembleur est le langage le plus proche de la machine car il est directement excut par le processeur. De ce fait, le systme d'exploitation ne peut contrler les agissements du programme et ne peut donc pas l'arrter en cas de dfaillance. Sur la HP 48 Gx, il n'y a pas de diffrence entre la mmoire vive et la mmoire de stockage des variables ce qui fait que tout erreur dans un programme assembleur peut provoquer la perte des donnes. L'assembleur est un langage propre au processeur de la machine utilise, donc les connaissances acises sur la HP 48 Gx ne vous seront d'aucunes utilit sur une machine n'tant pas du mme type. Toutefois les techniques de programmation elles n'ayant aucun rapport avec la machine ou le langage utilis pourront elles tre rutilises ailleurs. 2) La syntaxe de ASM flash ASM flash prend une chane de characters comme argument. Cette chane de characters est constitue d'une suite d'instruction, de commentaires et de directives de compilation spars par ces characters de sparations, et ce finie par un retour a la ligne et un arobas (@). ASM flash diffrencie les minuscules des majuscules, donc deux labels peuvent s'appeler Boucle et BOUCLE sans provoquer d'erreur ( mai cela n'est pas conseille car il sera plus dur de retrouver une ventuelle erreur). Les caracters de sparation sont les retours a la ligne (chr 13). Les commentaires peuvent ce placer n'importe ou sauf aprs le dernier character du source. Ils sont dclars par un "%" et ce terminent a la fin de la ligne. Certaines instructions ncessitent un paramtre ou champ, ces instructions sont spares de leurs paramtres par un ou plusieurs espace. ASM flash dispose d'un petit langage dont les instructions modifiant la manire dont ASM flash vas compiler. Ces instructions sont introduites par un ! et seront dtailles ultrieurement. Avec l'ASM FLASH, Est fourni un petit programme d'editions d'erreures destiner a coriger radement les erreures de syntaxes stupides. Apres une erreur, la pille est comme suit. 5:[Source initial] 4:[Nom du link dont proviend l'erreur si link il y a ] 3:[Link foireu, si link il y a] 2:Character ou a ete detecte l'erreur 1:Ligne foireuse Apres avoir lancer ER qui vous demanderat de coriger l'erreur, la pille serat comme tel. 1:Source modifie si il n'y a pas de link. ou 3:Source 2:'nom du link' 1:Link modifie. Dans le premier cas, il sufirat de relancer la compilation Dans le deuxiemme, il sufirat de faire un SWAP STO et de relancer la compilation. 3) Les labels Un label est un marqueur, il permet de marquer un endroit du programme de manire a pouvoir ensuite servir de destination a un saut. Un label est dclar par un "*" immdiatement suivit par le nom du label ( sans caracters de sparation). Comme ce label servira a designer la destination d'un saut, il n'y doit pas y avoir d'ambigut donc deux labels ne peuvent porter le mme nom. Exemple de label: *Grande_boucle. Attention a la diffrenciation faite entre les minuscules et les majuscules. 4) Les links Un link est un "sous source", c'est a dires un source ( chane de caracters finissant par un retour a la ligne et un arobas ou un retour a la ligne et un END stock dans une variable. Il est possible d'appeler un link a partir d'un source. Des que ASM flash trouvera un appel a un link, il compilera celui ci avant de finir de compiler le source appelant. Il est utile de prciser qu'un link tant un source, on peut appeler un link a partir d'un link. Mais cet appel tant rcursif, ( ncessite d'une pille de retour ) ASM flash limite la rcursivit de l'appel a 25 links en profondeur. Passer cette limite, il retournera dans l'environnement HP avec le message d'erreur "Too mutch Links". L'appel d'un link est ralis par la squence suivante: "'Nom.de.la.variable". Exemple: La squence suivante "'INITIALISATION 'BOUCLE 'FIN" conduira la compilation successive du link INITIALISATION puis du link BOUCLE et enfin FIN. Les links sont trs pratique pour rendre un source plus lisible, plus compressible et donc plus facilement debugeable. Il est conseille d'utiliser au maximum les possibilits du linkeur. Toutefois, il est vident que quelquin tapant ses sources su la HP ( 8 lignes maximum ) ferrt des links beaucoup moins grands que sur un pc ou macintoch ( jusqu' 50 lignes). 5) Les Macros On souvent besoin d'inclure des data dans un programme assembleur, on peut le faire en tapant un $ suivit des codes ascii. Mais ce n'est pas pratique, et cela augmente la taille des sources qui deviennent de plus en plus long a diter. La solution, c'est les Macros. Un macro, c'est un block de data quelconques qui seront inclut a la compilation dans le code compile. Le systme d'exploitation de la HP 48 obligeant a stoker des objets en mmoire, il faut encapsuler les data dans une structure d'objet quelconque. J'ai choisit l'objet STRING. Il faut note que seules les donnes sont inclusre ( pas la longeure totale hors prologue ni le prologue.) Les macros doivent etre stoques dans un repertoir en HOME nome Macro La syntaxe d'inclusion d'un macro est la suivante /Nom.de.macro. 6) Les plus de ASM flash GOINC label Fait un LC de la diffrence entre l'emplacement du LC et le label sur 5 quartets. Si celle ci est ngative, elle sera code en complment a 2. GOINA label idem pour A champ A $Suite de nombre hexa Exemple: $12ACD545680B Place directement les codes hexa dans le compil. CARSPECIAUX 203 \f "Symbol"Ascii Exemple: CARSPECIAUX 203 \f "Symbol"VIVE ASM flash Place directement les caracters compris entre le CARSPECIAUX 203 \f "Symbol" et le retour a la ligne suivant dans le compil. GOIN5 label GOIN4 label GOIN3 label Place dans le compil la diffrence entre l'endroit du GOIN et le label sur x quartets ( si la diffrence est ngative, elle est code en complment a 2). 7) Directives de compilation Une directive de compilation est en fait une instruction donnes au compilateur, c'est une espece de macro langage. Toute directive de compilation doit estr precedee d'un !. Liste des directives de compilation. OFF Eteind l'ecran. ON Alume l'ecran. 1-16 Passe en mode 1-16 pour les instruction sur P, sur le Status register ( ST ), sur le hardwarregister ( HST ) et sur les drapaux de compilation. 0-15 Passe en mode 0-15 pour les instruction sur P, sur le Status register ( ST ), sur le hardwarregister ( HST ) et sur les drapaux de compilation. HP Prend les chr HP comme character de comparaison ( superieur ou egal, inferieur ou egal et deifernent) PC Prend les characters PC pour les comparaisons ( >=, <=, # ) 8)Messages d'erreurs Liste des messages d'erreur generee par ASM flash avec leurs signification. CR Or @ Missing La chaine de characters de la pile ne finit pas par un CR END ou un CR @. Field Expected Instruction ne fonctionant pas sur le champ selection. 0-15 Expected notation 0 a 15 attendue. 1-16 Expected notation 1 a 16 attendue. Jump Too Big Saut trop long. Nonexistant Label Label non declare. HEXA Expected un chifre Hexadecimal etait attendu. Too Mutch reclusion Trop de links imbriques. Invalid Link Le link n'est pas une chaine de caracters ou le link ne se finit pas par un CR @. Nonexistant Macro ASM flash ne peut trouver la variable contennt le Macro. Invalid Macro le type de l'objet contenut dans la variable n'est pas une String.Need Bad size Taille invalide. INCORPORER WordArt \s \* fusionformat !ux.AstNM:llvL=L=BB   ----$s>HQZcksz }q"b,P4<:(>?>:5, vgZTPPSX_wjeyVGMSY^dimqZTNHC>963~DoUbfWvNGB?>AEM]o !&+-,'):#K\g nty|}{vnje`YRJA74>8T=GPZbkszqg^TJ@5+ |wrn|ljjX\jPF>9532346N;gA~$EJOV]dkr{vohb[URM~/9CP^kx}pcXMC93=D_@H=1<=>AEJPW_y`adhlry'JuD_d$0#u[B+vQ|W&<Tm45R;F?8E-K"RX _iqkaXP JD?&;-83#$o^!>Xp~n`gUOK6C=85323!!"$(.41=KFcR{_nxaJ/%5DTcq`QC6!+% ). (##-6>EL7  qX?';^8C%1>KQUVUSMG)>:3L(^o cI2 (m1`<PF?P-Yaehhc[N@5) /Id/BY.j]PD9/&ti^TJDNXbmww(m$M}gUFx9\.>'#  '$@,Z6sAN]mXD0 ueSC3$#8Og.Mk#d E&jWF9J[m0F]u}j$3 ,>Pcx$1?*N9Z)L? 2' R0L*}iTB1 MG{8$&yj{[uKp9m&mq{1DWj{yhT@+{oh d#d:fPjdrw{$A?G P[eq}~wr //AFP7E):0 & t iaZ"W&]+c1j6p;u@zEHLlCe<^7W2P.J+C'=$6?8B$8Ncwy~seXL>1${qh^VR!R5SJV^[qajt~ziVA+&2>KX|hsvoki\eNb>`._`fmsz b$/ $4D*T3PMHD@<95x3c1O0<1)*0(D(Z+r.37;?CE:- 8B%6J`uwofntx{k^QD7-#}si_VLD!@3?H@\CpHOWaku{iT>(%&.9E~Qx^qkjz`\}VnR`OQMAL1M"SZ `hov}&$A[cmw#6K$b4S)E6' }wt z$),0' zsmf` YR[--'? WordArtWordArt v>v>Marysvillel( v SATURN Forever FojjjQU METAFILEPICTlll.   ----$s>HQZcksz }q"b,P4<:(>?>:5, vgZTPPSX_wjeyVGMSY^dimqZTNHC>963~DoUbfWvNGB?>AEM]o !&+-,'):#K\g nty|}{vnje`YRJA74>8T=GPZbkszqg^TJ@5+ |wrn|ljjX\jPF>9532346N;gA~$EJOV]dkr{vohb[URM~/9CP^kx}pcXMC93=D_@H=1<=>AEJPW_y`adhlry'JuD_d$0#u[B+vQ|W&<Tm45R;F?8E-K"RX _iqkaXP JD?&;-83#$o^!>Xp~n`gUOK6C=85323!!"$(.41=KFcR{_nxaJ/%5DTcq`QC6!+% ). (##-6>EL7  qX?';^8C%1>KQUVUSMG)>:3L(^o cI2 (m1`<PF?P-Yaehhc[N@5) /Id/BY.j]PD9/&ti^TJDNXbmww(m$M}gUFx9\.>'#  '$@,Z6sAN]mXD0 ueSC3$#8Og.Mk#d E&jWF9J[m0F]u}j$3 ,>Pcx$1?*N9Z)L? 2' R0L*}iTB1 MG{8$&yj{[uKp9m&mq{1DWj{yhT@+{oh d#d:fPjdrw{$A?G P[eq}~wr //AFP7E):0 & t iaZ"W&]+c1j6p;u@zEHLlCe<^7W2P.J+C'=$6?8B$8Ncwy~seXL>1${qh^VR!R5SJV^[qajt~ziVA+&2>KX|hsvoki\eNb>`._`fmsz b$/ $4D*T3PMHD@<95x3c1O0<1)*0(D(Z+r.37;?CE:- 8B%6J`uwofntx{k^QD7-#}si_VLD!@3?H@\CpHOWaku{iT>(%&.9E~Qx^qkjz`\}VnR`OQMAL1M"SZ `hov}&$A[cmw#6K$b4S)E6' }wt z$),0' zsmf` YR[--'?Forever FojjjQU METAFILEPICT  ;<MNij CD D 12*%yG  % L ^   O hT\z!¼༮¼¢¨ p#S3 p#S3p#p#p#7p#7p#p#p#7p#7p#7p#p#7p#7p#7p#p#47*w|!}5[j º²l#l#l#<p# p# p# p#np#p#p# p#7 p#7(D  lBHC" #$5Times New Roman Symbol&Arial Wingdings+G999;=H:XX  X?"Z %t %s %HP mdHP md