;**************************** D16_8 **************************** |
||
; Подпрограмма деления целых двоичных чисел без знака ; формата 16:8=(16,8). ; Входные параметры: (Н,L) - делимое, (С) - делитель. ; Выходные параметры: (D,E) - частное, (Н) - остаток. |
||
;**************************************************************** |
||
D16_8: |
MVI B, 8 |
; Счетчик циклов |
XRA A |
||
ADD C |
; (А) - делитель |
|
; Нормализация делителя: устранение левых нулей |
||
CYCLE1: |
RAL |
|
INR B |
||
JNC CYCLE1 |
; Если выдвинутый разряд = 0 |
|
RAR |
||
MOV C, A |
; (С) - нормализованный делитель |
|
DCR B |
||
; Сохранение величины сдвигов делителя |
||
MOV A, B |
||
SBI B |
||
PUSH PSW |
||
; Нормализация делимого: устранение левых нулей |
||
CYCLE2: |
XRA A |
|
ADD H |
; (А) - СТБ делимого |
|
JM PER2 |
; Если старший разряд = 1 |
|
DAD H |
; Сдвиг делимого влево |
|
DCR B |
||
JMP CYCLE2 |
; Зацикливание |
|
PER2: |
LXI D, 0 |
; Обнуление частного |
; Вычитание делителя из делимого, (А) - СТБ делимого |
||
SUB C |
||
INX D |
; Установка разряда частного = 1 |
|
JNC PER3 |
; Если разность > 0 |
|
DCX D |
; Сброс разряда частного = 0 |
|
ADD C |
; Восстановление делимого |
|
PER3: |
MOV H, A |
|
; Проверка счетчика циклов на 0 |
||
XRA A |
||
ADD B |
||
JZ EXIT |
; Если счетчик = 0 |
|
; Сдвиг влево частного (D,E) и остатка (Н,L) |
||
CYCLE: |
XCHG |
|
DAD H |
||
XCHG |
||
DAD H |
||
MOV A, H |
; (А) - СТБ остатка |
|
JC PER4 |
; Если переполнение остатка |
|
; Вычитание делителя из остатка |
||
SUB C |
||
JNC PER5 |
; Если разность > 0 |
|
; Разность < 0, восстановление остатка |
||
ADD C |
||
MOV H, A |
||
JMP PER6 |
||
; Переполнение остатка, установка разряда частного = 1 |
||
PER4: |
SUB C |
; Вычитание делителя |
PER5: |
MOV H, A |
|
INX D |
; Разряд частного = 1 |
|
; Проверка конца цикла |
||
PER6: |
DCR B |
|
JNZ CYCLE |
; Зацикливание |
|
; Коррекция остатка: сдвиг вправо |
||
EXIT: |
POP PSW |
; (А) - счетчик сдвигов |
RZ |
; Если счетчик = 0 |
|
MOV C, A |
||
XRA A |
||
ADD H |
; (А) - остаток |
|
CYCLE3: |
RAR |
|
DCR C |
||
JNZ CYCLE3 |
; Зацикливание |
|
MOV H, A |
||
RET |
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.