为什么在emu8086中打印num始终为零

时间:2017-02-10 12:54:39

标签: assembly x86-16 emu8086

当我在我的2个变量上输入数字时,我认为它没有读取它,所以//----------------------------------------------------------------------- // <copyright company="SomeCompany" file="MyFile.cs"> // Copyright © Some Company, 2011 // </copyright> // <auto-generated /> //----------------------------------------------------------------------- 的值为0。

编译没问题。

这是我的代码:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated from a template.
//
//     Manual changes to this file may cause unexpected behavior in your application.
//     Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

screenshot

1 个答案:

答案 0 :(得分:1)

call scan_num
mov ax,num1

scan_num 宏将其结果留在AX寄存器中。因此,您需要使用AXmov num1, ax存储在 num1 变量中。
这同样适用于输入第二个数字。

cmp al,'?'
je start
;input number 1
proc enter1

当输入既不是&#34; 1&#34;,也不是&#34; 2&#34;,也不是&#34;?&#34;时,请考虑会发生什么。 代码将在 enter1 过程中落实!
更好写:

jmp  start
;input number 1
proc enter1

如果您将其单独保存在注册表中,则应尽可能晚地计算您的金额。您没有使用结果变量。

lea si,c
call print_string
mov  ax, num1
add  ax, num2
call print_num