• Главная • Назад •








Counter

 


Эффективные алгоритмы для 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
 

Главная | Назад
 
Отправить сообщение для: gchernov@mail.ru с вопросами и замечаниями об этом веб-узле.
© 2007 MAGETEX
Дата изменения: 23.08.2013