metrics: ReadmeMetrics uses markdown2
[nit.git] / contrib / pep8analysis / tests / privat / 08-liretab-stack.pep
1 ; Sous-programme qui lit un tableau d'entier
2 ; -> utilise des vraies variables locales
3 ; Jean Privat (c) 2011
4 ;
5 ; Programme principal. Invoque simplement la fonction.
6          LDA     tab,i       
7          LDX     tabLen,i    
8          CALL    readTab     
9          STOP                
10 tab:     .BLOCK  10          ; un tableau d'entiers #2d5a
11 tabLen:  .EQUATE 10          ; taille de tab en octets
12 ;
13 ; readTab: lit un tableau d'entiers (de l'input)
14 ; IN: A=tableau d'entiers (mots signés #2d)
15 ;     X=taille du tableau en octets
16 ; En cas de probleme de lecture, le programme s'arrete
17 readTab: SUBSP   6,i         ; reserve var locales #taille #addrt #addrfin
18          STA     addrt,s     ; sauvegarde le parametre A
19          STX     taille,s    ; sauvegarde le parametre X
20          ADDX    addrt,s     
21          STX     addrfin,s   ; addrfin = addrt + taille
22          LDX     addrt,s     ; for (X=addrt; X<addrfin; X+=2) {
23 readLoop:CPX     addrfin,s   
24          BRGE    rTfin       
25          DECI    0,x         ;   *addrt = readInt();
26          ADDX    2,i         
27          BR      readLoop    ; } // fin for
28 rTfin:   LDX     taille,s    ; restaure X
29          RET6                ; libere #taille #addrt #addrfin
30 taille:  .EQUATE 4           ; la taille du tableau en octets #2d
31 addrt:   .EQUATE 2           ; l'adresse du tableau #2h
32 addrfin: .EQUATE 0           ; l'adresse de fin du tableau #2h
33          .END