Linux 如何从控制台程序集读取参数
我正在尝试从汇编中的控制台读取参数,我已经读取了参数的数量,但无法读取下一行 我试着做:Linux 如何从控制台程序集读取参数,linux,gcc,assembly,Linux,Gcc,Assembly,我正在尝试从汇编中的控制台读取参数,我已经读取了参数的数量,但无法读取下一行 我试着做: pop ebp mov [opcion], ebp push opcion call printf 但什么也不给我看。 当我尝试时: pop ebp mov [opcion], ebp mov eax, opcion call print 它告诉我:�ĉ� 这是我读取参数数量的代码,我试图打印用户发送给程序的参数 SECTION .bss
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
注意,我不建议像printf格式那样直接使用参数。使用“%s\n”作为格式,并将字符串作为第二个参数传递给printf。执行此操作时,会显示一个错误,显示为rpn。asm:31:错误:逗号、冒号、装饰符或我尝试使用的操作数后的行尾:
pop ebp push dword[ebp+4]请致电printf
,但不显示任何内容。请使用链接将任何其他信息和您的更改添加到原始问题中。例如,将您尝试的代码和遇到的错误显示在彼此旁边。