*Mario*
21.06.2006, 10:40
Hallo zusammen,
ich dachte nicht, dass ich jemals ein Problem haben werde zwei zahlen zu vergleichen. Allerdings wenn man zu signed integers schaut, dann habe ich festgestellt, das der vergleich zweier Zahlen keineswegs tivial ist.
Ich habe für zwei signed 1-Byte Werte die folgende Sequenz:
movf b,w ; if ( a < b )
xorwf a,w
andlw 0x80
btfsc STATUS,Z ; Bit 7 set, if yes then skip next command.
goto $+3
rlf b,w
goto $+3
movf b,w
subwf a,w
btfss STATUS,C
goto do_else ; Condition false
do_true
movf a,w ; Condition true.
movwf b
do_else ; Condition false
...
Hat jemand von euch ein eine bessere (=kürzere) Variante?
Grüße
Mario
ich dachte nicht, dass ich jemals ein Problem haben werde zwei zahlen zu vergleichen. Allerdings wenn man zu signed integers schaut, dann habe ich festgestellt, das der vergleich zweier Zahlen keineswegs tivial ist.
Ich habe für zwei signed 1-Byte Werte die folgende Sequenz:
movf b,w ; if ( a < b )
xorwf a,w
andlw 0x80
btfsc STATUS,Z ; Bit 7 set, if yes then skip next command.
goto $+3
rlf b,w
goto $+3
movf b,w
subwf a,w
btfss STATUS,C
goto do_else ; Condition false
do_true
movf a,w ; Condition true.
movwf b
do_else ; Condition false
...
Hat jemand von euch ein eine bessere (=kürzere) Variante?
Grüße
Mario