;****************************************************************** ; Преобразование из HEX в BCD ;****************************************************************** : ; данные для преобразования в R16 ( например 0xFF ) GO_HEX_BCD: LDI XL,LOW(124) mov R16, XL ; ; подпрограмма преобразования HEX_to_BCD: clr r17 ; Очищаем регистр сотен, десятков HEX_to_BCD_l0: subi R16,100 ; temp = temp — 100 brcs OUT_10 ; Прервать, если перенос установлен inc r17 ; прибавляем сотни в r17 rjmp HEX_to_BCD_l0 ; Проходим по циклу проверки заново OUT_10: SUBI R16,-100 ; восстановитб значение десятков и единиц SWAP r17 ; сотни в старшую тетраду B1: subi r16,10 ; temp = temp — 10 brcs HEX_to_BCD_OUT ; Прервать, если перенос установлен inc r17 ; Инкрементируем r17 rjmp B1 ; Проходим по циклу проверки заново HEX_to_BCD_OUT: SUBI R16,-10 ; R17 сотни десятки ; R16 единицы ret ;******************************************************************