Как я могу сделать базовый калькулятор с 8086 Ассамблеи? - PullRequest
0 голосов
/ 18 марта 2012

У меня есть 2 переменные, равные 3 и 5. Пользователь должен ввести математический оператор, в котором программа возвращает результат операции.

Например, если пользователь вводит *, программадолжен вывести 15.Я новичок на Ассамблее.

Спасибо за помощь.

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Для программирования в целом первым шагом является определение проблемы. Будет ли калькулятор инструментом командной строки или имеет необычный графический интерфейс? Будет ли он выполнять только целочисленную математику (например, «5/3 = 1») или использовать с плавающей запятой (например, «5/3 = 1.6666667»), или, возможно, использовать рациональные числа произвольного размера для получения предельной точности? Будет ли он выполнять операции в порядке их ввода, или отслеживать текущую формулу и переупорядочивать ее для повышения точности и / или производительности и / или выполнять операции в порядке, определяемом правилами приоритета оператора (например, «5 + 3/2» = 8/2 = 4 "или" 5 + 3/2 = 5 + 1,5 = 6,5 ")?

Затем разбейте (более крупную) проблему на более мелкие и продолжайте делать это, пока у вас не появятся кусочки, достаточно маленькие для реализации в качестве методов / функций / подпрограмм.

Например, «калькулятор» может быть разделен на «пользовательский интерфейс», «отслеживание оператора» (например, отслеживание операций, которые пользователь запросил, но еще не выполнял из-за правил приоритета) и «обработка оператора» , Эти части можно разделить далее (например, «пользовательский интерфейс» может быть разделен на «получить операцию из STDIN» и «показать состояние калькулятора»; а «обработка оператора» может быть разделена на «умножить», «разделить», «добавить», и т.д.).

Примечание. Для сборки эти конечные элементы имеют тенденцию быть немного меньше, чем на языках высокого уровня. Может быть глупо иметь функцию do_addition () в C, и может быть глупо не иметь подпрограмму do_addition: в сборке.

Как только вы все разделите, запишите это. Это может быть набор диаграмм UML, или блок-схема, или что-то в этом роде, или просто текстовый файл, который описывает вещи. Это действительно зависит от того, как долго будет поддерживаться программное обеспечение и насколько оно сложное (обратите внимание: калькулятор командной строки «только для целых чисел» может быть очень простым, в то время как калькулятор GUI с высокой / бесконечной точностью может быть очень сложным).

Наконец, реализуйте все маленькие кусочки. Мне нравится работать сверху вниз (например, начать с пользовательского интерфейса), но работа снизу вверх одинаково хороша (например, начинать с подпрограмм для сложения, вычитания и т. Д.). Важным моментом является возможность протестировать то, что вы сделали, на ходу (что может включать в себя написание временного кода для проверки того, что вы сделали, или реализацию формальных модульных тестов).

1 голос
/ 19 марта 2012
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

Переведите строку за строкой в ​​ваш конкретный ассемблер.

...