计算以字符串nasm

时间:2018-07-03 22:37:02

标签: assembly sum nasm

我正在NASM中制作一个计算器,它应该读取一个输入,即2 + 3并打印结果。 我正在做的是将所有内容推入堆栈,弹出第二个数字(3),弹出运算符(+),进行比较以查看它是哪个运算符并跳转到适当的标签,然后弹出第一个运算符并执行操作。

我的总和标签定义如下

sum:
pop ebx
add al, bl
push eax
jmp print

我的打印标签是:

print:
pop eax
add ax, '0'
mov [res], ax
mov eax,4            
mov ebx,1  
mov ecx, res
mov edx, 2
int 80h 
jmp final

但不是打印结果,而是打印诸如“ 1O”之类的奇怪内容。

我尝试过的方法: 在尝试总和标签之前:

    pop eax 
    cmp byte[eax], '3'     
    je print2
    pop edx 
    pop ebx
    cmp byte[ebx], '2'   
    je print2

其中edx是运算符,“ +” 而eax应该是3号,ebx是2号,那么跳转就可以了。

我尝试使用:

mov eax, 2
mov ebx, 3
mov edx, '+' ;edx is the operator
push eax
push ebx

然后放     sub al,'0'

sub bl,'0'

在总标签中查看我的问题是否在代码的另一部分中,但这可以正常工作。

关于出什么问题了吗?

0 个答案:

没有答案