Информационный сервер для программистов: Исходники со всего света. Паскальные исходники со всего света
  Powered by Поисковый сервер Яndex: Найдется ВСЁ!
На Главную Pascal Форум Информер Страны мира
   Строковые Функции    >>    match
   
 
 Сравнение строк по шаблону   Александр Петросян 04.07.1995

Ассемблерная процедура сравнения строк с шаблоном



1k 
 

From: paf@fbit.msk.su (Alexander Petrosyan) Organization: Firm F-Bit. Moskow. Russia. >> Возникла задача, выбрать из массива строк, те строки которые >> совпадают с шабоном по типу Парадокса. В шаблоне могут встречаться >> метасимволы '..' - любое число любых символов >> '@' - любой один символ Может кто-нибудь с этим встречался? Лень пеpеводить на Pascal (sorry), но вот (надеюсь поймёте): Alexander (AKA PAF). --- GOLDED 2.41+ * Origin: Wherever you go... (paf@fbit.msk.su) (2:5020/200.25) {> Cut here. FileName= MATCH.ASM } .TITLE MATCH ;+ ; MASK -> .ASCIZ / '*' - Matches null or more chars; '%' matches one char/ ; STR -> .ASCIZ ; ; R1 = MASK ; R2 = STR ; ; Examples : ; MASK = "A*B%" ; STR = "ABX", "AOROROBM"; MATCH(MASK,STR) = 1 ; STR = "AAB", "ORPOROBM"; MATCH(MASK,STR) = 0 ; ; Петpосян Александp ;- MATCH:: MOV R1,-(SP) MOV R2,-(SP) 1$: MOVB (R1),R0 BISB (R2),R0 BEQ YES MOVB (R1)+,R0 CMPB R0,#'* BEQ 3$ CMPB R0,#'% BEQ 4$ 2$: TSTB (R2) BEQ NO CMPB R0,(R2)+ BNE NO BR 1$ 3$: TSTB (R1) BEQ YES CALL MATCH BCC RET TSTB (R2)+ BNE 3$ BR NO 4$: TSTB (R2)+ BEQ NO BR 1$ NO: SEC BR RET YES: CLC RET: MOV (SP)+,R2 MOV (SP)+,R1 RETURN .END