Non necessariamente l'espressione deve essere DUPlicata, può essere una costante o una stringa di caratteri, un punto di domanda, come ho illustrato sopra, o un indirizzo (solo con DW 16-bit e DD 32-bit) ;)
Ok grazie per la risposta. Ora ho un'altra domanda.
Ho creato un programma per fare una calcolatrice. Il programma funziona ma ho un dubbio.
Io creo una variabile per far mostrare a schermo il risultato in ascii dichiarandola in questo modo: ris_ascii db ?,?, 10,13,'$'
Poi nel corpo del codice per assegnare ad una determinata posizione della variabile il numero in ascii faccio così:
add al,30h
mov ris_ascii,al
add ah,30h
mov ris_ascii+1,ah
Il tutto funziona a dovere ma in un'esercitazione la prof ci fornì un .txt con la soluzione di un esercizio e lei oltre a dichiarere una variabile in questo modo:
max equ 20
buf DB MAX+1, ?, MAX+1 DUP('$')
quando doveva far visualizzare la stringa richiamava una macro (e fino qui nessun problema) e specificava il +2:
stampa_stringa buf+2
Andando su internet e poi rivedendo le slide, ho scoperto questa cosa riguardo l'interrupt 0Ah:
Offset Size Description
00 1 maximum characters buffer can hold
01 1 number of chars from last input which may be recalled OR number of characters actually read, excluding CR
02 n actual characters read, including the final carriage return
Il +2 serve per non far leggere la posizione 00 e 01.
Quello che non capisco però è il motivo per il quale nel mio programma calcolatrice quando stampo la variabile ris_ascii non c'è bisogno di aggiungere il +2.
Sarà perché ho dichiarato la variabile in questo modo?..: ris_ascii db ?,?, 10,13,'$'
Grazie in anticipo per la risposta!