Page 293 - Introduction to Microcontrollers Architecture, Programming, and Interfacing of The Motorola 68HC12
P. 293
270 Chapter 9 Implementation of C Procedures
unsigned char alpha, beta , gamma, delta, epsilon, zeta;
main ( ) {
if((alpha < 5)&&(beta ==0) ) gamma = 0;
if((alpha < 5)||(beta ==0) ) gamma = 0;
if(alpha != 0) beta = 10; else if(gamma — 0) delta++;
else if((epsilon != 0)&&(zeta==l)) beta=beta « 3; else beta=0;
}
a. A C Program
6: if((alpha < 5)&&(beta == 0)) gamma = 0;
0000095B B60800 LDAA $0800
0000095E 8105 CMPA #5
00000960 2C08 BGE *-t-10 ;abs = 096A
00000962 B60801 LDAA $0801
00000965 2603 BNE *+5 ;abs = 096A
00000967 790802 CLR $0802
7: if((alpha < 5)|[(beta == 0)) gamma = 0;
0000096A B60800 LDAA $0800
0000096D 8105 CMPA #5
0000096F 2D05 BLT *+7 ;abs = 0976
00000971 B60801 LDAA $0801
00000974 2603 BNE *+5 ;abs = 0979
00000976 790802 CLR $0802
8: if(alpha 1= 0) beta = 10;
00000979 B60800 LDAA $0800
0000097C 2707 BEQ *+9 ;abs = 0985
0000097E C60A LDAB #10
00000980 7B0801 STAB $0801
00000983 201C BRA *+30 ;abs = 09A1
9: else if(gamma == 0) delta++;
00000985 B60802 LDAA $0802
00000988 2605 BNE *+7 ;abs = 098F
0000098A 720803 INC $0803
0000098D 2012 BRA *+20 ;abs = 09A1
10: else if ((epsilon!=0)&&(zeta==l)) beta=beta«3; else beta=0;
0000098F B60804 LDAA $0804
00000992 270A BEQ *+12 ;abs = 099E
00000994 B60805 LDAA $0805
00000997 042004 DBNE A,*+7 ;abs = 099E
0000099A 0764 BSR *+102 ;abs = OAOO
0000099C 2003 BRA *+5 ;abs = 09A1
0000099E 790801 CLR $0801
b. Assembly Language Generated by Part (a)
Figure 9.8. Assembly Language for a Decision Tree