Можно сделать так ;//
;// ** InRange -- функция выполняет проверку значения аргумента value на принадлежность его
;// диапазону low … high. Возвращает значение TRUE, если значение value находится
;// в заданном диапазоне. В противном случае возвращает значение FALSE.
;//
;bool InRange (char value, char low, char high)
;
RSEG CODE
PUBLIC InRange
InRange:
;
; Аргументы:
; value - r16;
; low - r17;
; high - r18.
; {
; if (value>=low && value<=high) // Значение value лежит внутри диапазона low…high,
cp r16, r17 ; Проверка нижней границы
brlt f_label ; значение value меньше low
cp r18, r16 ; Проверка верхней границы
brlt f_label ; значение value больше high
; return TRUE; //
ret$T
; return FALSE; // Значение value вне заданного диапазона
f_label:
ret$F
; }
Только нужно определить макрокоманды ret$F, ret$T. Например, так
ret$F MACRO ; Выход с возвратом FALSE
clt ; Сбросить флажок T
ret ; и выход
ENDM
ret$T MACRO ; Выход с возвратом TRUE
set ; Установить флажок T
ret ; и выход
ENDM