|
|
1.1 root 1: //////////
2: / i8086 C string library.
3: / memchr()
4: / ANSI 4.11.5.1.
5: //////////
6:
7: //////////
8: / char *
9: / memchr(String, Char, Count)
10: / char *String;
11: / int Char, Count;
12: /
13: / Find Char in String, return pointer or NULL.
14: //////////
15:
16: #include <larges.h>
17:
18: String = LEFTARG
19: Char = String+DPL
20: Count = Char+2
21:
22: Enter(memchr_)
23: mov cx, Count(bp) / Count to CX
24: or cx, cx
25: je 1f / No match possible in first 0 characters
26: Les di, String(bp) / String address to ES:SI
27: movb al, Char(bp) / Char to AL
28: cld
29: repne
30: scasb / Look for character
31: je 2f / Matched
32:
33: 1: sub ax, ax / No match, return NULL
34: #if LARGEDATA
35: mov dx, ax
36: #endif
37: jmp 3f
38:
39: 2: dec di / Back up to match
40: mov ax, di / AX = offset
41: #if LARGEDATA
42: mov dx, es / DX = segment
43: #endif
44:
45: 3: Leave
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.