
Описание блоков программы:
БЛОК №1 (строки 25-27)
Запись регистров DS и AX в стек.
БЛОК №2 (строки 29-30)
Настройка сегментного регистра данных DS.
БЛОК №3 (строки 32-34)
Вывод на экран сообщения MES1 по функции 09H прерывания 21H (регистр DX – адрес выводимой строки с символом '$' на конце).
БЛОК №4 (строки 36-38)
Вывод на экран сообщения MES2 по функции 09H прерывания 21H (регистр DX – адрес выводимой строки с символом '$' на конце).
БЛОК №5 (строки 40-42)
Ввод с клавиатуры строки tabs из 20 символов (10 слов) по функции 0AH прерывания 21H. Регистр DX – буфер для вводимой строки, содержащий следующие байты:
1-й байт – размер буфера для ввода (формирует пользователь);
2-й байт – число фактически введенных символов (без учета символа 0DH);
3-й байт и далее – введенная строка с символом 0DH на конце.
БЛОК №6 (строки 44-46)
Вывод на экран сообщения MES3 по функции 09H прерывания 21H (DX – адрес выводимой строки с символом '$' на конце).
БЛОК №7 (строки 48-50)
Ввод с клавиатуры строки FAM из 20 символов (10 слов) по функции 0AH прерывания 21H.
БЛОК №8 (строки 52-54)
Подготовка регистров к проведению цикла сравнения строк FAM и TABS (сравнение ASCII-кодов символов) и записи результата в строку DIM.
БЛОК №9 (строки 56-66)
Проведение цикла сравнения строк FAM и TABS: строки сравниваются по словам (по 2 символа) и в случае совпадения ASCII-коды этих символов записываются в строку DIM. Если пары символов отличаются, то в строку DIM записывается 3030H (30H – код нуля).
БЛОК №10 (строки 68-75)
Очистка экрана путем его прокрутки вверх по функции 06H прерывания 10H
(CX=0000 – левый верхний угол экрана, DX=2580 – правый нижний угол экрана).
БЛОК №11 (строки 77-80)
Установка курсора в позицию 00:00 по функции 02H прерывания 10H (BH –страница, DH – строка, DL – столбец).БЛОК №12 (строки 82-84)
Вывод на экран сообщения MES4 по функции 09H прерывания 21H (DX – адрес выводимой строки с символом '$' на конце).
БЛОК №13 (строки 86-98)
Вывод строки DIM на экран с использованием процедуры PRINT, в которую передаются 2 параметра: регистр AX содержит ASCII-коды 2 символов, регистр BL – цветовой байт. Формат цветового байта (байт-атрибут):
Действие Мигание R G B Яркость R G B
Н
омер
бита 7 6 5 4 3 2 1 0
Фон Символ
Символы выводятся на экран парами, причем пары с нечетными номерами выделяются красным цветом, а пары с четными номерами отображаются на синем фоне.
БЛОК №14 (строка 105)
Запись регистра AX в стек.
БЛОК №15 (строки 107-110)
Вывод на экран символа по функции 09H прерывания 10H (ASCII-код символа хранится в AL, BH – номер страницы, CX – число повторений символа).
БЛОК №16 (строки 112-114)
Определение положения курсора по функции 03H прерывания 10H (результат записывается в регистр DX: DH – строка, DL – столбец).
БЛОК №17 (строки 116-119)
Сдвиг курсора на 1 позицию по функции 02H прерывания 10H (BH –страница, DH – строка, DL – столбец).
БЛОК №18 (строки 121-122)
Восстановление регистра AX из стека; обмен AH и AL для вывода на экран второго символа из AX.
БЛОК №19 (строки 124-126)
Вывод на экран символа по функции 09H прерывания 10H (ASCII-код символа хранится в AL, BH – номер страницы, CX – число повторений символа).
БЛОК №20 (строки 128-130)
Определение положения курсора по функции 03H прерывания 10H (результат записывается в регистр DX: DH – строка, DL – столбец).
БЛОК №21 (строки 132-135)
Сдвиг курсора на 2 позиции по функции 02H прерывания 10H (разделение пар символов 1 пробелом).
Вывод
Научились анализировать ход выполнения программы на языке Ассемблера при помощи отладчика TurboDebugger.