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

15.3. Выполнение команды

Для выполнения любой из четырех своих команд, выполняющих управление курсором, процедура Edit_sector вызывает свою дочернюю процедуру Edit_command. Алгоритм данной процедуры аналогичен алгоритму ранее разработанного интерпретатора команд – Command. Более того, идентичны тексты этих процедур. Идентичны и структуры используемых таблиц переходов. Естественно, что эти таблицы различаются числом строк, а также именами вызываемых процедур.

Имена процедур в новой таблице переходов: Cur_right (сдвиг курсора вправо), Cur_left (сдвиг курсора влево), Cur_top (сдвиг курсора вверх), Cur_down (сдвиг курсора вниз). Вот тексты двух из четырех процедур:

 

;        Перемещение курсора на одну позицию влево

;

Cur_left:

                  cmp   [Nt], byte 0

                   je       .M1

                  dec    byte[Nt]

                  jmp    .Exit

.M1:          inc     byte[Nt]

                 dec    byte[B]

.Exit:         call    Set_cursor

                 ret

;        Перемещение курсора на одну позицию вверх

;

Cur_top:

                   sub    [B], byte 16

                   call    Set_cursor

                   ret

 

Тексты двух других процедур Cur_right и Cur_down очень похожи, соответственно, на тексты процедур Cur_left и Cur_top.

Обратите внимание, что в данных процедурах нет проверок достижения переменной B своих крайних значений 0 и 255. Это объясняется тем, что длина данной переменной 1 байт, и поэтому при попытке уменьшить значение 0 в переменную будет записано число 255. А при попытке увеличить значение 255 в переменную будет записано число 0. Подобные изменения переменной B приведут к правильным перемещениям курсора на экране.

П о л у ч и т е  исходный текст процедуры Edit_command и добавьте его в файл Disp_sec.asm. Исходные тексты процедур Cur_right, Cur_left, Cur_top, Cur_down добавьте в файл Cursor.asm.

 


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