Page 308 - Introduction to Microcontrollers Architecture, Programming, and Interfacing of The Motorola 68HC12
P. 308
9.6 Examples from Character String Procedures 285
4: int strncmp(char *strl, char *str2, int count) {
0000088A 6CAE STD 2,-SP
5: if (!count) return 0;
0000088C 2618 BNE *+26 ;abs = 08A6
0000088E C7 CLRB
0000088F 87 CLRA
00000890 203B BRA *+61 ;abs = 08CD
7: if (*strl != *str2) break;
00000892 EE86 LDX 6,SP
00000894 E600 LDAB 0,X
00000896 EE84 LDX 4,SP
00000898 E100 CMPB 0,X
0000089A 261F BNE *+33 ;abs = 08BB
8: ++strl; ++str2;
0000089C EE86 LDX 6,SP
0000089E 08 INX
0000089F 6E86 STX 6,SP
000008A1 EE84 LDX 4,SP
000008A3 08 INX
000008A4 6E84 STX 4,SP
6: while(count— && *strl && *str2 ){
000008A6 EE80 LDX 0,SP
000008A8 191F LEAY -1,X
000008AA 6D80 STY 0,SP
000008AC 04450C TBEQ X,*+15 ;abs = 08BB
000008AF EE86 LDX 6,SP
000008B1 E600 LDAB 0,X
000008B3 2706 BEQ *+8 ;abs = 08BB
000008B5 EE84 LDX 4,SP
000008B7 E600 LDAB 0,X
000008B9 26D7 BNE *-39 ;abs = 0892
10: return (*strl - *str2);
000008BB EE86 LDX 6,SP
000008BD E600 LDAB 0,X
000008BF B714 SEX B f D
000008C1 EE84 LDX 4,SP
000008C3 3B PSHD
000008C4 E600 LDAB 0,X
000008C6 B715 SEX B,X
000008C8 34 PSHX
000008C9 EC82 LDD 2,SP
000008CB A3B3 SUED 4,SP+
11: }
000008CD 30 PULX
000008CE 3D RTS
Figure 9.20. The Strncmp Procedure