Язык ассемблера большое сложение а, умножение и деление - PullRequest
0 голосов
/ 03 февраля 2020

Выполните следующую арифметическую операцию c: (1 + 2) * (3 - 1) / 5 + 3 + 2 - (1 * 2), как решить эту проблему на языке ассемблера

1 Ответ

2 голосов
/ 03 февраля 2020

Я бы решил это так:

    mov ax, (1 + 2) * (3 – 1) / 5 + 3 + 2 – (1 * 2)

Большинство ассемблеров достаточно умны, чтобы выполнять вычисления за вас, и, поскольку ни одно из значений не меняется, нет причин тратить время процессора, делая это каждый раз программное обеспечение выполняется.

Для чего-то вроде «(a + b) * (c – d) / e + f + g – (h * i)» (где все является переменными и ничто не может быть вычислено до его выполнения), это в конечном итоге представляет собой относительно тривиальные инструкции (add или lea, sub, mul или imul, div или idiv) с кучей головных болей, выясняющих, где переменные на самом деле находятся в памяти.

...