我正在尝试从Assembly中的控制台读取参数,我已经读取了许多参数,但是无法读取下一行。
我试图做:
pop ebp
mov [opcion], ebp
push opcion
call printf
但是什么都不给我。 当我尝试时:
pop ebp
mov [opcion], ebp
mov eax, opcion
call print
它告诉我:�ĉ
这是我在其中读取参数数量并试图打印用户发送给程序的参数的代码。
SECTION .bss
n1: resb 255
opcion: resb 255
SECTION .text
global main
main:
call clear
pop ebp
pop ebp ;Number of parameters
mov ecx, ebp
cmp ecx, 2
jl interseccionCasos
je primerCaso
call quit
primerCaso:
pop ebp
mov [opcion], ebp
push opcion
call printf
call quit
ret
应用程序的名称为rpn,因此当我使用5作为参数(如“ ./rpn 2”)运行代码时,输出应为2,或者如果我发送诸如“ ./rpn”的参数“ 5 + 28” 5 + 28“'输出应为” 5 + 28“
我正在使用gcc编译器。
答案 0 :(得分:1)
main的第二个参数是“ argv”,它是指向字符串的指针数组的地址。您正在使用第二个参数,就好像它本身是一个字符串一样。
要解决此问题,请在primerCaso中放入:
pop ebp
mov ebp, [ebp+4]
push ebp
call printf