Доставка цветов в Севастополе: 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Е61 67 MOV H.A

0E62 6F MOV LrA

0E63 50 HOV DrB

59 MOV E.C г (ПтЕ)-ИСХОДНОЕ ЧИСЛО

0Е65 4F MOV CrA

0E66 0610 MVI Br 16 гСЧЕТЧИК циклов

гСЯБИГ двоичного ЧИСЛА ВЛЕВО

0Е68 ЕВ цикл: XCHG

0Е69 29 ПАВ Н

0Е6А ЕВ XCHG

гДВОИЧНО-ДЕСЯТИЧНОЕ УДВОЕНИЕ СУММЫ С УЧЕТОМ ПЕРЕНОСА

0Е6В 7В MOV ArL

0Е6С 8В ABC L

0Е6В 27 DAA

0Е6Е 6F мои LrA

0E6F 7С HOV ArH

0Е70 8С ADC Н

0Е71 27 DAA

0Е72 67 HOV HrA

0E73 79 HOV ArC

0E74 89 • ADC С

0E75 27 DAA

0E76 4F HOV CrA

гПРОВЕРКА КОНЦА ЦИКЛА

0E77 05 DCR В

0E78 C2680E JNZ ЦИКЛ гЗАЦИКЛИВАНИЕ

0Е7В 79 MOV ArC

0Е7С С9 RET

0000 END

Программа заканчивает вычисления через 16 циклов сдвигов и сложений. Сопоставляя программы П810 и П1610, можно заметить, что увеличение в два раза разрядности обрабатываемых чисел приводит почти к трехкратному росту времени обработки. Время преобразования двухбайтных двоичных чисел можно немного сократить (увеличив затраты памяти), если вместо вычисления выражения (3.2) непосредственно использовать вычисление по формуле (3.3) с табличным заданием двоичных значений десятичных степеней: 10io = OOOi6; 10fo = = 0064,6; 10?о=ОЗЕ8,б; 101о= 2710,6. При этом, например, вычисление старшего коэффициента щ сводится к последовательному вычитанию степени Ю"* из исходного двоичного числа Лг вплоть до получения отрицательного остатка. Количество выполненных вычитаний (за исключением последнего), очевидно, дает значение цифры 04. Последний отрицательный остаток необходимо восстановить и использовать его аналогично ранее указанному для вычисления очередной цифры аз и т. д. При программной реализации этого метода проще использовать вместо операции вычитания десятичных степеней суммирование



с дополнительными двоичными кодами этих степеней: [101о]д=РРР6Н; [10?о]д=РР9СН; [10!о]д= FC18H; [101о]д= D8F0H. Данный алгоритм реализует программа П1610А:

0е80 оево

0Е80 60 0Е81 69

0Е82 11F0D8 0Е85 СВЕООЕ 0Е88 F5

0Е89 111BFC 0Е8С CDB00E

0E8F 07 0Е90 07 0Е91 07 0Е92 07 0Е93 47

0Е94 119CFF 0Е97 CDBOOE 0Е9А ВО 0Е9В 47

0Е9С 11F6FF 0E9F СВВООЕ

0ЕА2 07 ОЕАЗ 07 0ЕА4 07 0ЕА5 07 0ЕА6 В5 0ЕА7 6F 0ЕА8 60 0ЕА9 F1 ОЕАА С9 0000

ORG 0Е80Н «10 SET ОЕВОН

П1610А!

гПОДПРОГРАММА ПРЕОБРАЗОВАНИЯ ДВОИЧНОГО «ЕЛОГО БЕЗЗНА-

SKOBOro ЧИСЛА ФОРМАТА 16 Б ДВОИЧНО-ДЕСЯТИЧНОЕ <КОД

!8421> ЧИСЛО ФОРМАТА 5*4.ВАРИАНТ А.

гВХОДНОИ ПАРАМЕТР:(БрС)-ДВОИЧНОЕ ЧИСЛО.ВЫХОДНЫЕ ПА-

;РАМЕТРЫ:<А»Н,и>-ЭКВИВАЛЕНТНОЕ ДВОИЧНО-ДЕСЯТИЧНОЕ ЧИС-

;Л0 <Р4РЗР2Р1Р0).ИСПОЛЬЗУЮТСЯ ВСЕ РЕГИСТРЫ.ИСПОЛЬЗУ-

;ЕТСЯ подпрограмма «то».глубина стека-4.

;ОЦЕНКА:ДЛИНА-43 БАЙТ (+16 БАЙТ ПОДПРОГРАММЫ).БРЕМЯ-

JHE БОЛЕЕ 1329 ТАКТОВ (С УЧЕТОМ ПОДПРОГРАММЫ).

MOD Н.В

MOV L.C ; (H.L)-ДВОИЧНОЕ Ч!1СЛ0

