Forum » Programiranje » [Assembler] scanf How-To
[Assembler] scanf How-To
c0dehunter ::
Zdravo, zanima me kako uporabiti scanf funkcijo za branje v zbirniku?
Po moji logiki bi moral ukaz call scanf shraniti prebrano vrednost na akumulator, ampak očitno ne gre tak. Google (oz. zadetki) so glede problema zelo skopi.
Trenutno imam tak:
Po moji logiki bi moral ukaz call scanf shraniti prebrano vrednost na akumulator, ampak očitno ne gre tak. Google (oz. zadetki) so glede problema zelo skopi.
Trenutno imam tak:
; osnovne nastavitve bits 32 extern _scanf extern _printf global _main section .data sporocilo db "Vnesi stevilo: ",10,0 ; program section .text _main: pushad ;shranimo vsebine registrov na sklad push sporocilo call _printf ;DELUJE, IZPISE SPOROCILO IN PROGRAM SE ZAKLJUCI, NE PREBERE NIC VEC add esp, 4 call _scanf ; call _printf popad ret
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
fiction ::
Na akumulator?! EAX register tukaj ne igra nobene vloge.
Pri scanf bi pričakoval vsaj še kakšen "%s" format string. V stilu "push naslov" (oz. najbrz lahko kar "push sporocilo"), "push formatstr", "call _scanf", "add esp, 8". Oz glede na to, da hočeš tisto kar je bilo prebrano takoj spet izpisati najbrž lahko narediš kar brez tega in direktno pokličeš printf s "%s" in naslov.
Če daš "add esp, 4" in pokličeš le printf s sporočilom od uporabnika si ranljiv na format string napade. Druga stvar je pa preveč vpisanih znakov pri scanf (buffer overflow), ampak to lahko rešiš npr. z uporabo "%10s".
Pri scanf bi pričakoval vsaj še kakšen "%s" format string. V stilu "push naslov" (oz. najbrz lahko kar "push sporocilo"), "push formatstr", "call _scanf", "add esp, 8". Oz glede na to, da hočeš tisto kar je bilo prebrano takoj spet izpisati najbrž lahko narediš kar brez tega in direktno pokličeš printf s "%s" in naslov.
Če daš "add esp, 4" in pokličeš le printf s sporočilom od uporabnika si ranljiv na format string napade. Druga stvar je pa preveč vpisanih znakov pri scanf (buffer overflow), ampak to lahko rešiš npr. z uporabo "%10s".
Zgodovina sprememb…
- spremenil: fiction ()
whatever ::
Mislim, da scanf shrani v EBX.
http://www.drpaulcarter.com/pcasm/pcasm...
Tu not ti piše, nekje okrog 300. strani tam nek.
http://www.drpaulcarter.com/pcasm/pcasm...
Tu not ti piše, nekje okrog 300. strani tam nek.
Veliko jih je notri, še več jih je pa zunaj.
Bilijarde v šole! - Ivan Kramberger
Abnormal behaviour of abnormal brain makes me normal.
Bilijarde v šole! - Ivan Kramberger
Abnormal behaviour of abnormal brain makes me normal.
Zgodovina sprememb…
- spremenilo: whatever ()
whatever ::
One great advantage of interfacing C and assembly is that allows as-
sembly code to access the large C library and user-written functions. For
example, what if one wanted to call the scanf function to read in an integer
from the keyboard? Figure 4.14 shows code to do this. One very important
point to remember is that scanf follows the C calling standard to the letter.
This means that it preserves the values of the EBX, ESI and EDI registers;
however, the EAX, ECX and EDX registers may be modified! In fact, EAX
will definitely be changed, as it will contain the return value of the scanf
call. For other examples of using interfacing with C, look at the code in
asm io.asm which was used to create asm io.obj.
Torej v EAX shrani.
Veliko jih je notri, še več jih je pa zunaj.
Bilijarde v šole! - Ivan Kramberger
Abnormal behaviour of abnormal brain makes me normal.
Bilijarde v šole! - Ivan Kramberger
Abnormal behaviour of abnormal brain makes me normal.
Zgodovina sprememb…
- spremenilo: whatever ()
whatever ::
http://forum.feri.uni-mb.si/Default.asp...
Na teh linkih imaš dovolj materiala. Jaz sem ven iz tega že 5 let, ampak vem, da sem imel isti problem kot ti in še kdo in mi je ta quote iz te knjige pomagal. BTW, takrat sem prebral celo.
Na teh linkih imaš dovolj materiala. Jaz sem ven iz tega že 5 let, ampak vem, da sem imel isti problem kot ti in še kdo in mi je ta quote iz te knjige pomagal. BTW, takrat sem prebral celo.
Veliko jih je notri, še več jih je pa zunaj.
Bilijarde v šole! - Ivan Kramberger
Abnormal behaviour of abnormal brain makes me normal.
Bilijarde v šole! - Ivan Kramberger
Abnormal behaviour of abnormal brain makes me normal.
Zgodovina sprememb…
- spremenilo: whatever ()
fiction ::
Ok to že - EAX je ponavadi za return value, odvisno od načina klica. Se popravljam, ni tako da EAX ne bi igral nobene vloge. Samo kaj shrani tja scanf()...One great advantage of interfacing C and assembly is that allows as-
sembly code to access the large C library and user-written functions. For
example, what if one wanted to call the scanf function to read in an integer
from the keyboard? Figure 4.14 shows code to do this. One very important
point to remember is that scanf follows the C calling standard to the letter.
This means that it preserves the values of the EBX, ESI and EDI registers;
however, the EAX, ECX and EDX registers may be modified! In fact, EAX
will definitely be changed, as it will contain the return value of the scanf
call. For other examples of using interfacing with C, look at the code in
asm io.asm which was used to create asm io.obj.
Torej v EAX shrani.
Return Value
On success, the function returns the number of items succesfully read. This count can match the expected number of readings or fewer, even zero, if a matching failure happens.
In the case of an input failure before any data could be successfully read, EOF is returned.
To pa najbrž ni tisto, kar te zanima.
c0dehunter ::
Aha, bom pregledal podano snov in se oglasil nazaj, ko predelam.. Lp
I do not agree with what you have to say,
but I'll defend to the death your right to say it.
but I'll defend to the death your right to say it.
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | C programiranje (strani: 1 2 3 )Oddelek: Programiranje | 27807 (18103) | amacar |
» | [ASM] Pomoč, ne najdem napakeOddelek: Programiranje | 1103 (979) | c0dehunter |
» | asm - vnos stevilk s tipkovniceOddelek: Programiranje | 1284 (1140) | scarymovie |
» | [nasm] scanfOddelek: Programiranje | 2903 (2630) | Brane2 |
» | [NALOGA][NASM] problem pri povezovanju s C-jevskimi funkcijamiOddelek: Programiranje | 1385 (1243) | c00L3r |