Предыдущий раздел | РЕДАКТИРОВАНИЕ ИНФОРМАЦИИ В ОП | Следующая глава |
Установку курсора в требуемую позицию на экране выполняет процедура Set_cursor. Данная процедура преобразует одну пару чисел (B, Nt) в другую пару чисел ((DL), (DH)), где B – номер байта в переменной Sector, Nt – номер тетрады в байте, (DL) – координата курсора на экране по горизонтали, (DH) – координата курсора на экране по вертикали. В завершении процедура обращается к BIOS с целью установить курсор в точку экрана с заданными координатами.
Для установки курсора используется системный вызов “int 10h” (функция 2, подфункция 0). Этот системный вызов требует предварительной записи в регистры:
DL – координаты курсора на экране по горизонтали;
DH – координаты курсора по вертикали;
BX – номер видеостраницы. Далее везде будет использоваться видеостраница 0.
Алгоритм процедуры Set_cursor приведен на рис.50.
На первом этапе алгоритма в регистр DH загружается номер строки дампа сектора (не путать со строкой экрана, номер которой еще предстоит получить). Для этого номер байта в секторе B делится на число байтов в строке, то есть на число 16. Такое деление рекомендуется выполнить путем сдвига содержимого регистра на четыре бита вправо.
На втором этапе в DL загружается номер байта в строке. Этот номер есть разность между номером байта в переменной Sector (переменная B) и таким же номером последнего байта в последней полностью заполненной строке. Последний номер нетрудно получить сдвигом влево на четыре бита полученного на первом этапе номера строки дампа.
Рис. 50. Алгоритм процедуры Set_cursor
Где:
DL – координата курсора на экране по горизонтали
DH – координата курсора на экране по вертикали
B – номер байта в переменной Sector
Nt – номер тетрады в байте (0 – первая, 1 – вторая)
Далее производится преобразование номера байта в строке дампа в номер символа на строке экрана. Для этого на следующем этапе алгоритма полученный ранее номер в строке дампа умножается на три (два символа есть шестнадцатеричные цифры для двух тетрад байта, а один символ – пробел). Далее к полученному номеру прибавляется величина Nt для того, чтобы курсор указывал на требуемую тетраду байта.
Далее все изображение дампа сдвигается ближе к центру экрана. Для этого к DL прибавляется 7, а к DH 8. Завершает работу по перемещению курсора соответствующий системный вызов.
П о л у ч и т е исходный текст процедурыSet_cursor и добавьте его в файл Cursor.asm.
Предыдущий раздел | В начало | Следующая глава |