|
Главная -> Появление первого микропроцессора 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 ТАКТОВ. ;СЛОЖЕНИЕ ДЕЛИМОГО (СТЦ»СРЦгМЛЦ) С ДОПОЛНИТЕЛЬНЫМ КОДОМ -.ДЕЛИТЕЛЯ (СТЦтСРЦгНЛЦ)
.ВРЕМЕННОЕ ХРАНЕНИЕ ;ДОПОЛНЕНИЕ СТЦ ДЕЛИТЕЛЯ ;ВРЕМЕННОЕ ХРАНЕНИЕ !ЕСЛИ РАЗНОСТЬ < о 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 ТАКТА.
Аналогично можно строить программы деления и многоразрядных десятичных чисел, но они по сравнению с программами деления двоичных чисел значительно сложнее и выполняются медленнее. 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 |
|