[ASM] Co spartolilem ?

0

Co w tym kodzie jest nie tak ze niedziala
(program ma obliczyc d/(b-c)*(a+b) )
podkreslam ze jestem bardzo bardzo poczatkujacym w asm...
Prosze o pomoc, wskazowki.
z gory thx !

.MODEL SMALL
ASSUME CS:Dane, DS:Kod, SS:Stosik
Dane SEGMENT

a DB 2
b DB 1
c DB 5
d DB 3

Dane ENDS
Kod SEGMENT

Start:
mov ax, SEG DANE
mov ds,ax
mov bx, 0

mov ax, WORD PTR d
mov bx, WORD PTR b
sub bx, WORD PTR c

div BYTE PTR bx

mov bl, a

add bl, b
;AX=BL*AL
mul bl

mov dx,ax
mov ah,02h
int 21h

Kod ENDS

Stosik SEGMENT

Stosik ENDS

END Start

0

mov bx, word ptr b
wrzuci 2 bajty, czyli i b i c (tylko polaczone w postaci liczby 2-bajtowej)
daj:
mov bx, 0
mov bl, b

0

staraj się przestrzegać, że jak deklarujesz zmienną jako Define Byte, to deklarujesz 1 bajt pamięci i przy wywoływaniu uzywaj DB => byte ptr, do samo tyczy się słów DW => word ptr

0

fakt zwrocilem uwage na to co mowicie :)
dzieki za pomoc :)
poprawilem:

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

a               DW     2
b               DW     1
c               DW     5
d               DW     3

i

                               mov     ax, d
                               mov     bx,b

i dziala :)

0

jest jeszcze inne wyjście:
db d
db b

movzx ax,b
movzx bx,d

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