;ВЫЧИСЛЕНИЕ ЦИФРЫ Р4 В РАЗРЯДЕ 04=10000

LXI D.0D8F0H (ДОПОЛНИТЕЛЬНЫЙ КОД 04

CALL то ; (А)-ЦИФРА P4.(H.L)-ОСТАТОК

PUSH PSW (СОХРАНИТЬ ЦИФРУ (ВЫЧИСЛЕНИЕ ЦИФРЫ РЗ В РАЗРЯДЕ 03=1000

LXI D.0FC18H (ДОПОЛНИТЕЛЬНЫЙ КОД 03

CALL то ((А)-ЦИФРА РЗ. (H.L)-ОСТАТОК

(УПАКОВКА ЦИФРЫ РЗ Б СТАРШУЮ ТЕТРАДУ (вн)

MOV В.А (ВЫЧИСЛЕНИЕ ЦИФРЫ Р2 Б РАЗРЯДЕ 02=100

LXI B.GFF9CH (ДОПОЛНИТЕЛЬНЫЙ КОД 02

CALL то ((А)-ЦИФРА Р2. (H.L)-ОСТАТОК

ORA Б

MOV В.А ((В)-ЦИФРЫ (РЗР2)

(ВЫЧИСЛЕНИЕ ЦИФРЫ Р1 Б РАЗРЯДЕ 01=10

LXI D.0FFF6H (ДОПОЛНИТЕЛЬНЫЙ КОД 01

CALL то ((А)-ЦИФРА Pl.(L)-ЦИФРА РО

(УПАКОВКА ЦИФР Р1Р0 Б (L)

ORA L

MOV L.A

MOV Н.В

POP PSU RET END

((L)-ЦИФРЫ (PlPO) !(H)-ЦИФРЫ (P3P2) ;(A)-ЦИФРА P4

Программа последовательно вычисляет двоично-десятичные цифры 04=4, аз = Яз, 02 = 2, Щ-Ри Ой-Ро



и упаковывает их в пятиразрядный формат двоично-десятичного числа. При этом для вычисления очередной цифры она обращается к подпрограмме Ц10:

ОЕБО

ОЕВО ОЕОО

0ЕВ2 19 ОЕВЗ ОС 0ЕВ4 BABZOE

0ЕВ7 ОП 0ЕВ8 7D 0ЕВ9 93 ОЕВА 6Р ОЕВВ 7С ОЕВС 9А ОЕВВ 67 ОЕВЕ 79 OEBF С9 0000

ORG оевон

;»»»»«»»»»«#»»»»»»»»»»»»»»»»»«»»»»»»»»»»»»»»»»»«»»»»»»»* ;подпрограмма вычисления двоично-десятичной «ифры в за-;данном десятичном разряде числа,эквивалентного шелому ;беззнаковому двоичному числу формата 16. гВХОДНЫЕ параметры: (HiL.)-двоичное число. (B.EJ-KOHCTAHTA г (дополнительный коя двоичного числа.эквивалентного за-гДАННОМУ весу 10.100.1000.10000 десятичного разря.ва.ис-гХОДНОЕ число должно быть не еолее 9-кратного значения гПРЯМОГО кода веса).выходные параметры:(а)-двоичн0~йе-гСЯТИЧНАЯ цифра.(H.L)-двоичный остаток.используется ре-гГИСТР с.сохраняется (в.е).

гОЦЕНКА:длина-16 байт.время-не еолее 280 тактов. ;»»»»#»#»«««»»«»«»»»»»*»#««««»»««»»»«»»»»»»««»»»«»»»»»»»

MUI со гОЕНУЛЕНИЕ цифрн

г двоичное сложение (вычитание ПРЯМОГО кода КОНСТАНТЫ) цикл: вав в

INR с гУВЕЛИЧЕНИЕ цифры

JC цикл гЕСЛИ разность ) о

гкоррекция цифры и восстановление остатка

SBB MOV

RET-END

a.l Е

l.a а.н

Н.А А.С

гУНЕНЬШЕНИЕ ЦИФРЫ

г(h.l)-двоичный остаток г.(а)-цифра

Программа ЦЮ выполняет вычитание десятичной степени из остатка двоичного числа, формирует очередную двоично-десятичную цифру и восстанавливает отрицательный остаток двоичного числа. Программа П1610А совместно с подпрограммой ЦЮ осуществляет преобразование на 8 % быстрее, чем П1610, но требует на 100 % больше затрат памяти. Для тестирования программ П810, П1610 и П1610А можно использовать данные таблиц из прил. 2.

3.4. преобразования дробных десятичных чисел в двоичные

Для программной реализации перевода десятичных дробей в двоичные целесообразно использовать метод (3.5). Однако, поскольку ранее получены программы



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