Математический пример - Assembler

Узнай цену своей работы

Формулировка задачи:

15. W = X² + Y² – (X + Y)/(X –Y)

Решение задачи: «Математический пример»

textual
Листинг программы
.model small
 
.data
        X       db 100
        Y       db 40
        W       dw 0000h
 
.stack 100h
 
.code
 
main:
        mov     ax,     @data
        mov     ds,     ax
 
    ;W = X*X + Y*Y – (X + Y)/(X –Y)
    mov al, X
    imul    al
    mov bx, ax  ;bx:=X*X
 
    mov al, Y
    imul    al
    add bx, ax  ;bx:=X*X+Y*Y
 
    mov al, X
    mov ah, 0
    sub al, Y
    sbb ah, 0
    mov cx, ax  ;cx:=X-Y
 
    mov al, X
    mov ah, 0
    add al, Y
    adc ah, 0   ;ax:=X+Y
 
    cwd         ;(dx:ax):=X+Y
    idiv    cx      ;ax:=(X+Y)/(X-Y)
 
    sub bx, ax  ;bx:=X*X + Y*Y – (X + Y)/(X –Y)
 
    mov W,  bx
 
        mov ax, 4C00h
        int 21h
end main

Оцени полезность:

13   голосов , оценка 3.692 из 5