ne_viens
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору 14 -> 0001 0100 это сжатый, несжатый будет 14 -> 00000001 00000100 da не работает после rlc, только после add, addc, subb Рабочий код: Код: ; AVR bin2BCD16() algo implementation ORG 0 ;--------------------- init mov R2, #0eeh ;in loByte mov R3, #0ddh ;in hiByte mov R4, #0 ;loOut (10 & 1) mov R5, #0 ;midOut(1000 & 100) mov R6, #0 ;hiOut (100000 & 10000) mov R7, #16 ;bit counter ;--------------------- shift bits in L1: mov A, R2 rlc A mov R2, A mov A, R3 rlc A mov R3, A mov A, R4 rlc A mov R4, A mov A, R5 rlc A mov R5, A mov A, R6 rlc A mov R6, A djnz R7, L2 ;is last bit? sjmp L6 ;yes, goto end ;--------------------- decimal adjust 3 output bytes L2: mov R0, #6 ;ptr out L3: mov A, @R0 add A, #3 jnb 0e3h, L4 ;is bit 3 of A set? mov @R0, A ;yes, add 3 L4: mov A, @R0 add A, #30h jnb 0e7h, L5 ;is bit 7 of A set? mov @R0, A ;yes, add 0x30 L5: dec R0 cjne R0, #3, L3 ;--------------------- next bit sjmp L1 L6: nop END | Код надо проверять в симуляторе, так как всегда будут ошибки. |