Чтобы воспользоваться этой функцией, необходимо учесть, что десятичная цифра отличается от символа этой цифры на 30h, в чем легко убедиться, изучив таблицу кодов ASCII. Например, если искомый максимальный элемент записан в переменную max, то фрагмент программы для его вывода на экран дисплея может быть следующим:
tcifra: mov dl, max
add dl, 30h
mov ah,02h
int 21h
Приведенный фрагмент программы применим в случае, если максимальное значение элемента (max) является однозначным. Если элементы массива двухзначные (лежат в диапазоне от 10 до 99), то сначала необходимо выделить отдельные цифры, а затем последовательно их распечатать:
dwe_tcifr: mov al, max
cbw ;преобразуем байт в полное слово
div byte ptr c ;константа с объявлена в сегменте данных как c db 10
mov r,ah ;запоминаем младшую цифру в r, переменная r объявлена в сегменте данных как r db ?
mov dl,al ;старшую цифру помещаем в dl
add dl, 30h ;преобразуем цифру в символ
mov ah,02h ; и выводим ее на экран
int 21h
mov dl,r ;младшую цифру помещаем в dl
add dl, 30h ; и выводим ее на экран
int 21h
При реализации вывода следует учесть, что обращение к прерыванию int 21h изменяет содержание регистра АХ (“портит” регистр АХ), поэтому значения из этого регистра, которые будут обрабатываться далее в программе, необходимо сохранить в другом регистре или ячейке памяти.
Желательно включить в программу оба вышеприведенных фрагмента совместно с анализом результата, как показано ниже:
сmp max,c ;сравниваем значение тах с 10
jl tcifr ;если меньше, то одна цифра
dwe_tcifr: mov al, max ;иначе две цифры
далее по тексту фрагмент программы для вывода двух цифр
. . . . . . . ..
jmp kon_wyw
tcifra: mov dl, max