;************************** D16_16AF *************************** |
||
; Подпрограмма деления двоичных беззнаковых дробных чисел ; с фиксированной перед старшим разрядом запятой ; формата ( ,16):( ,16)=( ,16), где ( ,16)=(СТБ,МЛБ). ; Входные параметры: (D,E) - адрес делимого в памяти, ; (H,L) - адрес делителя в памяти. ; Выходные параметры: (В,С) - частное, ; (CY) - признак переполнения частного. ; Используется подпрограмма D16_16А. |
||
;**************************************************************** |
||
D16_16AF: |
PUSH D |
; Сохранение адреса делимого |
PUSH H |
; Сохранение адреса делителя |
|
; Пересылка делителя из памяти в регистры (В,С) |
||
MOV B, M |
||
INX H |
||
MOV C, M |
; (В,С) - делитель |
|
; Пересылка делимого из памяти в регистры (H,L) |
||
XCHG |
; (H,L) - адрес делимого |
|
MOV D, M |
||
INX H |
||
MOV E, M |
||
XCHG |
; (H,L) - делимое |
|
; Проверка переполнения частного (частное >1 ?) |
||
PUSH H |
; Сохранение делимого |
|
DAD B |
; (H,L) - разность делимого и делителя |
|
JC PER1 |
; Если частное >1 |
|
POP H |
; Восстановление делимого |
|
JMP PER2 |
||
PER1: |
INX SP |
|
INX SP |
; Баланс стека |
|
PER2: |
PUSH PSW |
; Сохранение признака переполнения |
; Деление целых двоичных чисел формата 16:16=16 |
||
CALL D16_16A |
; (D,E) - частное |
|
MOV B, D |
||
MOV C, E |
; (В,С) - частное |
|
; Коррекция частного при переполнении |
||
POP PSW |
; Восстановление признака |
|
MVI D, 0 |
; (D)=0 - признак непереполнения |
|
JNC PER3 |
; Если нет переполнения |
|
; Сдвиг частного вправо |
||
MOV A, B |
||
RAR |
||
MOV B, A |
||
MOV A, C |
||
RAR |
||
MOV C, A |
||
INR D |
; (D)=1 - признак переполнения |
|
PER3: |
POP PSW |
; Восстановление признаков |
MOV A, D |
; (А) - признак переполнения |
|
RAR |
; Проявление признака CY |
|
POP H |
; Восстановление адреса делителя |
|
POP D |
; Восстановление адреса делимого |
|
RET |
; (CY)=1, если переполнение частного |
Программы преобразования представления чисел
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.