Problemas com o acesso aos argumentos da linha de comando no linux a partir do x86 asm

Eu tenho um programa asm básico que verifica se uma string é um dígito. Eu estava adicionando no código para ler argumentos de linha de comando, colocá-lo mantém falhas de seg.

se o que eu li estiver certo, isso deve obter a quantidade de argumentos passados ​​para o programa, que deve ser armazenado em 0 (% ebp). O que estou fazendo de errado?

A totalidade do código pode ser encontrada aqui:http://pastebin.com/kGV2Mxx4 O problema são as primeiras 3-5 linhas do _start.

Ao olhar para a saída do lscpu, eu tenho uma cpu i868. Embora, diz que pode operar em 32 bits e 64 bits. Estou executando o linux de 32 bits (Arch linux x86)

Eu consertei o problema. Eu fiz 2 pop's, um para ignorar o nome dos programas, o próximo para obter o primeiro argumento. o código atualizado pode ser encontrado aqui:http://pastebin.com/xewyeHYf

Alguém pode me dizer por que eu não poderia simplesmente fazer o seguinte:

pushl 8(%ebp)

ou

movl 8(%ebp), %eax

questionAnswers(3)

yourAnswerToTheQuestion