如何使用8086汇编制作基本计算器?

时间:2012-03-18 14:02:58

标签: assembly calculator x86-16

我有2个变量等于3和5.用户应该键入一个数学运算符,此时程序返回操作的结果。

例如,如果用户输入*,程序应输出15。我是大会的新手。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

start:
    a = 3
    b = 5
    i = input
    if i != '*' 
        goto not_mul
    r = a * b
    goto print_result
not_mul:
    if i != '/'
        goto not_div
    r = a / b
    goto print_result
not_div:
    ...
print_result:
    print r
    end

逐行翻译到您的特定汇编程序。

答案 1 :(得分:1)

对于一般的编程,第一步是定义问题。计算器是一个命令行工具,还是一个花哨的GUI?它只会进行整数数学运算(例如“5/3 = 1”)还是使用浮点数(例如“5/3 = 1.6666667”),或者使用任意大小的有理数来获得极高的精度?它是按照输入顺序执行操作,还是跟踪当前公式并重新排列以提高准确性和/或性能和/或按照运算符优先规则确定的顺序进行操作(例如“5 + 3/2” = 8/2 = 4“或”5 + 3/2 = 5 + 1.5 = 6.5“)?

接下来,将(较大的)问题分解为较小的问题,并继续这样做,直到你有足够小的部分作为方法/函数/例程来实现。

例如,“计算器”可能会分为“用户界面”,“操作员跟踪”(例如,跟踪用户已请求但尚未执行的操作,由于优先规则)和“操作员处理” 。这些部分可以进一步拆分(例如,“用户界面”可以分为“从STDIN获取操作”和“显示计算器状态”;“操作员处理”可以分为“乘法”,“除”,“添加”,等)。

注意:对于装配,这些最终部件往往比高级语言中的要小一些。在C中使用“do_addition()”函数可能很愚蠢,并且在程序集中没有“do_addition:”例程可能是愚蠢的。

一旦你把所有东西都分开了,就把它写下来。这可以是一组UML图表,或流程图或其他内容,或者只是描述事物的文本文件。这实际上取决于软件的维护时间和复杂程度(注意:命令行“仅整数”计算器可以非常简单,而高/无限精度GUI计算器可能非常复杂)。

最后,实现所有小块。我倾向于喜欢从上到下工作(例如从用户界面开始),但是从下往上工作同样好(例如,开始执行加法,减法等操作)。重要的是能够测试你已经完成的工作(可能需要编写临时代码来测试你已完成的工作,或者实现正式的单元测试)。