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
   288   289   290   291   292   293   294   295   296   297   298