pep8analysis: fix format and encoding of some sample/test programs
[nit.git] / contrib / pep8analysis / tests / privat / 08-tab.pep
1 ; Programme qui alloue un tableau dans la pile
2 ; Jean Privat (c) 2010
3          CALL    main        
4          STOP                
5 ;
6 ; main: programme principal
7 main:    SUBSP   len,i       ; réserve le tableau #tab
8 ;                            ; // initialise le tableau à partir de l'input
9          LDX     0,i         
10 lit_loop:CPX     len,i       
11          BRGE    affich      ; for(X=0; X<len; X+=2) {
12          DECI    tab,sx      ;   tab[X] = getInt();
13          ADDX    2,i         
14          BR      lit_loop    ; } // fin for
15 ;
16 ;                            ; // affiche a l'envers
17 affich:  LDX     len,i       
18 aff_loop:SUBX    2,i         
19          BRLT    somme       ; for(X=len-2; X>=0; X-=2) {
20          DECO    tab,sx      
21          CHARO   ' ',i       ;   print(tab[X] + " ");
22          BR      aff_loop    ; } // fin for
23 ;
24 ;                            ; // calcule la somme des éléments du tableau
25 somme:   MOVSPA              
26          ADDA    tab,i       ; A = adresse du tableau
27          SUBSP   2,i         ; // réserve #sumTab
28          STA     0,s         
29          CALL    sum         
30          ADDSP   2,i         ; // déréserve #sumTab
31          STA     num,d       ; num = sum(A)
32          CHARO   '=',i       
33          DECO    num,d       ; print("=" + num);
34 ;
35 fin:     ADDSP   len,i       ; déréserve #tab
36          RET0                
37 ;
38 ; variables globales
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
42 ;
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
49          STX     sumX,s      ; sauve X
50          LDA     0,i         ; A = 0
51          LDX     0,i         
52 sum_loop:CPX     len,i       
53          BRGE    sum_fin     ; for(X=0; X<len; X+=2) {
54          ADDA    sumTab,sxf  ;   A += sumTab[X];
55          ADDX    2,i         
56          BR      sum_loop    ; } // fin for
57 sum_fin: LDX     sumX,s      ; restaure X
58          RET2                ; déréserve #sumX
59          .END