我正在尝试从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或者如果我发送参数“5 + 28”,如'./rpn“5 + 28 “'输出应为”5 + 28“
我正在使用gcc编译器。
main的第二个参数是“argv”,它是指向字符串的指针数组的地址。您正在使用第二个参数,就好像它本身就是一个字符串。
为了解决这个问题,在primerCaso中,放入:
pop ebp
mov ebp, [ebp+4]
push ebp
call printf