Доставка цветов в Севастополе: 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

0В12 С9 f:ET

0000 END

По своей структуре программа аналогична программе Д32, но отличается от последней представлением полноформатного делимого в регистрах (Н, L, D, Е) с двумя нулевыми старшими байтами, что облегчает анализ ситуаций. В результате программа Д162 проще и выполняется быстрее, чем Д32. Тестовые данные для программы приведены в табл. 1.20.

Табл. 1.20. Тесты деления формата 16:16=(Uj, 16) (целые беззнаковые двоичные числа)

Представление чисел

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

десятичное

FFFF:00FF=(0101, 0000) 65535:255=(257, 0)

OOFF:FFFF=(0000, OOFF) 255:65535.=(0, 255)

FFFF:FOOO=:(OOOI, OFFF) 65535:61440=(1. 4095)

5555:07FF=(000A, 055F) 21845:2047=(10. 1375)

07FF:000A=(00CC, 0007) 2047:10=(204, 7)

Программа Д216 в отличие от Д162 и других вышеприведенных программ выполняет деление целых чисел, когда делимое заведомо меньше, чем делитель:

0В20 ORG 0В20Н

0050 ДОПВ SET 50Н

Д216:

гПОДПРОГРАММА ДЕЛЕНИЯ ЦЕЛЫХ ДВОИЧНЫХ ЧИСЕЛ БЕЗ ЗНАКА гФОРМАТА 1й:16=-(16,16) С ДРОБНЫМ ЧАСТНЫМ. гМЕТОД ДЕЛЕНИЯ С ВОССТАНОВЛЕНИЕМ ОСТАТКА.

грходннЕ ПАРАМЕТРЫ!(HjL)-делимое,(ВгС)-делитель.вн-

гХОДНЫЕ ПАРАМЕТРЫ:(D,E)-ЧАСТНОЕ,(Н,Е)-0СТАТ0К,СУ=0-ПРИЗ-ЖАК ПЕРЕПОЛНЕНИЯ ЧАСТНОГО.ИСПОЛЬЗУЮТСЯ ВСЕ РЕГИСТРЫ, ГЛУБИНА СТЕКА-2.ИСП0ЛЬЗХЕТСЯ ПОДПРОГРАММА «ДОПВ*. гОЧЕНКА:ДЛИНА- 40 (+8 ХДОПВ*) ЕАЙТ,ВРЕНЯ-НЕ БОЛЕЕ Я832 ТАКТОВ.

?ПРОВЕРКА ЧАСТНОГО НА ПЕРЕПОЛНЕНИЕ:ЧАСТНОЕ > 1 ? ?(ДЕЛИТЕЛЬ ДОЛЖЕН БЫТЬ > ДЕЛИМОГО )

0820 7D HOV A,L

0821 91 SUB С

0822 7С HOV А,Н

0823 98 SBB В

