Мне нужно построить программу калькулятора в сборке x64, где пользователь вводит два числа, а затем программа запрашивает у пользователя оператор (+, -, *, /). Я пытаюсь сравнить ввод с сохраненными переменными, чтобы я мог сравнить ввод с этими переменными и выполнить заданную пользователем операцию.
При запуске программы в gdb я вижу, что если я печатаю / c для оператора и переменной: добавление (когда я устанавливаю оператор на +
), они оба сохраняют одно и то же значение, но в cmp
оно не переходит в соответствующий блок кода
Мой код примерно такой
segment .data
mult db "*"
divide db "/"
addition db "+"
subtract db "-"
operator db ""
segment .data
global _start
_start:
;;get user input, set operator from rsi using syscall
mov r13,[operator]
mov r12,[addition]
cmp r12,r13 ;; my problem is somewhere here
je addFunction ;;Jump to addition operation
mov r12,[subtract]
cmp r12,r13
je subFunction