I
itachi012587
Guest
Здравствуйте!
Я нашел код в интернете, но я не понимаю, о том, как работает код.Кто-нибудь есть идеи о том, как работает код?Пожалуйста, объясните мне дальше.
Спасибо.;------------------------------------------------- ---------------------------
B2_BCD BCF STATUS, 0; четкое выполнение разрядных
MOVLW .16
MOVWF кол
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 кол-во, F; обычной для BCD преобразование
Перейти adjDEC
retlw 0
;
R2 adjDEC MOVLW
MOVWF FSR
adjBCD вызова; ни один банк не коммутация, всегда
;; Косвенного доступа к оперативной памяти
MOVLW R1
MOVWF FSR
вызова adjBCD
;
MOVLW R0
MOVWF FSR
вызова adjBCD
;
Перейти loop16
;
adjBCD MOVLW 3
addwf 0, W
Темп MOVWF
btfsc темп, 3; испытание, если результат> 7
MOVWF indf
MOVLW 30
addwf 0, W
Темп MOVWF
btfsc темп, 7; испытание, если результат> 7
MOVWF indf; Сохранить как MSD
retlw 0
;------------------------------------------------- ---------------------------
; Упорядочить результат в виде цифр 1,2,3.
bcdsplit R1 movf, W; принести первые грызть
andlw 0Fh; маску верхнего клев
MOVWF digit1; отправить для отображения обычной переменной.
movf R2, W; принести вторую цифру!
andlw 0F0h; маски нижнюю клев.
MOVWF digit2; отправить для отображения обычной переменной.
swapf digit2, F; после swaping!
movf R2, W, вновь довести lowbyte
andlw 0Fh; маску верхнего клев
MOVWF digit3; отправить его для отображения обычной переменная
возвращение
Я нашел код в интернете, но я не понимаю, о том, как работает код.Кто-нибудь есть идеи о том, как работает код?Пожалуйста, объясните мне дальше.
Спасибо.;------------------------------------------------- ---------------------------
B2_BCD BCF STATUS, 0; четкое выполнение разрядных
MOVLW .16
MOVWF кол
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 кол-во, F; обычной для BCD преобразование
Перейти adjDEC
retlw 0
;
R2 adjDEC MOVLW
MOVWF FSR
adjBCD вызова; ни один банк не коммутация, всегда
;; Косвенного доступа к оперативной памяти
MOVLW R1
MOVWF FSR
вызова adjBCD
;
MOVLW R0
MOVWF FSR
вызова adjBCD
;
Перейти loop16
;
adjBCD MOVLW 3
addwf 0, W
Темп MOVWF
btfsc темп, 3; испытание, если результат> 7
MOVWF indf
MOVLW 30
addwf 0, W
Темп MOVWF
btfsc темп, 7; испытание, если результат> 7
MOVWF indf; Сохранить как MSD
retlw 0
;------------------------------------------------- ---------------------------
; Упорядочить результат в виде цифр 1,2,3.
bcdsplit R1 movf, W; принести первые грызть
andlw 0Fh; маску верхнего клев
MOVWF digit1; отправить для отображения обычной переменной.
movf R2, W; принести вторую цифру!
andlw 0F0h; маски нижнюю клев.
MOVWF digit2; отправить для отображения обычной переменной.
swapf digit2, F; после swaping!
movf R2, W, вновь довести lowbyte
andlw 0Fh; маску верхнего клев
MOVWF digit3; отправить его для отображения обычной переменная
возвращение