Witam, chciałem poruszyć pojęcie mnożenia i dzielenia w assemblerze
dokładnie chodzi mi o to że gdy mnożymy rejestr ax przez inny rejestr to wynik jest w parze rejestrów DX:AX (czyli 2x większy pamięciowo), jak odwołać się w prawidłowy sposób aby wartości była odpowiednio interpretowana, tak aby tą wartość prawidłowo dodać do innej pary rejestrów DX:AX?
Przykłąd zadania
a =20
b =10
c =5
d =3
Wynik = "(ab+cd)/(a-d)"
Wstępnie użyłem wartości DW, prosiłbym o poprawienie jeżeli jest coś źle
wymyśliłem takie coś ale wynik jest bez przecinka i nie wiem co z tym zrobić :?
;google-wynik: 12.6470588235
; ((20*10)+(5*3))/(20-3)
; (200+15)/17
.MODEL TINY
ORG 100h
.DATA
a DW 20
b DW 10
c DW 5
d DW 3
Wynik DD ?
.CODE
mov ax,@DATA
mov ds,ax
mov ax, a
mov bx, b
mul bx
mov cx, ax ;cx= a*b
mov ax, c
mov bx, d
mul bx ;ax=c*d
add ax, cx
mov cx, ax ;cx=a*b+c*d
mov ax, a
mov bx, d
sub ax, bx
mov bx, ax
mov ax, cx
div bx
mov Wynik, ax
mov ax, Wynik
mov ax, 4C25h
int 21h
END
Co w wypadku liczb zmiennoprzecinkowych które powstały z liczb całkowitych(przy dzieleniu), jak prawidłowo wyświetlić/operować na tych wartościach