Сборка yasm x64 сравнивает сохраненную строку с пользовательской строкой ввода - PullRequest
0 голосов
/ 29 августа 2018

Мне нужно построить программу калькулятора в сборке 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
...