|
... вам нужно написать процедуру преобразования байта (bin) в двоично-десятичное число (dec). Если я все правильно понял. Процедура эта не сложная, и я бы посоветовал вам самому с ней разобраться. Для начинающего программиста это очень полезное упражнение.
Можно попробовать "в лоб" делением на 100 и на 10, но есть и более быстрый алгоритм, сдвиг-сложение с константой.
//------------------------------------------------
Отправлено Сергей Борщ 08 февраля 2000 г. 21:03:14
В ответ на: Математика MCS51 отправлено V-tek 07 февраля 2000 г. 23:32:31
Вариант1:
1) Очистить результат
2) сдвинуть исходное число влево (старший бит- попадает в С)
3) Сложить результат сам с собой с учетом С (ADDC для 8051)
4) повторить [2-3] столько раз, сколько бит в исходном числе.
Вариант2:
;--------------------------------------------------------------
;A simple algorithm to convert binary to BCD is:
;1. Add 3 to every BCD nibble that's >=5
;2. Shift left
;Repeat until binary portion is all 0000
;Example: Convert $F9 to BCD
;0000 0000 0000 : 1111 1001
;0000 0000 0001 : 1111 0010 (shift left)
;0000 0000 0011 : 1110 0100 (shift left)
;0000 0000 0111 : 1100 1000 (shift left)
;0000 0000 1010 : 1100 1000 (add 3)
;0000 0001 0101 : 1001 0000 (shift left)
;0000 0001 1000 : 1001 0000 (add 3)
;0000 0011 0001 : 0010 0000 (shift left)
;0000 0110 0010 : 0100 0000 (shift left)
;0000 1001 0010 : 0100 0000 (add 3)
;0001 0010 0100 : 1000 0000 (shift left)
;0010 0100 1001 : 0000 0000 (shift left)
;And the left now holds BCD 249.
;MUCH easier than messing with IDIV and FDIV!!!
Успехов!
//------------------------------------------------
E-mail: info@telesys.ru