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

9.3 Conditional Statements                                          269


                   unsigned char guc; int gsi;
                   main(){ char Isc; unsigned int lui;
                        if(lsc == 0) guc = 0;
                        if(gsi < 5) { ... /* many instructions */ }
                        if(Isc + guc) gsi = 0;
                        if(guc < 5) Isc = 0; else Isc = 9;
                   }

                                      a. A C Program

                 4: main(){ char Isc; unsigned int lui; if(Isc == 0) guc = 0;
              0000095B A6AD             LDAA 3,-SP
              0000095D 2603             BNE     *+5    ;abs = 0962
              0000095F 790800           CLR     $0800
                  6:     if(gsi < 5) { /* many instructions */ lui =0; }
              00000962 FC0801           LDD    $0801
              00000965 8C0005           CPD    #5
              00000968 2C04             BGE     *+6    ;abs = 096E
              0000096A C7               CLRB
              0000096B 87               CLRA
              0000096C 6C81             STD    1,SP
                  7:     if(Isc + guc) gsi = 0;
              0000096E A680             LDAA 0,SP
              00000970 B704             SEX    A,D
              00000972 B745             TFR    D,X
              00000974 F60800           LDAB $0800
              00000977 87               CLRA
              00000978 1AE6             LEAK D,X
              0000097A 044504           TBEQ X,*+7       ,-abs = 0981
              0000097D C7               CLRB
              0000097E 7C0801           STD    $0801
                  8:     if(guc < 5) Isc = 0; else Isc = 9;
              00000981 B60800           LDAA $0800
              00000984 8105             CMPA #5
              00000986 2404             BCC     *+6    ;abs = 098C
              00000988 6980             CLR     0,SP
              0000098A 2004             BRA     *+6    ;abs = 0990
              0000098C C609             LDAB #9
              0000098E 6B80             STAB 0,SP
                  9: }
              00000990 1B83             LEAS 3,SP
              00000992 3D               RTS

                          b. Assembly Language Generated by Part (a)

                        Figure 9.7. A Program with If-Then Expressions
   287   288   289   290   291   292   293   294   295   296   297