ВУЗ:
Составители:
86
Алгоритм деления целых беззнаковых чисел в формате с ФТ
(без восстановления остатка) состоит из следующих шагов.
Шаг 1. Запись делимого в регистры РСМ и Р2. Младшая полови-
на битов делителя записывается в регистр Р2, а старшая – в регистр
РСМ. Запись делителя в регистр Р1. Сброс флагов CF и OF.
Ш а г 2. Проверка Р1 на равенство нулю. Если Р1 равен 0, установка
OF в 1 и завершение деления (так как деление на 0 не определено).
Ш а г 3. Пробное вычитание – из старших разрядов делимого
(т.е. регистра РСМ) вычитается делитель (Р1), при этом:
а) если остаток ≥ 0 (CF=1), то будет переполнение при делении,
флаг OF устанавливается в единицу, деление завершается.
б) если остаток < 0 (СF=0), то деление состоится, переход к шагу 4.
Ша г 4. Циклический сдвиг влево Р2 и флага СF на 1 бит.
Ша г 5. Циклический сдвиг влево РСМ и флага СF на 1 бит.
Ша г 6. Если CF=1 (полученный остаток отрицательный), то к со-
держимому РСМ прибавляется содержимое Р1, иначе из РСМ вычи-
тается Р1 (прибавляется –Р1+1).
Шаг 7. Содержимое СЧТ уменьшается на 1. Если СЧТ ≠ 0, пере-
ход к шагу 4, иначе к шагу 8.
Ша г 8. Выполняется циклический сдвиг влево регистра Р2 и фла-
га CF на 1 бит.
Шаг 9. Проверяется знак последнего остатка от деления (по-
скольку числа беззнаковые, остаток должен быть положительным).
Если CF=0, то производится восстановление остатка путем добавле-
ния Р1 к РСМ.
Рассмотрим пример деления X/Y по этому алгоритму в восьми-
разрядном процессоре (табл. 4.7).
X=251
(8)
; Y=5
(8)
.
X=10101001
(2)
; Y=101
(2)
.
Для восьмиразрядного процессора получаем:
X=10101001
(2)
; Y=00000101
(2)
; [–Y]
2
=11111011.
Проверим результат. Частное находится в регистре Р2=00100001
(2)
=
=41
(8)
, а остаток в РСМ=00000100
(2)
=4
(8)
. Результат верен.
Алгоритм деления целых беззнаковых чисел в формате с ФТ
(без восстановления остатка) состоит из следующих шагов.
Ш а г 1. Запись делимого в регистры РСМ и Р2. Младшая полови-
на битов делителя записывается в регистр Р2, а старшая – в регистр
РСМ. Запись делителя в регистр Р1. Сброс флагов CF и OF.
Ш а г 2. Проверка Р1 на равенство нулю. Если Р1 равен 0, установка
OF в 1 и завершение деления (так как деление на 0 не определено).
Ш а г 3. Пробное вычитание – из старших разрядов делимого
(т.е. регистра РСМ) вычитается делитель (Р1), при этом:
а) если остаток ≥ 0 (CF=1), то будет переполнение при делении,
флаг OF устанавливается в единицу, деление завершается.
б) если остаток < 0 (СF=0), то деление состоится, переход к шагу 4.
Ш а г 4. Циклический сдвиг влево Р2 и флага СF на 1 бит.
Ш а г 5. Циклический сдвиг влево РСМ и флага СF на 1 бит.
Ш а г 6. Если CF=1 (полученный остаток отрицательный), то к со-
держимому РСМ прибавляется содержимое Р1, иначе из РСМ вычи-
тается Р1 (прибавляется –Р1+1).
Ш а г 7. Содержимое СЧТ уменьшается на 1. Если СЧТ ≠ 0, пере-
ход к шагу 4, иначе к шагу 8.
Ш а г 8. Выполняется циклический сдвиг влево регистра Р2 и фла-
га CF на 1 бит.
Ш а г 9. Проверяется знак последнего остатка от деления (по-
скольку числа беззнаковые, остаток должен быть положительным).
Если CF=0, то производится восстановление остатка путем добавле-
ния Р1 к РСМ.
Рассмотрим пример деления X/Y по этому алгоритму в восьми-
разрядном процессоре (табл. 4.7).
X=251(8); Y=5(8).
X=10101001(2); Y=101(2).
Для восьмиразрядного процессора получаем:
X=10101001(2); Y=00000101(2); [–Y]2=11111011.
Проверим результат. Частное находится в регистре Р2=00100001(2)=
=41(8), а остаток в РСМ=00000100(2)=4(8). Результат верен.
86
Страницы
- « первая
- ‹ предыдущая
- …
- 85
- 86
- 87
- 88
- 89
- …
- следующая ›
- последняя »
