Функция
IsHexadecimal проверяет, является ли заданный символ допустимым шестнадцатеричным числом (цифрой 0–9 или буквой A–F, a–f).
Параметры:Возвращаемое значение:- ZF = 1: Если символ является допустимым шестнадцатеричным числом.
- ZF = 0: Если символ не является допустимым шестнадцатеричным числом.
Состояние флагов:- Функция влияет на все флаги процессора.
Особенности:- Функция проверяет, находится ли символ в диапазоне ASCII-кодов цифр (30h–39h), заглавных букв (41h–46h) или строчных букв (61h–66h).
- Функция не изменяет значения регистров, кроме флагов.
- title Автор: Довгополов Евгений Сергеевич
- .model small
- .stack 100h
- data segment public
- ____true _db "TRUE\0"
- ____false db "FALSE\0"
- data ends
- code segment public ____________; Начало сегмента кода
- ____assume _ds:data, cs:code
- ____include Handyfar.inc________; Подключаем файл с функциями
- ____main proc __________________; Начало процедуры main
- ________call____SetDataSegment__; Вызываем процедуру SetDataSegment
- ________mov_____al, 0Eh_________; Копируем число 0Eh в регистр al
- ________call____IsHexadecimal___; Вызываем процедуру IsHexadecimal(al:'0Eh')
- ________jnz_____@False__________; ZF=0, то прыгаем на метку @False
- ____@True:
- ________lea_____ax, ds:[true]___; Загружаем адрес переменной true в регистр ds:ax
- ________jmp_____@Done___________; Выполняем безусловный переход на метку @Done
- ____@False:
- ________lea_____ax, ds:[false]__; Загружаем адрес переменной false в регистр ds:ax
- ____@Done:
- ________call____WriteString_____; Вызываем процедуру WriteString(ax)
- ________xor_____al, al__________; Обнуляем регистр al
- ________call____ExitProcess_____; Вызываем процедуру ExitProcess
- ____main endp __________________; Конец процедуры main
- code ends ______________________; Конец сегмента кода
- end main _______________________; Конец файла. Точкой входа указывается процедура main