22.10.2013 Views

8086-8088 V10 - Forth Interest Group

8086-8088 V10 - Forth Interest Group

8086-8088 V10 - Forth Interest Group

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ASM86 VER 1.0 SOURCE: FORTH.A86 Fig <strong>Forth</strong> <strong>8086</strong>/88 Ver 1.0 PAGE 111<br />

EJECT<br />

. .........................................<br />

. * *<br />

. * CODE LEVEL "MATCH" DEFINITION *<br />

. * *<br />

. .........................................<br />

,<br />

; STACK PARAMETERS:<br />

I<br />

I --- flag new:cursor:offset)<br />

; ( cursor:addr byte:left str:addr str:len<br />

I<br />

; T his version of MATCH will handle string length<br />

S<br />

; up to 65335 bytes in length.<br />

I<br />

MATCH<br />

DB 85H ; MATCH<br />

DB ' MATC<br />

DB 'Ht+80H<br />

DW DOTCPU-7<br />

DW $+2<br />

MOV D1,SI ; SAVE IP<br />

POP CX ; STRING COUNT<br />

POP BX ; STRING ADDR<br />

POP DX ; BYTES LEFT TO SEARCH<br />

POP SI ; CURSOR ADDR<br />

PUSH S I ; SAVE COPY<br />

LODS<br />

CMP<br />

JNZ<br />

PUSH<br />

PUSH<br />

PUSH<br />

AL ; GET FIRST BYTE<br />

AL, [BX] ; MATCB?<br />

MAT3 ; NO<br />

BX ; SAVE STRING ADDR<br />

CX ; & STRING COUNT<br />

SI ; & CURSOR ADDR<br />

; TRY TO MATCH REMAINNING CHARACTERS IN STRING<br />

DEC<br />

J Z<br />

DEC<br />

J Z<br />

I NC<br />

LODS<br />

CMP<br />

J Z<br />

CX I<br />

MATCHOK ;<br />

DX I<br />

NOMATCH ;<br />

BX I<br />

AL a<br />

ALr [BXI ;<br />

MAT2 I<br />

STR COUNT -1<br />

EXIT ... MATCH FOUND<br />

BYTES LEFT -1<br />

EXIT. . .NO MATCH<br />

NEXT STR CHAR ADDR<br />

GET NEXT BYTE<br />

MATCH?<br />

YES, GET MORE

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!