Код: Выделить всё
.MODEL TINY
.STACK 200h
.DATA
x dw 3
a dw 5
b dw 2
c dw 23
strbuf db 8 dup('$')
.CODE
; процедура перевода числа в строковое представление
; ax: число, ds:di – адрес буфера для строки
proc dec2str
push dx
push cx
mov dl, 10
xor cx, cx
dec2str_loop1:
div dl
push ax
inc cx
xor ah, ah
cmp al, ah
jnz dec2str_loop1
dec2str_loop2:
pop ax
add ah, '0'
mov [di], ah
inc di
loop dec2str_loop2
pop cx
pop dx
ret
endp dec2str
program1:
mov ax, @data
mov ds, ax
;вычисление x!
;mov ax, 1
;mov cx, [x]
;loop1:
;mul cl
;loop loop1
;вычисление x! + 2x
mov ax, x
mul b ;умножаем на *2
add ax, c ;прибавляем +23 ; так работает, но надо вычесть!!!
;sub ax, bx ;если вычесть, то пишет что переполнение деления!!!!
mul a ;умножаем на *5
add ax, b
;mov cx, [b]
;mul ax,cx
;add ax, cx
;add ax, cx
;преобразование y в строку
mov di, OFFSET strbuf
push di
call dec2str
;вывод строки
pop dx
mov ah, 9
int 21h
;завершение программы
mov ah, 4Ch
int 21h
end program1