Witam serdecznie.
Na wstępie zaznaczę, że jeżeli chodzi o Assembler to jestem początkujący. Piszę program w ASM 16-bitowym (DOSBox, nasm).
Prosiłbym o sprawdzenie, czy poniższy kod rzeczywiście obliczy wzór 3(a+2(b+c)):
org 100h
; z=3(a+2(b+c))
push word a
push word c
push word b
pop ax ; ax = b
pop bx ; bx = c
add ax, bx ; ax = (b+c)
mov al, 2
mul ax ; ax = 2 * ax = 2(b+c)
pop bx ; bx = a
add ax, bx ; ax = a + ax = a + 2(b+c)
mov al, 3
mul ax ; ax = 3(a+2(b+c))
mov [z], ax ; z=3(a+2(b+c))
a DB 5
b DB 3
c DB 7
z DB 0
Będę bardzo wdzięczny za informacje zwrotne oraz wszelkie wskazówki odnośnie do tego, jakby ten kod mógłby być "lepszy".