Probleme beim Zugriff auf Befehlszeilenargumente unter Linux von x86 asm

Ich habe ein grundlegendes asm-Programm, das prüft, ob eine Zeichenfolge eine Ziffer ist. Ich habe Code zum Lesen von Kommandozeilenargumenten hinzugefügt.

Wenn das, was ich gelesen habe, richtig ist, sollte dies die Anzahl der Argumente anzeigen, die an das Programm übergeben werden. Diese sollten in 0 (% ebp) gespeichert werden. Was mache ich falsch?

Die Gesamtheit des Codes finden Sie hier:http://pastebin.com/kGV2Mxx4 Das Problem sind die ersten 3-5 Zeilen von _start.

Wenn ich die Ausgabe von lscpu betrachte, habe ich eine i868-CPU. Obwohl es heißt, dass es in 32-Bit und 64-Bit arbeiten kann. Ich verwende 32-Bit-Linux (Arch Linux x86)

Ich habe das Problem behoben. Ich habe zwei Pops gemacht, einen, um den Programmnamen zu umgehen, den nächsten, um das erste Argument zu erhalten. Den aktualisierten Code finden Sie hier:http://pastebin.com/xewyeHYf

Kann mir bitte jemand sagen, warum ich nicht einfach folgendes machen konnte:

pushl 8(%ebp)

oder

movl 8(%ebp), %eax

Antworten auf die Frage(3)

Ihre Antwort auf die Frage