.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