I
itachi012587
Guest
Hallo!
Jeg fant en kode på internett, men jeg forstår ikke hvordan koden virker.Har noen en ide om hvordan koden fungerer?Vennligst forklare meg videre.
Takk.;------------------------------------------------- ---------------------------
B2_BCD BCF status, 0; fjerne bære bit
movlw ,16
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
;
decfsz teller, f; rutine for BCD konvertering
goto adjDEC
retlw 0
;
adjDEC movlw R2
movwf FSR
Ring adjBCD; ingen bank switching, alltid
;; Indirekte tilgang til RAM
movlw R1
movwf FSR
Ring adjBCD
;
movlw R0
movwf FSR
Ring adjBCD
;
goto loop16
;
adjBCD movlw 3
addwf 0, W
movwf temp
btfsc temp, 3; teste om resultatet> 7
movwf indf
movlw 30
addwf 0, W
movwf temp
btfsc temp, 7; teste om resultatet> 7
movwf indf; lagre som MSD
retlw 0
;------------------------------------------------- ---------------------------
; Ordne resultatet som siffer 1,2,3.
bcdsplit movf R1, w; ta første bit
andlw 0Fh; maske øvre bite
movwf digit1; sende vise rutine variabel.
movf R2, w; bringe den andre siffer!
andlw 0F0h; maske nedre bite.
movwf digit2; sende vise rutine variabel.
swapf digit2, f; etter swaping!
movf R2, w; Igjen bringe lowbyte
andlw 0Fh; maske øvre bite
movwf digit3, send det til å vise rutine variabel
return
Jeg fant en kode på internett, men jeg forstår ikke hvordan koden virker.Har noen en ide om hvordan koden fungerer?Vennligst forklare meg videre.
Takk.;------------------------------------------------- ---------------------------
B2_BCD BCF status, 0; fjerne bære bit
movlw ,16
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
;
decfsz teller, f; rutine for BCD konvertering
goto adjDEC
retlw 0
;
adjDEC movlw R2
movwf FSR
Ring adjBCD; ingen bank switching, alltid
;; Indirekte tilgang til RAM
movlw R1
movwf FSR
Ring adjBCD
;
movlw R0
movwf FSR
Ring adjBCD
;
goto loop16
;
adjBCD movlw 3
addwf 0, W
movwf temp
btfsc temp, 3; teste om resultatet> 7
movwf indf
movlw 30
addwf 0, W
movwf temp
btfsc temp, 7; teste om resultatet> 7
movwf indf; lagre som MSD
retlw 0
;------------------------------------------------- ---------------------------
; Ordne resultatet som siffer 1,2,3.
bcdsplit movf R1, w; ta første bit
andlw 0Fh; maske øvre bite
movwf digit1; sende vise rutine variabel.
movf R2, w; bringe den andre siffer!
andlw 0F0h; maske nedre bite.
movwf digit2; sende vise rutine variabel.
swapf digit2, f; etter swaping!
movf R2, w; Igjen bringe lowbyte
andlw 0Fh; maske øvre bite
movwf digit3, send det til å vise rutine variabel
return