PDA

Visualizza la versione completa : [Assembly 8086]Aquisizione


Salvatore_91
22-12-2008, 12:56
Ciao raga qualkuno di voi mi potrebbe fare un esempio di sintassi, di acquisizione di una variabile dalla tastiera.

pallinopinco
22-12-2008, 13:19
Quale assembler usi? Per quale sistema operativo?

Salvatore_91
22-12-2008, 13:42
Nel titolo e' specificato uso 8086.
Sistema operativo WIndows Xp

oregon
22-12-2008, 13:55
Puoi usare i servizi del DOS ?

Ad esempio la chiamata

INT 21

con la funzione 0Ah per l'input bufferizzato da tastiera?

pallinopinco
22-12-2008, 14:30
Nel titolo e' specificato uso 8086.


Infatti non ti ho chiesto l'architettura (x86), ma informazioni sul sistema operativo e sull'assembler utilizzati. Se usi Windows XP e lavori con un assembler in grado di generare codice a 16 bit allora puoi richiamare i servizi dell'INT 21, altrimenti devi interagire con la Windows API.

Salvatore_91
22-12-2008, 15:23
Si posso richiamare i servizi dell' int21.
ma mi potreste fare un esempio?? acquinsendo una variabile

pallinopinco
22-12-2008, 15:28
Si posso richiamare i servizi dell' int21.
ma mi potreste fare un esempio??


No, almeno finché non rispondi alla domanda "quale assembler usi", rispondi in modo dettagliato, ossia indicando il nome e la versione esatta del tuo assembler. Non è così scontato (anzi!) che tu possa invocare direttamente i servizi dell'interrupt 21 su un sistema operativo Windows recente.

oregon
22-12-2008, 15:37
Originariamente inviato da Salvatore_91
Si posso richiamare i servizi dell' int21.
ma mi potreste fare un esempio?? acquinsendo una variabile

Puoi acquisire dati in un buffer dati usando la chiamata

INT 21 subfunction 0Ah

La documentazione e' la seguente

Buffered Keyboard Input
AH = 0Ah
DS:DX = segment:offset of the buffer nothing Reads a string of bytes from the standard input device and sends the characters to a buffer. This function echoes characters to the standard output device. The input ends when it receives a carriage return code. Uses the buffer in the following format:
Offset Size Description
00h 1 maximum number of characters (including the carriage return) buffer can hold
01h 1 number of characters
02h n actual characters read from input including the carriage return which terminated the string

Ora non ho tempo di farti l'esempio, ma la documentazione e' semplice ... PUOI PROVARCI ANCHE TU ... (almeno provarci)

Naturalmente i dati nel buffer rappresentano i valori ASCII dei tasti pressati ... se vuoi ottenere un valore numerico binario dovrai fare la trasformazione da ASCII a binario (un po' come fa la atoi del C ...)

nickt
24-02-2009, 15:03
Queste sono le istruzioni di acquisizione con eco


MOV AH, 01h ;Acqisizione dato con eco
INT 21h


E queste sono le istruzioni per l'acquisizione di un dato senza eco


MOV AH, 07h ;Acqisizione dato con eco
INT 21h

Loading