|
Главная -> Появление первого микропроцессора 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
Программа распаковывает исходное двоично-десятичное число отдельно на его младшую (МЛЦ) и старшую (СТЦ) десятичные цифры, а затем умножает СТЦ на 10 и суммирует произведение с МЛЦ. После распаковки СТЦ она имеет в рамках двоичного байта значение СТЦХ Х2. Умножение этой цифры на 10 производится с помощью последовательности сдвигов и сложений в двоичной системе: СТЦ • 10 = СТЦ (2=* -- 2). Программа П1016 преобразует четырехразрядное десятичное число Л10 е [0000,9999] в эквивалентное двухбайтное двоичное число Л2 е [0000,270FH] по методам (3.1), (3.2): ОЕОО ОЕЮ 78 0Е11 С5 0Е12 СВОООЕ 0Е15 С1 0Е16 2600 0Е18 6F 0Е19 29 0Е1А Е5 0Е1В В1 0Е1С 29 ORG 0Е10Н m08 SET ОЕООН П1016: (ПОДПРОГРАММА ПРЕОБРАЗОВАНИЯ ДВОИЧНО-ДЕСЯТИЧНОГО (КОД (8421) БЕЗЗНАКОВОГО ЧИСЛА ФОРМАТА 4*4 В ДВОИЧНОЕ ЧИСЛО (ФОРМАТА 16. (ВХОДНОЙ ПАРАМЕТР:(ВгС)-ДВОИЧНО-ДЕСЯТИЧНОЕ ЧИСЛО (РЗР2 (Р1Р0) .выходной ПАРАМЕП=-: (H»L)-ЭКВИВАЛЕНТНОЕ ДВОИЧНОЕ (ЧИСЛО.ИСПОЛЬЗУЮТСЯ РЕГИСТРЫ (СтЕ)»(А).ГЛУБИНА СТЕКА-4. (ИСПОЛЬЗУЕТСЯ ПОДПРОГРАММА *П108«. (ОЦЕНКА:ЙЛИНА-40 БАЙТОВ (+14 БАЙТ ПОДПРОГРАММЫ)гВРЕМЯ-(334 ТАКТОВ (С УЧЕТОМ ПОДПРОГРАММЫ). (§(«»»»«»»»«»«»«»«»»««»»«»««)()!»)! )(Х««)(»»«КК)(«»«К«««»»«К§(»* (ВЫЧИСЛЕНИЕ ВЫРАЖЕНИЯ 01=(РЗ«10+Р2) MOV АгВ ((А)-ЧИСЛО (РЗР2) PUSH В CALL П108 ((А)-ДВОИЧНОЕ ЧИСЛО 01 POP В (ВЫЧИСЛЕНИЕ ВЫРАЖЕНИЯ 01*10 PUSH ((H.L)-Ol ((H.L)-01*2 ((В.Е)-01*2
Исходное десятичное число представляется, согласно методу (3.2), в виде Л ю = ((Рз Ю-(-Р2) • 10-Ь Р,) • 10-(-+ Ро, где Pi - десятичные цифры. Для вычисления выражения в первых скобках используется подпрограмма П108. При выполнении последующих вычислений производятся распаковка двух младших PiPo цифр числа, сложение и умножение на 10 по правилу 10=8-(-2 с применением команд двухбайтного сложения. Для тестирования программ П108 и П1016 можно использовать данные таблиц, приведенных в прил. 2. 3.3. преобразования целых двоичных чисел в десятичные Программа П810 преобразует однобайтное двоичное число Л2е[00,РРН] в эквивалентное трехразрядное десятичное число Люе [ООО, 255] по методам (3.1), (3.2): 0Е40 ORG 0Е40Н П810: г»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»и»и»»»)(»»»»»»»»»)(»»н»к гПОДПРОГРАММА ПРЕОБРАЗОВАНИЯ ДВОИЧНОГО ЦЕЛОГО БЕЗЗНА-гКОБОГО ЧИСЛА ФОРМАТА 8 В ДВОИЧНО-ДЕСЯТИЧНОЕ (КОД f8421) ЧИСЛО ФОРМАТА 3*4. гВХОДНОЙ ПАРАМЕТР:(С)-ДВОИЧНОЕ ЧИСЛО.ВЫХОДНОЙ ПАРАМЕТР: ?(H»L)-ЭКВИВАЛЕНТНОЕ ДВОИЧНО-ДЕСЯТИЧНОЕ ЧИСЛО (3 ЦИФРЫ). (ИСПОЛЬЗУЮТСЯ РЕГИСТРЫ В.АгСОХРАНЯЕТСЯ <С>. (0«ЕНКА:ДЛИНА-21 БАЙТ»ВРЕМЯ-547 ТАКТОВ. S »»»»***»*»»»»»»»»»»»»»* »»»»»»»»*»»»»)(»»»»»»»»»»)Hf»»»»»»
Программа вычисляет выражение (3.2) путем последовательного сдвига двоичного числа влево. При этом значение признака переноса CY совпадает со значением очередной выдвинутой старшей двоичной цифры: СУ = = Gn-i, где п = 8, i=\, 2, 8. Умножение на основание R = 2 и сложение с очередной цифрой двоичного числа производятся методом двоично-десятичного сложения. Вычисление заканчивается через 8 циклов сдвигов и сложений. Программа ПГ610, как и программа П810, преобразует двухбайтное двоичное число Лг е [0000, FFFFH] в эквивалентное пятиразрядное десятичное число Лю е е [00000, 65535] по методам (3.1), (3.2): 0Е60 0Е60 AF 152 ORG 0Е60Н П1610! (»»»»K»»»»»»»»»»»»»»»»»»»»f»»»f««»»»f*»»»f»f»»»»*»»»» (ПОДПРОГРАММА ПРЕОБРАЗОВАНИЯ ДВОИЧНОГО ЦЕЛОГО БЕЗЗНА-(КОВОГО ЧИСЛА ФОРМАТА 16 Б ДВОИЧНО-ДЕСЯТИЧНОЕ (КОД (8421) ЧИСЛО ФОРМАТА 5x4. (ВХОДНОЙ ПАРАМЕТР:(Б.С)-ДВОИЧНОЕ ЧИСЛО.ВЫХОДНЫЕ ПАРА-(МЕТРЫ!(АтНгЕ>-ЭКБИБАЛЕНТНОЕ ДВОИЧНО-ДЕСЯТИЧНОЕ ЧИСЛО ((5 ЦИФР).ИСПОЛЬЗУЮТСЯ ВСЕ РЕГИСТРЫ. (ОЦЕНКА:ДЛИНА-29 ЕАЙТтБРЕМЯ-1443 ТАКТА. (»»»»)(»»»»»К»»)(»»»»»«»ЖК»»»»«»»»»»»»»Я**»»К»»»»»И)(»*»»*»* (ОБНУЛЕНИЕ ТЕКУЩЕЙ СУММЫ (СгНтЕ) XRA А 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.0303 |
|