Staffan Lantz
<6650>
· Text 963 · w8 · kommentar
1987-10-08 23:30
Ärende: Rutin för sökning av text (ABC80)
Här kommer ett fungerande sökprogram för ABC80.
Håll till godo.
;Program: HITTA Datum:871008 Version 1.0
; HL skall peka på texten, DE skall peka på ett ord
; BC=sök från position i HL.
; Programmet söker ord i text. Satt Z-flag=ord hittat.
; Texten och ordet skall båda avslutas med CR.
TITLE HITTA
ORG 64000
; VARIABLER OCH KONSTANTER
LÄNGD EQU 80
ORD DM "hitta",13
INTEXT DS LÄNGD
; HUVUDPROGRAM
START LD HL,INTEXT
LD BC,LÄNGD
CALL 5 ;Läs in en textrad.
LD HL,INTEXT ;Hl pekar på texten.
LD DE,ORD ;De pekar på ordet som skall letas upp.
LD BC,0 ;Sök från 1:a position (0,1,2,...)
CALL INSTR ;Sök. BC blir den position där ordet hittas.
INC BC
LD H,B
LD L,C
RET Z ;Om ordet hittat hl<>0.
LD HL,0 ;Ordet ej hittat hl=0.
RET
;--------------------------------------------------------------------------
INSTR ADD HL,BC ;Sätt rätt startkolumn
CALL SÖKALLA
RET
SÖKALLA PUSH HL
PUSH DE
PUSH BC
CALL STRSCN
POP BC
POP DE
POP HL
RET Z ;Zero=Ord hittat.
INC HL
INC BC ;Öka pekarna
LD A,13
CP (HL)
JR NZ,SÖKALLA
CP A ;Non Zero=Ord ej hittat.
RET
;--------------------------------------------------------------------------
STRSCN LD A,(DE) ;Sökrutin: Jämför ordet endast med 'första' kolumn.
CP 13
RET Z ;Samma, om CR är ordet hittat.
CP (HL)
RET NZ ;Ej samma, ordet ej hittat i den här kolumnen.
INC HL
INC DE ;Öka pekarna.
INC BC
JR STRSCN
END START