Assembler printf und scanf code?
section .text
extern scanf
extern printf
global main
main:
push msg
call printf
push input
push formatin
call scanf
add esp, 8
push input
push formatin
call printf
exit:
mov eax, 1
mov ebx, 0
int 80h
section .data
formatin: db "%s", 0
input: times 32 db 0
msg db 'Input eingeben:', 0xa
Eingabe funktioniert
es erscheint Input eingeben:
Gebe z. B. Hallo ein drücke enter
Ausgabe erscheint nichts. Warum?
1 Antwort
Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
programmieren, Informatik, Programmieren & Softwareentwicklung
Wie du die Parameter übergibst und Rückgabewerte erhälst hängt von cer Calling-Convention ab:
https://wiki.osdev.org/Calling_Conventions
https://wiki.osdev.org/System_V_ABI
Eine Sache die mir gerade auffällt:
input: times 32 db 0
Die Größenangabe ist iirc in Byte. Was du hier möchtest ist wahrscheinlich eher "times 4". Das sollte aber eher nichts kaputt machen, denn du übergibst ja sowieso nur den Pointer.
Vielleicht musst du noch iregndwo flushen?
Schreib dir dieselbe App doch mal in C-Code und generiere dafür den Assembly-Code. Dann kannst du vergleichen.