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