Messaggioda TomSawyer » 06/07/2006, 18:26

Sì, hai perfettamente ragione. Avevo saltato la parte finale del suo messaggio e letto quello di nepero87.
I watched a snail crawl along the edge of a straight razor. That's my dream. That's my nightmare. Crawling, slithering, along the edge of a straight... razor... and surviving., Walter E. Kurtz
Avatar utente
TomSawyer
Advanced Member
Advanced Member
 
Messaggio: 449 di 2270
Iscritto il: 16/11/2005, 16:18

Messaggioda lorven » 06/07/2006, 20:42

Visto che Cris tace, assumendo che il programma richiesto sia in Assembly, posto una possibile soluzione.
E' integralmente ASM, non essendo ancora riuscito ad includere prg ASM in C/C++ :evil:
Codice:
;----------------------------------------------------------------
.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
;=================================================================


Chiedo scusa per l'indent errato.

N.B.:
- questo programma ricerca solo la prima occorrenza della sottostringa;
- l'algoritmo non è il massimo di efficienza.

:-)
Un giorno senza sorriso è un giorno perso.
Charlie Chaplin
Avatar utente
lorven
Junior Member
Junior Member
 
Messaggio: 173 di 369
Iscritto il: 06/12/2005, 20:55

Messaggioda CrisLoveStefy » 12/08/2006, 00:22

Vaffanculo ho risolta grazie e addio per questo argomento....
Chi trova un amico trova il tesoro!
CrisLoveStefy
New Member
New Member
 
Messaggio: 33 di 70
Iscritto il: 22/06/2006, 17:45

Precedente

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite