Доставка цветов в Севастополе: SevCvety.ru
Главная -> Появление первого микропроцессора

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [33] 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116

для программы приведены в табл. 1.23. Эти данные можно использовать и для проверки программы ДДФ16 (предварительно сдвинув шестнадцатеричные числа на один двоичный разряд вправо с учетом знака).

Табл. 1.23. Тесты деления формата 17:17=17 (дробные двоичные числа в дополнительном коде)

Прслстав.пенис чисе.п

шестпадца гсричное

(+8000): (+С000) = + АААА (+0,5)

(+8000):(+У!У1ЛЛ)=+С000 (+0,5)

(+8000):(+СССС)=+А000 (+0,5)

( 8000):(-4000)=+АААА (-0,5)

(-8000):(+С000)=-5556 (-0.5)

(+0,75)=+0,6666 (+0,6666)=+0,75 (+0,8) =+ 0,625 (-0,75) =+0.6666 (+0.75) = -0.6666

1.6. ДЕЛЕНИЕ ДЕСЯТИЧНЫХ ЧИСЕЛ

Деление десятичных чисел значительно сложнее деления двоичных чисел, поскольку для получения текущей десятичной цифры частного необходимо последовательно вычитать делитель из делимого или остатка, вплоть до получения отрицательной разности. Цифра частного соответствует выполненному числу вычитаний, не считая последнего вычитания, дающего отрицательную разность. Вычисление очередной цифры частного выполняется аналогично двоичному делению сдвигом остатка влево (но на четыре двоичных разряда, т. е. на один десятичный разряд) и очередной последовательностью вычитаний делителя (или суммированием остатка с дополнительным десятичным кодом делителя). Этот простейший алгоритм деления десятичных чисел иллюстрируется ниже двумя программами деления.

Программа Д3210 выполняет деление трехразрядного десятичного числа на двухразрядное с получением одноразрядного частного и двухразрядного остатка:

0С70 ORG 0C70H

Д3210!

