Ассемблер. Помогите поправить код

Рейтинг: -2Ответов: 2Опубликовано: 20.01.2023

написать выражение в ассемблерПомогите поправить код

{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}

Ответы

▲ 0Принят

Вариант реализации:

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 (шесть)

▲ -1
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