Ex. 111111 binärt = 63 ska göras om till två tal 110 (=6) och 11 (=3)
Lite jobbigt och göra en tabell med 65535 rader...

Kod: Markera allt
hun=0;
ten=0;
one=0;
while(bin>100)
{
hun++;
bin=bin-100;
}
while(bin>10)
{
ten++;
bin=bin-10;
}
one=bin;
Kod: Markera allt
movlw .15
movwf count
clrf R0
clrf R1
clrf R2
loop16 rlf L_byte, F
rlf H_byte, F
rlf R2, F
rlf R1, F
rlf R0, F
movlw 3
addwf R2,W
movwf temp
btfsc temp,3 ; test if result > 7
movwf R2
movlw 30
addwf R2,W
movwf temp
btfsc temp,7 ; test if result > 7
movwf R2 ; save as MSD
movlw 3
addwf R1,W
movwf temp
btfsc temp,3 ; test if result > 7
movwf R1
movlw 30
addwf R1,W
movwf temp
btfsc temp,7 ; test if result > 7
movwf R1 ; save as MSD
movlw 3
addwf R0,W
movwf temp
btfsc temp,3 ; test if result > 7
movwf R0
movlw 30
addwf R0,W
movwf temp
btfsc temp,7 ; test if result > 7
movwf R0 ; save as MSD
decfsz count, F
goto loop16
rlf H_byte, F
rlf R2, F
rlf R1, F
rlf R0, F
Den är ju ganska snabb ja. Satt och funderade lite och kom på en som kanske är ännu snabbare:evert2 skrev: OM talet är större än tiotusen minskas värdet i registret med tioitusen.......och i ett annat register/address inkremeras värdet med ett...........