Merge: nitunit: Use markdown2
[nit.git] / contrib / pep8analysis / tests / terrasa / division.pep
1 ; Branchements
2 ; Programme qui calcule une division entière entre deux nombres
3 ; puis affiche le quotient et le reste
4 ; LIMITE: a >= 0
5 ; LIMITE: b > 0
6 ;
7 ; Alexandre Terrasa (c) 2013
8
9          stro    strA, d     ; print(strA)
10          deci    a, d        ; a = deci()
11
12          ldx     a, d        ; X = a
13          cpx     0, i        ;
14          brgt    notErrA     ; if( X < 0 ) {
15          stro    strErrA, d  ;    print(strErrA)
16          stop                ; }
17
18 notErrA: stro    strB, d     ; print(strB)
19          deci    b, d        ; b = deci()
20
21          ldx     b, d        ; X = a
22          cpx     0, i        ;
23          brgt    notErrB      ; if( X < 0 ) {
24          stro    strErrB, d   ;    print(strErrB)
25          stop                ; }
26
27 notErrB: lda     a, d        ; A = a
28          ldx     0, i        ; X = 0
29 sub:     cpa     b, d        
30          brlt    end         ; while(A >= b) {
31          suba    b, d        ;   A = A - b
32          addx    1, i        ;   X++
33          br      sub         ; }
34
35 end:     sta     r, d        ; r = A     
36          stx     q, d        ; q = X
37          stro    strQ, d     ; print(strQ)
38          deco    q, d        ; print(q)
39          stro    strR, d     ; print(strR)
40          deco    r, d        ; print(r)
41          stop
42
43 ; variables
44 strA:    .ASCII "a = \x00"
45 strB:    .ASCII "b = \x00"
46 strQ:    .ASCII "a / b = \x00"
47 strR:    .ASCII " reste \x00"
48 strErrA: .ASCII "Erreur: a doit etre strictement positif\x00"
49 strErrB: .ASCII "Erreur: b doit etre strictement supperieur a 0\x00"
50
51 a:       .BLOCK 2
52 b:       .BLOCK 2
53 q:       .BLOCK 2
54 r:       .BLOCK 2
55
56          .END