Ein und Ausgabe
-
Hi kurze frage,
in diesem Programm gibt es die Variablen zahl1 und zahl2. die möchte ich über stdin eingeben und dann beide nacheinander über stdout ausgeben. Das alles mit fasm unter Linux. Frage:
Warum gibt er mir dann bei beiden Ausgaben den Wert von zahl2 aus?
Gebe ich die Variablen direkt nach der Eingabe wieder aus funktioniert es!format ELF executable 3 entry start ;================== code ===================== segment readable executable ;============================================= start: ;zahl1 einlesen mov eax,3 mov ebx,0 mov ecx,zahl1 mov edx,64 int 80h ;zahl2 einlesen mov eax,3 mov ebx,0 mov ecx,zahl2 mov edx,64 int 80h ;ausgabe zahl1 mov ecx,zahl1 mov eax,4 mov ebx,1 mov edx,64 int 80h ;ausgabe zahl2 mov ecx,zahl2 mov eax,4 mov ebx,1 mov edx,64 int 80h ;beenden mov eax,1 xor ebx,ebx int 80h ;================== data ===================== segment readable writeable ;============================================= zahl1 db '' zahl2 db ''
-
vielleicht in ecx die adresse der variablen anstatt den wert
-
;ausgabe zahl1 mov eax,4 mov ebx,1 mov ecx,[zahl1] mov edx,64 int 80h
Antwort:
test.asm [20]:
mov ecx,[zahl2]
error: operand sizes do not match.geht auch nicht, auch wenn ich das bei der Eingabe mache. Gleiche Fehlermeldung beim compilieren
-
versuch mal anstatt mov ecx,zahl1 -> lea ecx,zahl1
-
leider nicht
lea ecx,zahl1 error: invalid operand.
wenn ich lea ecx,[zahl1] eingeben, dann gibt er kein fehle raus. Aber es wird immer noch nur Zahl2 ausgegeben
-
Weiss denn keiner warum sowas nicht geht? Müsste doch für einen guten Assembler Coder ganz einfach sein, so eine ein und Ausgabe oder nicht?
-
Wo kann man den die INT-80h-API nachschlagen?