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