[Assembler] działanie matematyczne

0

Witam,
Do zrobienia mam poprawę kodu assemblera jednak mam wrażenie, że nie do końca wykonuję to poprawnie.
Proszę o pomoc, sugestie :)

; Uwagi          : Program obliczajacy wzor: (3*a-b/a)*(d+3)                  ;
;                                                                             ;
;=============================================================================;

                .model SMALL

Dane            SEGMENT

a               DW     20
b               DW     10
c               DW     3
d               DW     5
Wynik           DW      ?

Dane			ENDS          



Kod             SEGMENT
			ORG 100h

                ASSUME   CS:Kod, DS:Dane, SS:Stosik

Start:
			    mov     ax, SEG Dane
				mov 	ds, ax

                mov     al, a
                mov     cl, c
                mul     cl
				
                mov     WORD PTR Wynik, ax 
                
				mov     bl, b
                mov     al, a
                div     al 		
				
		
				mov		WORD PTR Wynik, bx
				
                mov     dl, d
				mov		cl, c
				add		dl,	cl
                        

                mov     cx,WORD PTR Wynik
				mul     cl

				mov		WORD PTR Wynik,ax
                mov     ax, 4C00h
                int     21h



Stosik          SEGMENT    STACK

                DB      100h DUP (?)

Stosik          ENDS

Kod             ENDS
                END     Start
0

Sporo błędów...
1.

a               DW     20
;
mov     al, a

Skoro a jest DW to ma 16 bajtów a al ma ich 8, wiec wpisujesz do al tylko "połowę" tej zmiennej. To może być mocno błędogenne.
Poza tym lepiej napisać mov al, ds:[a] żeby nie było niedomówień co ty tam wpisujesz
2.

   mov     WORD PTR Wynik, bx

I co ty tu niby chciałeś zrobić? Właśnie pozbyłeś sie tego wyniku cząstkowego a*c który tam zapisałeś o_O Analogicznie robisz też dalej. To w ogóle nie ma sensu.
3.

                mov     cx,WORD PTR Wynik
                mul     cl

To juz w ogóle czeski film. Co ty tutaj chciałeś zrobić? Czy ty rozumiesz że cx to jest ch:cl ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1