Предыдущий раздел РЕДАКТИРОВАНИЕ ИНФОРМАЦИИ В ОП Следующая глава

15.2. Установка курсора

Установку курсора в требуемую позицию на экране выполняет процедура 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.

 


Предыдущий раздел В начало Следующая глава