;----------------------------------------------------------------
.model small
.data
Stringa DB "Piano giallo","§" ; Stringa chiusa da §
Str1 DB "giallo" ; sottostringa da ricercare
ris DB "0" ; risultato: 1-esiste, 0-no
;----------------------------------------------------------------
.CODE ; Segmento codice
Begin:
start:
nop ; start segmento codice
MOV AX,@DATA ; set up registro segmento dati
MOV DS,AX ; ''
MOV ES,AX ; set up ES (seg. dati)
;----------------------------------------------------------------
MOV AH,00H ; pulizia video
MOV AL,03H
INT 10H
;----------------------------------------------------------------
XOR BX, BX ; azzera displacement di Stringa
CLD ; direz. confronto stringhe in avanti
l1:
LEA SI, Stringa[BX] ; ciclo di ricerca
; si <-ind. 1° crt di Stringa da confr.
LEA DI, Str1 ; di <-ind. della sottostringa
MOV CX, 6 ; n° max crt da confrontare
REPE CMPSB ; cfr. stringhe byte per byte
JNE diversa ; se diverse, deve proseguire la ricerca
;----------------------------------------------------------------
uguale:
MOV ris, "1" ; sottostringa trovata
JMP fine
;----------------------------------------------------------------
diversa:
INC BX ; incr. pos. iniz. di Stringa per ricerca
CMP Stringa[BX], "§" ; Stringa finita?
JE fine ; se sì, finisce
JMP l1 ; altrim. torna al ciclo l1
;----------------------------------------------------------------
Fine:
MOV BH,00H ; Stampa risultato su pagina video 0
MOV AL, RIS ; Byte da stampare in AL
MOV AH,0EH ; in modo TTY
INT 10H ; Interrupt Bios
;----------------------------------------------------------------
MOV AH,4CH ; Funzione per uscire al dos
INT 21H ; Esce al dos
END Begin
;=================================================================
Visitano il forum: Nessuno e 1 ospite