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

0E5Z

PUSH

гСОХРАНЕНИЕ ЗНАКА ДЕЛИМОГО

0В53

B2590B

ПЕР1

гЕСЛИ ЗНАК "+"

;ДОПОЛНЕНИЕ ДЕЛИМОГО

СВ56

СВЙ000

CALL

ДОПН

г(Н»Е)-ДОПОЛНИТЕЛЬНЫИ КОД

snPOBEPKA ЗНАКА ДЕЛИТЕЛЯ

0В59

ПЕР1: МОУ

A»B

OBSft

0B5B

PUSH

гСОХРАНЕНИЕ ЗНАКА ДЕЛИТЕЛЯ

0B5C

B2620B

ПЕР2

гЕСЛИ ЗНАК "+"

jДОПОЛНЕНИЕ ДЕЛИТЕЛЯ

0B5F

CD5000

CALL

ДОПВ

г(BfС)-ДОПОЛНИТЕЛЬНЫЙ код-

гДЕЛЕНИЕ БЕЗЗНАКОВЫХ ЧИСЕЛ

0B62

CB200B

ПЕР2! CALL

Д216

г(DjE)-wacthoe» аьЕ)-осТАТок

0B65

B2870B

гЕСЛИ ПЕРЕПОЛНЕНИЕ ЧАСТНОГО

гсдвиг ВПРАВО

ЧАСТНОГО И ОСТАТКА

0ВЙ8 0B6B

ПОСД

поен

;АНАЛИЗ ЗНАКОВ ДЕЛИМОГО и ДЕЛИТЕЛЯ

0B6E

гВОССТАНОВЛЕНИЕ ЗНАКА ДЕЛИТЕЛЯ

0B6F

BA7E0B

ПЕРЗ

гЕСЛИ ЗНАК "-"

0B72

F-OP

гВОССТАНОВЛЕНИЕ ЗНАКА ДЕЛИМОГО

0B73

D27C0B

ПЕР5

гЕСЛИ ЗНАКИ i+v*)

гДЕЛИМОЕ < ОТДЕЛИТЕЛЬ

> 0

0В7Й

CD5800

CALL

ДОПД

гДОПОЛНЕНИЕ ЧАСТНОГО

0B79

CD6000

ПЕР4: CALL

ДОПН

гДОПОЛНЕНИЕ ОСТАТКА

0B7C

HEPSs STC

гсу=1

0B7B

0B7E

