Merge: Misc AST
[nit.git] / contrib / pep8analysis / tests / terrasa / multiplication.pep
1 ; Branchements
2 ; Programme qui calcule le produit de deux nombres saisis par l'utilisateur
3 ; LIMITE: a >= 0 && b >= 0
4 ;
5 ; Alexandre Terrasa (c) 2013
6
7          stro    strA, d     ; print(strA)
8          deci    a, d        ; a = deci()
9
10          ldx     a, d        ; X = a
11          cpx     0, i        ;
12          brge    notErrA     ; if( X < 0 ) {
13          stro    strErr, d   ;    print(strErr)
14          stop                ; }
15
16 notErrA: stro    strB, d     ; print(strB)
17          deci    b, d        ; b = deci()
18
19          ldx     b, d        ; X = b
20          cpx     0, i        ;
21          brge    notErrB     ; if( X < 0 ) {
22          stro    strErr, d   ;    print(strErr)
23          stop                ; }
24
25 notErrB: lda     0, i        ; A = 0
26          ldx     a, d        ; X = a
27 add:     cpx     0, i         
28          breq    end         ; if(X !=0 ) {
29                              ;   do {
30          adda    b, d        ;     A = A + b
31          subx    1, i        ;     X = X - 1
32          cpx     0, i         
33          brne    add         ;   } while(X != 0)
34                                 ; }
35
36 end:     sta     p, d        ; p = A
37          stro    strP, d     ; print(strP)
38          deco    p, d        ; print(p)
39          stop
40
41 ; variables
42 strA:    .ASCII "a = \x00"
43 strB:    .ASCII "b = \x00"
44 strP:    .ASCII "a * b = \x00"
45 strErr:  .ASCII "Erreur: La valeur saisie doit etre positive\x00"
46
47 a:       .BLOCK 2            ; a
48 b:       .BLOCK 2            ;
49 p:       .BLOCK 2            ; pour stocker le produit avant affichage
50
51          .END