Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;Flat assembler
- org 100h
- Begin:
- call FPU_init
- fild [Number] ;сложение
- fidiv [Number2] ;деление
- frndint ;округление (в сторону нуля-
- call Ar_prog ;т. к. регистр RC установлен в 11)
- fimul [Number2]
- fild [Number]
- fisub [Number10]
- fidiv [Number3]
- frndint
- call Ar_prog
- fimul [Number3]
- fild [Number]
- fidiv [Number4]
- frndint
- call Ar_prog
- fimul [Number4]
- fincstp
- fincstp
- fadd st0, st2
- fsub st0, st6
- fist [Number9]
- call FPU_init
- fild [Number5]
- xor cx,cx
- Out1:
- fild [Number9] ;помещаем значение, полученное после вычитания
- inc cx ;увеличиваем cx
- fcom st1 ;сравниваем значение с 10
- fstsw [Number14]
- mov ax, [Number14]
- sahf
- jb Out2 ;если меньше 10, перейти к Out2
- fdiv st0,st1 ;делим на 10
- frndint ;округляем
- fistp [Number12] ;результат - в Number12
- fild [Number9] ;снова загружаем
- fprem ;остаток от деления на 10
- fiadd [Number15] ;прибавляем 30h
- fistp [Number13] ;выгружаем в память
- push [Number13] ;толкаем в стек
- fild [Number12] ;результат деления - в Number9
- fistp [Number9]
- jmp Out1 ;цикл
- Out2:
- mov di, String ;записываем смещение строки
- fiadd [Number15]
- fist [Number13]
- push [Number13]
- Out3:
- pop dx ;выталкиваем коды цифр, начиная с конца
- mov [di],dl ;записываем их в строку
- inc di ;увеличиваем смещение
- loop Out3 ;повторяем это
- mov [di], byte 24h ;записываем код конца строки для вывода
- mov dx, String ;записываем смещение строки в
- mov ah, 09h ;вызываем прерывание
- int 21h
- int 20h
- Ar_prog:
- fist [Number9]
- fimul [Number9]
- fild [Number9]
- fadd st0,st1
- fidiv [Number8]
- frndint
- ret
- FPU_init:
- finit ;инициализация сопроцессора
- fstcw [Number6] ;получение контрольного слова
- mov ax, [Number7] ;установка десятого и одиннадцатого
- or [Number6], ax ;битов слова в 11 (можно две команды bts:
- ;bts [Number6],10d
- ;bts [Number6],11d )
- fldcw [Number6] ;загрузка контрольного слова в FPU
- ret
- Number dw 1000d
- Number2 dd 3d
- Number3 dw 5d
- Number4 dw 15d
- Number5 dw 10d
- Number6 dw ?
- Number7 dw 0c00h
- Number8 dw 2d
- Number9 dd ?
- Number10 dw 1d
- Number11 db 30h
- Number12 dd ?
- Number13 dw ?
- Number14 dw ?
- Number15 dd 0030h
- String db ?
Advertisement
Add Comment
Please, Sign In to add comment