гДЕЛИТЕЛЬ ( 0

ПЕРЗ: pop

гВОССТАНОВЛЕНИЕ ЗНАКА ДЕЛИМОГО.

0B7F

DA790B

ПЕР4

гЕСЛИ ЗНАКИ (-»-)

0B82

CB5800

CALL

ДОПД

гДОПОЛНЕНИЕ ЧАСТНОГО

0B85

гсу=1

0B86

гПЕРЕПОЛНЕНИЕ

ЧАСТНОГО

0B87

ПЕР: pop

0B88

гБАЛАНС СТЕКА

0B89

гсу=0

0B8A

0000

Программа обращается к подпрограмме беззнакового деления Д216, известным вспомогательным подпрограммам получения дополнительного кода ДОПВ, ДОПД, ДОПН и новым вспомогательным подпрограммам правого одноразрядного сдвига числа соответственно в регистровых парах (В, С), (D.E) и (Н, L):

0068

ORG 68Н

ПОСВ:

г»*»**»***»*»»»»»»»»»»»*»*****»»*»»*»»*»********»**»»»*»

гПОДПРОГРАММА ПРАВОГО ОДНОРАЗРЯДНОГО СДВИГА ЧИСЛА В РЕ-гГИСТРОВОЙ ПАРЕ (В,С).ВДВИГАЕТСЯ БИТ СУ=0.ЕСЛИ ВХОД В гПРОГРАММУ "HOCB-fH бит СУ=0 или 1»ЕСЛИ ВХОД -посв-н". гВХОДНОЙ ПАРАМЕТР:(В»о-ИСХОДНОЕ ЧИСЛО.ВЫХОДНОЙ ПАРА-



;«етр!(ВрС)-число после сдвига.используется регистр а.

гоценка:длина-8 байт,время-42 такта.

SCY=0

0068 AF

0069 78

.A>B

006А IF

006В 47

006С 79

006D IF

006Е 4F

006F С9

ПОСД!

;ПОДПРОГРАММА ПРАВОГО ОДНОРАЗРЯДНОГО СДВИГА ЧИСЛА В РЕ-;ГИСТРОВОЙ ПАРЕ (ВгЕ) .ВДВИГАЕТСЯ БИТ СУ=ОгЕСЛИ ВХОД В гПРОГРАММУ "ПОСД"»И бит CY=0 ИЛИ 1гЕСЛИ вход "ПОСД+1". ?ВХОДНО« ПАРАМЕТР:(ВгЕ)-ИСХОДНОЕ ЧИСЛО.ВЫХОЙНОЙ ПАРА-;МЕТР;(ВгЕ)-ЧИСЛО ПОСЛЕ СДВИГА.ИСПОЛЬЗУЁТСЯ РЕГИСТР А. ?ОЦЕНКА.ДЛИНА ЕАЙТгВРЕМЯ-42 ТАКТА.

гсу=0

0070 AF

0071 7А

0072 IF

0073 57

0074 7Е

0075 IF

0076 5F

0077 С9

ПОСН:

5 ПОДПРОГРАММА ПРАВОГО ОДНОРАЗРЯДНОГО СДВИГА ЧИСЛА В РЕ-:ГИСТРОВОЙ ПАРЕ (HrL).ВДВИГАЕТСЯ БИТ СУ=ОгЕСЛИ ВХОД В гПОДПРОГРАММУ "ПОСН",И БИТ СУ=0 или 1гЕСЛИ вход "ПОСН+1" ;ВХОДНОЙ ПАРАМЕТР:(HrL)-ИСХОДНОЕ ЧИСЛО.БЫХОДНОЙ ПАРА-;МЕТР:(НгЕ)-ЧИСЛО ПОСЛЕ СДВИГА.ИСПОЛЬЗУЁТСЯ РЕГИСТР А. !0ЦЕНКА:ДЛИНА-8 БАЙТгВРЕМЯ-42 ТАКТА.

;CY=o

0078 AF

0079 7С

007А IF

007В 67

007С 7D

007D IF

007Е 6F

007F С9

0000

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

4-1926



вого разряда знак минус вводится, если необходимо, дополнением частного или остатка. Тестовые данные программы приведены в табл. 1.22.

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

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

шсстЕтадцатеричЕЮе

десятичное

FF00:FE00=(4000, 0000) (-256):(-512)=(+0,5; 0)

F000:2000=(C000, 0000) (-4096):(Н-8192)=(-0,5; 0)

5555:АААА=(8002. ООО!) (+21845):(-21846)=(-0,99999;+

Н-0,00001)

7FFF:8000=(8001. 0000) (+32767):(-32768) = ( - 0,99999; 0)

4000:5000=(6666, 2000) (+16384):(+20480)=(+0,75; +

-1-0.25)

1.5.4. ДРОБНЫЕ ЧИСЛА СО ЗНАКОМ

1.5.4.1. Деление дробных чисел

Деление дробных чисел Z:Y в дополнительных кодах можно выполнять теми же методами, что и деление целых чисел со знаком, т. е. преобразованием в прямые коды, делением беззнаковых чисел и коррекцией результата с учетом знаков делимых чисел. Далее будет приведена программа ДДФ17, реализующая такой способ деления. Вместе с тем деление дробных чисел в дополнительных кодах можно выполнять и непосредственно, без предварительного преобразования их в прямые коды, а на основе модифицированного алгоритма деления без восстановления остатка [61]:

r2Qi ,-y, если 5(<Э, ,)=5(У);

l2Q, , + y, если S(Q, OS(y);

<\, если 5(<Э,) = 5(У);

to, если S{Qi)фS{Y),

где 5(Qi), 5(У) - знаки соответственно остатка Q; и делителя У; Qo = Z и 5(Qo) = S(Z). Иными словами, если делимое Z и делитель У представлены в дополнительных кодах, то на очередном i-м цикле деления делитель вычитается из удвоенного остатка, если знаки делителя и остатка (делимого) совпадают, и делитель складывается



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