[an error occurred while processing this directive]
|
ldi r16, 64 ; movlw 64 ;количество разрядов исходного числа
sts temp1, r16 ; movwf temp1
num_a
ldi r16, 17 ; movlw 17 ;количество разрядов результата
sts temp2, r16 ; movwf temp2
ldi r30, low(buffer+17); movlw buffer+17 ;конец буфера результата (младший разряд)
; movwf FSR
rcall rlt1 ; call rlt1 ;здесь делаем сдвиг исходного числа влево
num_b
ld r16, -z ; decf FSR
rol r16 ; rlf INDF ;умножаем на два, прибавляя перенос
st z, 16 ; movf INDF,w
subi r16, -246 ; addlw 246 ;десятичная коррекция
brcs ??0 ; btfsc STATUS,C
st z, r16 ; movwf INDF
??0: lds r16, temp2 ; decfsz temp2
dec r16 ;
sts temp2, r16 ;
brne ; goto num_b
brcs error ; btfsc STATUS,C
; goto errorr
lds r16, temp1 ; decfsz temp1
dec r16 ;
sts temp1, r16 ;
brne num_a ; goto num_a
ret ; return
E-mail: info@telesys.ru