PDA

View Full Version : vettori...o qualcosa di simile!


kerikay
10-07-2006, 17:54
Ciao a tutti!!!
Ho bisogno di aiuto!
Devo fare un programma in assembly 8086 (16 bit) usando assembler TASM in DOS che prenda in input il codice fiscale.
E fino a qui tutto bene! (almeno spero)
Appena preso il codice da tastiera....devo effettuare una serie di controlli.
Cominciamo col primo....
Devo controllare che il numero di caratteri inseriti da tastiera sia 16 e siano tutti lettere maiuscole o numeri....quindi se è così stampo a video la scritta "corretto" altrimenti "errore"...

io nn so come gestire i caratteri presi da input...per ora ho solo salvato in un buffer la dimensione.... ma nn so come controllarla....
Inoltre siccome con i successivi controlli dovrò prendere un determinato carattere o + di uno.... avrei pensato ai vettori.... ma nn so come si gestiscono (e costruiscono) in assembly.....

qualcuno mi può dare una mano? :help:

andbin
10-07-2006, 18:12
Ciao a tutti!!!
Ho bisogno di aiuto!
Devo fare un programma in assembly 8086 (16 bit) usando assembler TASM in DOS che prenda in input il codice fiscale.Ecco un breve programma assembly di esempio che prende in input esattamente 16 caratteri (la lunghezza del codice fiscale) e li memorizza in un array di 16 byte.
IDEAL
SMART
JUMPS
DOSSEG
MODEL SMALL

;===============================================================================
STACK 1024

;===============================================================================
DATASEG

CODFISC DB 16 DUP (?)

;===============================================================================
CODESEG

PROC MAIN NEAR

MOV AX,_DATA
MOV DS,AX
MOV ES,AX

MOV SI,OFFSET CODFISC
MOV CX,0
INPUT_LOOP:
MOV AH,01h ; Input carattere
INT 21H ;

MOV [SI],AL ; Memorizza carattere
INC SI ; Incrementa indirizzo
INC CX
CMP CX,16
JB INPUT_LOOP


MOV AX,4C00H ; Uscita
INT 21H ;

ENDP MAIN


END MAINSpero possa esserti utile. ;)

kerikay
10-07-2006, 19:07
si potrebbe essermi molto utile in effetti....solo che il controllo del numero dei carateri devo farlo dopo l'input....è quello il mio problema....io faccio inserire un numero qualsiasi di caratteri fino a quando non viene premuto enter....dopo dovrei contare quanti sono e se sono numeri o lettere maiuscole....

kerikay
12-07-2006, 10:14
c'è nessuno che mi può aiutare??? sono a un punto morto!!! :muro:

andbin
12-07-2006, 10:33
c'è nessuno che mi può aiutare??? sono a un punto morto!!! :muro:Mah .... io un esempio l'ho postato. Anche se non è proprio quello di cui avevi bisogno, mostra comunque come usare un array di byte per memorizzare l'input.

Tu dici che devi poter inserire un numero qualsiasi di caratteri fino alla pressione dell'invio. Va bene, ma se devi memorizzare i caratteri in un buffer, un limite massimo lo devi impostare! (a meno di usare sistemi di allocazione dinamica della memoria, ecc....)

In sostanza, potresti fare ad esempio una semplice procedure che prende in input un indirizzo in DS:SI (che punta al buffer) e il numero massimo di caratteri in CX. In uscita restituisce (es. in AX) il numero di caratteri inseriti nel buffer fino alla pressione del tasto invio.

Poi, comunque, se hai qualche problema specifico, chiedi pure. ;)

Black imp
12-07-2006, 13:20
metti un carattere '\0' alla fine dell'array e poi lo ri-scandisci per contare quanti caratteri ha messo l'utente prima di '\0'