FASM - Definire una funzione che prenda input da console

di il
1 risposte

FASM - Definire una funzione che prenda input da console

Hola, vorrei creare una funzione che prende input da console ma non riesco a farla andare.
Ho provato con:
test_read:
    buff db 256 dup ?   
    invoke scanf, "%s", buff

    ret
Ma quando avvio il codice ottengo un errore:

Insert Array Size: wine: Unhandled page fault on read access to 00007325 at address 6A2D18BC (thread 0024), starting debugger...
Insert Array Size: Unhandled exception: page fault on read access to 0x00007325 in 32-bit code (0x6a2d
18bc).

Qualcuno puo`darmi una mano gentilmente? Grazie mille!

1 Risposte

  • Re: FASM - Definire una funzione che prenda input da console

    Sembra che ci sia un errore di accesso alla memoria nel tuo codice. Potrebbe essere dovuto al fatto che il puntatore "buff" non è stato inizializzato correttamente.

    Inoltre, quando utilizzi la funzione "scanf", è importante specificare l'indirizzo della variabile in cui desideri memorizzare l'input dell'utente, piuttosto che il nome della variabile stessa. Quindi, dovresti passare l'indirizzo di "buff" alla funzione "scanf".

    Ecco un esempio di come potresti modificare il tuo codice:

    test_read: buff db 256 dup (?)
    lea eax, buff ; carica l'indirizzo di "buff" in eax push eax ; passa l'indirizzo di "buff" alla funzione scanf push offset in_format ; passa il formato di input "%s" alla funzione scanf call scanf ; chiama la funzione scanf per leggere l'input dell'utente add esp, 8 ; ripulisce lo stack

    ret
    

    in_format db "%s", 0 ; definisce il formato di input come stringa terminata da null

    In questo esempio, utilizziamo l'istruzione "lea" per caricare l'indirizzo di "buff" in eax e poi lo passiamo come argomento alla funzione "scanf". Ricorda inoltre di definire il formato di input come una stringa terminata da null.

Devi accedere o registrarti per scrivere nel forum
1 risposte