PDA

Visualizza la versione completa : [Assembler] vettore di stringhe


Neptune
10-01-2010, 19:22
Salve a tutti,
mi chiedevo se in assembler ci fosse un modo per definire un vettore di stringhe, anziche di caratteri. Ovvero se io scrivessi:



vet db "ciao$"


Sarebbe un unica stringa di piu caratteri, ma mettiamo caso che io in un vettore volessi piu stringhe, del tipo:


vet db "ciao$mondo$"


Ci sarebbe poi un interupt che faccia in modo di stamparmele entrambe, o di stamprmi la seconda anzichè la prima? insomma una specie di "vet[1]"?

oregon
10-01-2010, 19:52
No ... semmai devi creare un vettore con gli indirizzi iniziali delle varie stringhe.

Neptune
10-01-2010, 20:04
Originariamente inviato da oregon
No ... semmai devi creare un vettore con gli indirizzi iniziali delle varie stringhe.

Umm tipo so che l'emu8086 fa iniziare il datasegment all'indirizzo 700h, magari per andare largo e non ricadere sulle altre variabili assegno indirizzi dall'800h in poi ?

Tipo, se ho stringe di 5 lettere, ogni char è un byte, allora ogni stringa occupera 5byte, quindi se volessi creare un vettore di stringhe farei qualcosa del tipo:



vet db 800h,805h,810h,815h,820h.... eccetera


Poi dovrei allocare i vari indirizzi, ma come si fa a dire, nel data segmente, di allocare ad una certa posizione?

e poi quando vorrò stamparlo, che faccio?

Insomma concettualmente ho capito cosa dici, ma a volerlo fare, sintatticamente, programmando sull'emu 8086, come faccio? :fagiano:

oregon
10-01-2010, 20:35
Ma stiamo parlando di stringhe costanti?

Neptune
10-01-2010, 20:54
Originariamente inviato da oregon
Ma stiamo parlando di stringhe costanti?

Il mio scopo sarebbe di realizzare qualcosa del tipo la dichiarazione del C "char Stringa[10][10]", ovvero sai che ci sono 10 stringhe e al più ogni stringa sarà lunga 10 caratteri. Se non lo è "lasci dello spazio vuoto", ovvero quandoandrai a leggere ti fermerai al carattere tappo $

Il punto è, come realizzarlo in termini di codice?

Tu mi suggerivi fare un vettore di 10 indirizzi, e ogni indirizzo lo faccio puntare all'inizio di una stringa? ma sintatticamente come lo scrivo nel data segment?

Ovvero come posso scrivere che c'è un vettore che punta a 10 indirizzi da me definiti e poi assegnare al singolo indirizzo un valore?

A me verrebbe di fare un "semplice" vettore di interi, poi leggere ogni valore di intero e allocare la locazione di memoria che si riferisce a quell'intero. Ma mi chiedevo se c'era qualche "struttura" prefatta in assembler per fare questa cosa.

Loading