Как читать параметры из консоли сборки - PullRequest
0 голосов
/ 29 апреля 2019

Я пытаюсь прочитать параметры из консоли в сборке, я уже прочитал количество параметров, но не могу прочитать следующие строки.

Я пытался сделать:

pop     ebp
mov     [opcion], ebp
push    opcion
call    printf

Но покажи мне ничего.И когда я пытаюсь:

pop     ebp
mov     [opcion], ebp
mov     eax, opcion
call    print

Это показывает мне: 100

Это код, где я читаю количество параметров и где я пытаюсь распечатать параметрыкоторый пользователь отправляет в программу.

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.

1 Ответ

1 голос
/ 29 апреля 2019

Второй параметр main - это «argv», который является адресом массива указателей на строки. Вы используете второй параметр, как если бы он был строкой.

Чтобы исправить это, в primerCaso поставьте:

pop ebp 
mov ebp, [ebp+4]
push ebp 
call printf
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...