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

264                                 Chapter 9 Implementation of C Procedures


                   unsigned char guc; int gsi;
                   main(){ char Isc; unsigned int lui;
                       lui -= Isc; lui = (lui & Oxfc7f) j ((Isc « 7) & 0x380);
                       lui = (lui « 3) + (lui « 1) + Isc -'0' ;
                   }
                                       a. C Program

                  4: main(){ char Isc; unsigned int lui; lui -= Isc;
              0000095B 1B9D             LEAS -3,SP
              0000095D A682             LDAA 2,SP
              0000095F B706             SEX    A,Y
              00000961 EC80             LDD     0,SP
              00000963 35               PSHY
              00000964 A3B1             SUBD 2,SP+
              00000966 6C80             STD     0,SP
                  6:     lui = (lui & Oxfc7f)| ((Isc « 7) & 0x380);
              00000968 3B               PSHD
              00000969 C680             LDAB #128
              0000096B 87               CLRA
              0000096C 35               PSHY
              0000096D 13               EMUL
              0000096E C480             ANDB #128
              00000970 8403             ANDA #3
              00000972 3B               PSHD
              00000973 EC84             LDD     4,SP
              00000975 C47F             ANDB #127
              00000977 84FC             ANDA #252
              00000979 AA81             ORAA 1,SP+
              0000097B EA81             GRAB 0,SP+
              0000097D 6C82             STD     2,SP
                  7:     lui = (lui « 3) + (lui « 1) + Isc -' 0 ' ;
              0000097F 59               ASLD
              00000980 59               ASLD
              00000981 59               ASLD
              00000982 B745             TFR    D,X
              00000984 EC82             LDD     2,SP
              00000986 59               ASLD
              00000987 1AE6             LEAX D,X
              00000989 B754             TFR    X,D
              0000098B E380             ADDD 0,SP
              0000098D 830030           SUBD #48
              00000990 6C84             STD     4,SP
              00000992 1B87             LEAS 7,SP
              00000994 3D               RTS
                          b. Assembly Language Generated by Part (a)
                    Figure 9.5. A C Program with ORing, ANDing and Shifting
   282   283   284   285   286   287   288   289   290   291   292