Эффективные алгоритмы для PIC18
автор Геннадий Чернов
Сравнение чисел со
знаком.
16х16 бит со знаком
;=========================================
srav_new ;
;
сравнение (2 байт) 16x16 бит со знаком
;
входные переменные Ah,Al и Bh,Bl
;
выходные биты сравнения
; =
RAV
;
>
BOL
; < MEN
; >= BOL_RAV
; <= MEN_RAV
clrf
flag_05
; флаги битов сранения
movf
Bh,w
;
subwf
Ah,w
;Вычитает WREG из регистра f
btfss
STATUS,Z
;
bra
conN
; числа не равны
movf
Bl,w
;
subwf
Al,w
;Вычитает WREG из регистра f
btfss
STATUS,Z
;
bra
conN
; числа не равны
bsf
RAV
;
bsf
MEN_RAV
;
bsf
BOL_RAV
;
return
;
conN
btfss STATUS,N
;
bra
$+.8
;
bsf
MEN
;
bsf
MEN_RAV
;
return
;
bsf
BOL
;
bsf
BOL_RAV
;
return
;
;=========================================
как применить код
- например;
movlw HIGH .2000
; загрузить в
переменную В константу 2000
movwf Ah
;
movlw LOW .2000
;
movwf Al
;
movlw HIGH -.1000
; загрузить в
переменную В константу -1000
movwf Bh
;
movlw LOW -.1000
;
movwf Bl
;
rcall srav_new
; сравнить
btfss BOL
;
bra
переход если A<B ...............
bra
переход если A>B
...............
или
rcall srav_new
; сравнить
btfss BOL_RAV
;
bra
переход если A<=B ...............
bra
переход если A>=B
...............
Алгоритм приведен для сравнения 16х16
бит, но его можно легко преобразовать для сравнения 8х8, 24х24, 32х32 и так
далее...
Для получения дополнительной информации используйте:
MAGETEX
Ukraine
Телефон: +380-50-575-98-63
Факс: +380-50-575-98-63
Интернет:
invent-systems@ya.ru
|