(Ж24 DO RNC !ЕСЛИ ПЕРЕПОЛНЕНИЕ,CY=0

; ДОПОЛНЕНИЕ ДЕЛИТЕЛЯ 0Б25 CD5000 CALL ДОПВ г (ВО-ДОПОЛНИТЕЛЬННЙ КОД



0В28 ЗЕ10

0В2А ЕВ 0В2В 29 0В2С ЕВ 0B2D 29 0В2Е DA3C0B

0В31 Е5 0Е32 09 ОЕЗЗ В2410В

0836 33

0837 33

0838 13

0839 С3420В

ОВЗС 09 0B3D 13 ОВЗЕ С3420В

0841 Е1

0842 ЗП

0843 С22А0В 0В4Й 37 0В47 С9 0000

Д216Аг MUI ;СДВИГ ЧАСТНОГО ЦИКЛ: XCHG

XCHG

At16

гсчЕтчик ЦИКЛОВ

(D»E) И ОСТАТКА (H»L) ВЛЕВО

;СДВИГ ЧАСТНОГО

Н !СДВИГ ОСТАТКА

ПЕР1 гЕСЛИ ПЕРЕПОЛНЕНИЕ ОСТАТКА гСЛОЖЕНИЕ ОСТАТКА С ДОПОЛНИТЕЛЬНЫМ КОДОМ ДЕЛИТЕЛЯ PUSH Н гСОХРАНЕНИЕ ОСТАТКА

DAD В

JNC ПЕР2 гЕСЛИ СУММА < О гСУМИА ) 0.РАЗРЯД ЧАСТН0Г0=1 INX SP

INX SP -БАЛАНС СТЕКА

INX D г+1 В ЧАСТНОЕ

JMP ПЕРЗ гПЕРЕПОЛНЕНИЕ ОСТАТКА.РАЗРЯД ЧАСТН0Г0=1 ПЕР1: ВАВ В гФОРМИРОВАНИЕ ОСТАТКА

INX В г+1 В ЧАСТНОЕ

JMP ПЕРЗ гСУММА < О.ВОССТАНОВЛЕНИЕ ОСТАТКА ПЕР2! POP и гПРОВЕРКА КОНЦА ЦИКЛА ПЕРЗ! BCR А

JNZ ЦИКЛ гЗАЦИКЛИВАНИЕ

STC гсу=1

RET ENB

Результат операции содержит точное неполное дробное частное и дробный остаток. Эта программа может использоваться при делении точных целых чисел с получением приближенного частного, содержащего целую часть, которая вычисляется, например, с помощью программ типа Д32, и дробную часть, определяемую с помощью программы Д216.

Программа Д216 по структуре подобна программам Д24 и Д32А, т. е. использует дополнительный код делителя для вычисления очередного остатка.

Действия программы Д216 можно также интерпретировать как деление целого делимого с множителем 2® (этот множитель смещает запятую в делимом и частном (остатке) на 16 разрядов вправо) и получение целочисленных частного и остатка. Такая интерпретация упрощает представление тестовых данных программы (см. табл. 1.21).



Табл. 1.21. Тесты деления формата I6:I6=(I6, 16) (целые беззнаковые двоичные числа)

Представление чисел

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

десятичное

FFFE-2:FFFF=(FFFE, FFFE) F0FF-2:FFFF=(F0FF, FOFF) 5555-2:АААА= (8000, 0000) 7FFF-2:8000=(FFFE, 0000) 0009-2:000А=(Е666, 0004)

65534 •2:65535=(65534, 65534)

61695-2:65535=(61695, 61695)

21845-243690=(32768, 0) .

32767•2:32768=(65534, 0) 9-2:10=(58982, 4)

1.5.3. ЦЕЛЫЕ ЧИСЛА СО ЗНАКОМ

Деление целых двоичных чисел в дополнительных кодах целесообразно выполнять путем их преобразования в прямые коды, деления беззнаковых чисел и коррекции результата с учетом знаков делимого и делителя. Знаки частного и остатка в зависимости от знаков делимого и делителя будут определяться следующими правилами:

( + ) : ( + )=(+, +); ( + ) : (-)=(-. +); (-):( + ) = ==( -, -) и ( -) : ( - )=( + , -). Процедура деления целых чисел со знаком рассматривается ниже на примере программы ДД216.

Программа ДД216 выполняет деление целых двоичных чисел в дополнительном коде с получением дробных частного и остатка:

0В5О

0B50H

0В2О

Д216

0B20H

6050

ДОПВ

0058

ДОПД

0060

ДОПН

0070

ПОСД

0078

поен

0B50 7C

ДД216!

;**«*»****»***«*»****»*****«*)*»*****««*««»*«***»««*«**»« ;ПОДПРОГРАММА ДЕЛЕНИЯ ЦЕЛЫХ ДВОИЧНЫХ ЧИСЕЛ В ДОПОЛНИ-ПЕЛЬНОМ КОДЕ ФОРМАТА 1б!16к(16,16) С ДРОБНЫМ ЧАСТНЫМ. гВХОДНЫЕ ПАРАМЕТРЫ: (HrL)-ДЕЛИМОЕ, (В,С)-ДЕЛИТЕЛЬ.ВЫ-гХОЙНЬЕ ПАРАМЕТРЫ: (BiE)-4ACTH0E, (HjL)-OCTATOK,CY=0-;ПРИЗНАК ПЕРЕПОЛНЕНИЯ ЧАСТ НОГО. ИСПОЛЬЗУЮТСЯ ВСЕ РЕ-ГГИСТРЫгГЛХБИНА СТЕКА 8.ИСПОЛЬЗУЮТСЯ ПОДПРОГРАММЫ f *Д216« г *ДОПВ* f *ДОПД« т *ДОПН*,»ПОСД*,*ПОСН*. !ОЦЕНКА:ДЛИНА-59 (+80 БАЙТ ПОДПРОГРАММ) БАЙТА, JВРЕМЯ-НЕ БОЛЕЕ 2300 ТАКТОВ (С УЧЕТОМ ПОДПРОГРАММ). Ж****************************************************** ;ПРОВЕРКА ЗНАКА ДЕЛИМОГО мои А,Н



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.0355
Яндекс.Метрика