Загрузка данных


.model small
.data
c dw ?       ; значение c
d dw ?       ; значение d
a dw ?       ; значение a
f dw ?       ; результат

.code
Start:
    mov ax, @data
    mov ds, ax

    ; Вычисляем 2*c
    mov ax, c
    add ax, ax        ; ax = 2*c

    ; Вычисляем d*42
    mov bx, d
    mov cx, 42
    imul bx, cx       ; bx = d*42

    ; Вычитаем d*42 из 2*c
    sub ax, bx        ; ax = 2*c - d*42

    ; Сохраняем числитель во временный регистр
    mov dx, ax        ; dx = числитель

    ; Вычисляем знаменатель c + a - 1
    mov ax, c
    add ax, a
    sub ax, 1         ; ax = c + a - 1

    ; Делим числитель на знаменатель
    mov ax, dx        ; возвращаем числитель в ax
    cwd               ; расширяем AX в DX:AX для знакового деления
    idiv ax           ; f = dx / ax

    mov f, ax         ; сохраняем результат

    ; Завершение программы
    mov ax, 4C00h
    int 21h
end Start