1 ; Programme qui alloue un tableau dans la pile
6 ; main: programme principal
7 main: SUBSP len,i ; réserve le tableau #tab
8 ; ; // initialise le tableau à partir de l'input
11 BRGE affich ; for(X=0; X<len; X+=2) {
12 DECI tab,sx ; tab[X] = getInt();
14 BR lit_loop ; } // fin for
16 ; ; // affiche a l'envers
19 BRLT somme ; for(X=len-2; X>=0; X-=2) {
21 CHARO ' ',i ; print(tab[X] + " ");
22 BR aff_loop ; } // fin for
24 ; ; // calcule la somme des éléments du tableau
26 ADDA tab,i ; A = adresse du tableau
27 SUBSP 2,i ; // réserve #sumTab
30 ADDSP 2,i ; // déréserve #sumTab
31 STA num,d ; num = sum(A)
33 DECO num,d ; print("=" + num);
35 fin: ADDSP len,i ; déréserve #tab
39 tab: .EQUATE 0 ; variable locale: tableau de 4 mots #2d4a
40 len: .EQUATE 8 ; taille du tableau #tab en octets
41 num: .BLOCK 2 ; variable pour affichage
43 ; sum: calcule la somme d'un tableau de 4 mots
44 ; IN : PP+0=l'addresse du tableau (#2h)
45 ; OUT: A=somme du tableau (#2d)
46 sumTab: .EQUATE 4 ; #2h paramètre
47 sumX: .EQUATE 0 ; #2d sauvegarde X
48 sum: SUBSP 2,i ; réserve #sumX
53 BRGE sum_fin ; for(X=0; X<len; X+=2) {
54 ADDA sumTab,sxf ; A += sumTab[X];
56 BR sum_loop ; } // fin for
57 sum_fin: LDX sumX,s ; restaure X
58 RET2 ; déréserve #sumX