From: Ken Mathis
;Purpose: Convert an 8 bit number to BCD ;so value can be sent to a 7447 seven segment display driver ;I/O pin hungry, requires 8 bits to send data out. ;temp1 holds binary value ;BCD result in temp1 ;$32 (50 decimal) becomes or %01010000 hex_to_bcd clr temp0 ;clear register convert inc temp0 ;increment number of 10s mov w,#$0A sub temp1,w ;subtract 10 from temp1 snc ;skip next instruction if underflow occurs jmp convert ;repeat mov w,#$A add temp1,w ;restore temp1. number of 1s after restored dec temp0 ;correction to the number of 10s swap temp0 ;swap upper and lower nibble of temp0 add temp1,temp0 ;place number of 10s in upper nibble of temp1 ret ;temp1 now hold BCD value of $32
Questions: