首页 > 解决方案 > 简单 asm 程序集中的 GET_STRING 不返回字符串

问题描述

我是组装新手,并试图为课堂做一些小练习。

从用户那里收集 3 个输入变量:

示例 1:用户应按顺序输入:+、4 和 5,得到 9

示例 2:用户类型 -、9、5 应该得到 4

我无法将数学运算符作为字符串进行比较,因此它陷入了加法问题。即使将符号更改为减号,它也只会添加数字。

尝试将 GET_STRING 更改为 GET_DEC 并使数字充当数学符号,它起作用了,所以我认为这是一个语法问题我无法弄清楚如何检查/验证 GET_STRING 输入或如何将其与逻辑进行完全比较

我正在使用简单的 sasm IDE/编辑器

这是我的代码提前感谢您的帮助

%include "io.inc"
section .data
section .text
global CMAIN
CMAIN:
mov ebp, esp; for correct debugging

 GET_STRING [operation],8 // here I treid everything, even GET_CHAR didn't work
 GET_DEC 4,[firstVar]
 GET_DEC 4,[secondVar]

mov eax,[operation]
cmp eax, opAdd
 je Addit
jne L2

L2: 
mov eax,[operation]
cmp eax, opSub
je Subbit
jne L3

L3: 
mov eax,[operation]
cmp eax, "*"
 je Multit

Addit:
mov eax,[firstVar]
mov ebx,[secondVar]
add eax,ebx 
jmp PRINT


Subbit:
mov eax,[firstVar]
mov ebx,[secondVar]
sub eax,ebx
jmp PRINT

Multit:
mov eax,[firstVar]
mov ebx,[secondVar]
mul ebx
jmp PRINT

PRINT:
PRINT_DEC 4,eax

 xor eax, eax
 ret

标签: assemblysasm

解决方案


推荐阅读