Ассемблер. Помогите поправить код
{mov ax, data
mov ds, ax
mov ax, A
sub ax, B
cwd
mov ax, D
mul D
div D
add ax, D
mul ax
sub ax, 26890
mov Result, ax}
Источник: Stack Overflow на русском
{mov ax, data
mov ds, ax
mov ax, A
sub ax, B
cwd
mov ax, D
mul D
div D
add ax, D
mul ax
sub ax, 26890
mov Result, ax}
Вариант реализации:
proc2 proc A: word, B: word, D: word
; x=(d+(a/d^2)-(b/d^2))^2-26890 для A=2345,B=-13131,D=10
mov ax, D
mov bx, ax
imul ax ; ax = D^2
mov cx, ax ; cx = D^2
mov ax, A
mov dx, B
sub ax, dx ; ax = A - B
xor dx, dx
div cx ; dx:ax / cx
; ax = (A-B)/D^2
add ax, bx ; ax = D + (A-B)/D^2
imul ax ; dx:ax = (D + (A-B)/D^2)^2
sub ax, 26890 ; ax = (D + (A-B)/D^2)^2 - 26890
mov result, ax
ret
endp
Результат: число 6 (шесть)
mov ax, data
mov ds, ax
mov ax, 2345
mov bx, -13131
add ax, bx
mov dx, 0
mov bx, 10
div bx
mov cx, ax
mov ax, 2345
mov bx, 10
mul bx
div bx
add ax, cx
mul ax, 2
sub ax, 26890
mov Result, ax