SПОДПРОГРАММА ДЕЛЕНИЯ БЕЗЗНАКОВЫХ ЦЕЛЫХ ДВОИЧНО-ДЕСЯ-5ТИЧНЫХ ЧИСЕЛ ФОРМАТА (3»4):(2»4)=(1»4т2»4). ;ВХОДНЫЕ ПАРАМЕТРЫ:(EfH)-ДЕЛИМОЕ (3 ЦИФРЫ)»(С)-ДОПОЛНИ-гТЕЛЬНЫИ ДВОИЧНО-ДЕСЯТИЧНЫИ код ДЕЛИТЕЛЯ (2 ЦИФРЫ).ДЕ-гЛИТЕЛЬ БОЛЬШЕ ДВУХ СТАРШИХ ЦИФР ДЕЛИМОГО.(L>-ЧАСТНОЕ: 5(и>=0.ВЫХ0ДНЫЕ ПАРАМЕТРЫ:(Н>-ДВОИЧНО-ДЕСЯТИЧНЫИ ОСТА-



ЯОК (2 ЦИФРЫ) г (L)-ЧАСТНОЕ (1 ЦИФРА) .ИСПОЛЬЗУЮТСЯ ВСЕ ;РЕГИСТРЫ.

50ЦЕНКА:ДЛИНА-16 БАИТ,ЕРЁНЯ-НЕ ЕОЛЕЕ 600 ТАКТОВ.

;СЛОЖЕНИЕ ДЕЛИМОГО (СТЦ»СРЦгМЛЦ) С ДОПОЛНИТЕЛЬНЫМ КОДОМ -.ДЕЛИТЕЛЯ (СТЦтСРЦгНЛЦ)

0С70 7С

ЦИКЛ; мои

0С71 81

0С72 27

0С73 57

D>A

0С74 ЗЕ99

A»99H

0С76 8В

0С77 27

0С78 47

B>A

0С79 ВО

JУВЕЛИЧЕНИЕ

ЦИФРЫ ЧА(

0С7А 2С

0С7В 62

0С7С 58

0С7В С3700С

ЦИКЛ

0000

.ВРЕМЕННОЕ ХРАНЕНИЕ

;ДОПОЛНЕНИЕ СТЦ ДЕЛИТЕЛЯ

;ВРЕМЕННОЕ ХРАНЕНИЕ !ЕСЛИ РАЗНОСТЬ < о

fЗАЦИКЛИВАНИЕ

Эта программа используется в качестве подпрограммы в программе Д4210 деления четырехразрядного десятичного числа на двухразрядное:

0С80 ОСАО 0С70

0с80 7с 0с81 91 0с82 во

0с83 зе9а 0с85 91 0с86 4f

0с87 cdaooc

0с8а cd700c

0c8d cdaooc

0с90 cd700c

org 0с80н лс4н set осаон Д3210 set ос70н

Д4210!

fподпрограмма деления беззнаковых целых двоично-деся-

гТИЧННХ чисел формата (4*4) : (2)*4) = (2к4г2«4) .

;входные параметры! (h,l.)-делимое (4 цифры) т <с)-иели-

гТЕЛЬ (2 цифры).выходные параметры:(н)-остаток (2 циф-

jPM)t(L)-частное (2 цифры),с¥=0-признак переполнения

5частного.используются все регистры.

;оценка:длина-21 еаит (+27 еаит подпрограмн)тВРЕНЯ-

she еолее 1616 ТАКТОВ сс учетом подпрогранм)

;проверка частного на переполнение:частное > (2*4) ? mov АтН sub с

RNC гЕСЛИ переполнение,CY=0

гдвоично-десятичное дополнение делителя mui а,9АН sub с

мои с»а s (с)-дополнительный код

!сдвиг делимого влево на десятичный разряд

CALL лс4н ?(ЕгНтГН)-делимое после сдвига ;вычисление старшей стц цифры частного

CALL д3210 !(н)-остатокг(LL)-стц частного ;сдвиг остатка и частного влево на десятичный разряд

CALL лс4н г(ЕгН)-0стат0к,(1.н)-СТЦ частного ;вычисление младшей МЛЦ цифры частного

CALL .д3210 ?(н)-0СТАТОКг(г)-СТЦ,МЛЦ



0С93 37 0С94 С9 0000

STC RET END

;CY=1

Программа Д4210 обращается к вспомогательной программе ЛС4Н сдвига влево на четыре разряда содержимого регистровой пары (Н, L):

.ОСАО

ORG ОСАОН

ЛС4Н:

;ПОДПРОГРАММА СДВИГА ВЛЕВО НА 4 РАЗРЯДА СОДЕРЖИМОГО ;Н-ПАРЫ РЕГИСТРОВ С СОХРАНЕНИЕМ ВЫДВИНУТЫХ РАЗРЯДОВ В ;(Е) и ЗАПОЛНЕНИЕМ СВОБОДНЫХ ПРАВЫХ РАЗРЯДОВ НУЛЯМИ. /ВХОДНОЙ ПАРАМЕТР:(Н.L>-ИСХОДНОЕ ЧИСЛО.ВЫХОДНОЙ ПАРА-;МЕТР!(EsHjL)-СДВИНУТОЕ ЧИСЛО.ИСПОЛЬЗУЮТСЯ РЕГИСТРЫ Е>А. ;0«ЕНКА!ДЛИНА-11 БАИТгВРЕМЯ-142 ТАКТА.

ОСАО 0604

В»4 гСЧЕТЧИК СДВИГОВ

0СА2 AF

А !(А)=0

;СДВИГИ ЧИСЛА ВЛЕВО С УЧЕТОМ ПЕРЕНОСА

ОСАЗ 29

ЦИКЛ! BAD

0СА4 17

0СА5 05

0СА6 С2А30С

цикл SЗАЦИКЛИВАНИЕ

0СА9 5F

ОСАА С9

0000

Аналогично можно строить программы деления и многоразрядных десятичных чисел, но они по сравнению с программами деления двоичных чисел значительно сложнее и выполняются медленнее.



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 [33] 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116



0.0135
Яндекс.Метрика