Page 299 - Introduction to Microcontrollers Architecture, Programming, and Interfacing of The Motorola 68HC12
P. 299

276                                 Chapter 9 Implementation of C Procedures


                   unsigned char a[10][3]; int sum;
                   main() { unsigned char i, j;
                       for(i = sum =0 ; i < 10; i++)
                           for(j=0; j < 3; j++)
                              sum +=£ a[i][j];
                   >

                                     a. A C Program


                 4: main() { unsigned char i," j;
              0000095B 3B               PSHD
                  5:     for(i = sum = 0; i < 10; i++)
              0000095C C7               CLRB
              0000095D 87               CLRA
              0000095E 7C081E           STD     $081E
              00000961 6B81             STAB    1,SP
                  6:                for(j = 0; j < 3; j++)   sum += a[i][j];
              00000963 6980             CLR     0,SP
              00000965 E681             LDAB 1,SP
              00000967 87               CLRA
              00000968 CD0003           LDY    #3
              0000096B 13               EMUL
              0000096C B745             TFR    D,X
              0000096E E680             LDAB 0,SP
              00000970 87               CLRA
              00000971 1AE6             LEAK D,X
              00000973 E6E20800         LDAB 2048,X
              00000977 F3081E           ADDD $081E
              0000097A 7C081E           STD     $081E
              0000097D 6280             INC    0,SP
              0000097F A680             LDAA 0,SP
              00000981 8103             CMPA #3
              00000983 25EO             BCS     *-30    ;abs = 0965
                  5:     for(i = sum = 0; i < 10; i++)
              00000985 6281             INC     1,SP
              00000987 A681             LDAA 1,SP
              00000989 810A             CMPA #10
              0000098B 25D6             BCS     *-40    ;abs = 0963
                  7: }
              0000098D 30               PULX
              0000098E 3D               RTS

                         b. Assembly Language developed from Part (a)

                           Figure 9.11. Array Manipulation Program
   294   295   296   297   298   299   300   301   302   303   304