Я бы решил это так:
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
) с кучей головных болей, выясняющих, где переменные на самом деле находятся в памяти.