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