Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Программирование EGA и VGA

Вызов функции 2:Установка позиции курсора.

Комментарии

Выдает координаты для позиционировании курсора на экране. Строка 0 является самой верхней строкой экрана, столбец 0 - самым левым столбцом экрана.

Исходные данные

Регистры (устанавливаются до вызова функции):

  • AH: устанавливается 2
  • DH: номер текстовой строки экрана
  • DL: номер текстового столбца экрана
  • BH: номер страницы (см.функцию 5)

Приведенная ниже программа устанавливает курсор на строку 5 столбца 10 страницы 0.

Пример на ассемблере:

        code    segment public
                assume  CX:code
         main   proc    far
         start: push    DS
                sub     AX,AX
                push    AX
                mov     AH,2   ;функция 2 - установка позиции курсора
                mov     DH,05  ;текстовая строка 5
                mov     DL,0ah ;текстовый столбец 10
                mov     BH,0   ;страница 0
                int     10h    ;обращение к видео-BIOS
                ret
         main   endp
         code   ends
         end    start

Пример на языке Turbo-Pascal:

    type
        regs = record
                    AX,BX,CX,DX,BP,SI,DI,DS,ES,
                    FLAGS:INTEGER;
        end;
     var
        reg : regs;
     begin
        reg.AX:=$0200;
        reg.DX:=$050a;
        reg.BX:=$0000;
        intr($10,reg);
    end.

Вызов функции 3: Чтение позиции курсора.

Комментарии

Возвращает текущие координаты курсора на экране. Также возвращает текущий тип курсора (см. функцию 1).

Исходные данные

Регистры (устанавливаются до вызова функции):

  • AH: устанавливается 3
  • BH: номер страницы (см. функцию 5)

Выходные данные

Регистры (опрашиваются после вызова функции):

  • DH: текущая текстовая строка курсора
  • DL: текущий текстовый столбец курсора
  • CH: начальная линия в текстовой строке
  • CL: конечная линия в текстовой строке

В приведенном ниже примере осуществляется установка курсора в текстовую позицию (столбец) 10 текстовой строк 5 на странице 0 и печать сообщения, содержащего новые координаты курсора, с текущей его позиции.

Пример на языке ассемблера:

        data     segment public
                 msg     db 'The cursor is at row '
                        db 'and column '
         data    ends
         code    segment public
                 assume  CX:code
         main    proc    far
         start:  push    DS
                 sub     AX,AX
                 push    AX
                 mov     AX,data
                 mov     DS,AX
                 assume  DS:data
                 mov     AH,2    ;функция 2 - установка позиции курсора
                 mov     DH,05   ;текстовая строка 5
                 mov     DL,0ah  ;текстовый столбец 10
                 mov     BH,0    ;страница 0
                 int     10h     ;обращение к видео-BIOS
                 mov     AH,3    ;функция 3 - чтение позиции курсора
                 mov     BH,0    ;страница 0
                 int     10h     ;обращение к видео-BIOS
                     ;DL теперь содержит номер текстовой строки курсора
                    ;DH содержит номер текстового столбца курсора
                 mov     AL,DL   ;переместить столбец в AL
                 mov     BX,offset msg[35] ;смещение ASCII
                 call    bin2asc ;перевод двоичного в ASCII
                 mov     AL,DH   ;переместить строку в AL
                 sub     BX,14   ;смещение для ASCII
                 call    bin2asc ;перевод двоичного в ASCII
                 mov     AX,data ;получить размещение сегмента данных
                 mov     ES,AX   ;установить ES для вызова данных
                 assume  ES:data ;
                 mov     AH,13h  ;функция 13h - запись строки
                 mov     AL,0    ;курсор не перемещается
                                ;только строка символов
                                ;атрибут в BL
                 mov     BH,0    ;страница 0
                 mov     BL,0fh  ;белый высокой интенсивности
                 mov     BP,offset msg ;ES:BP указатели на строку
                 mov     CX,37   ;длина строки
                 int     10h     ;обращение к видео-BIOS
                 ret
         main    endp
         bin2asc proc    near
         COMMENT*Эта подпрограмма перевода двоичных чисел в формат
                ASCII написана специально для рассматриваемой прог-
                раммы и позволяет работать только с числами, не
                превышающими значения 100. AL - 8-битовое переводи-
                мое значение, BX - смещение в DS, получающее 2-бай-
                товое значение ASCII
               *
                 mov     AH,0
                 mov     DL,10
                 div     DL        ;перевод в десятичные цифры
                 add     AX,3030h  ;увеличение на 30h для ASCII
                 mov     [BX],AL   ;запись десятков
                 mov     [BX+1],AH ;запись единиц
                 ret
         bin2asc endp
         code    ends
         end     start

Пример на языке Turbo-Pascal:
    type
        regs = record
                    AX,BX,CX,DX,BP,SI,DI,DS,ES,
                    FLAGS:INTEGER;
        end;
     var
        reg : regs;
        row,col : integer;
     begin
        reg.AX:=$0200 {установка курсора};
        reg.DX:=$050a;
        reg.BX:=$0000;
        intr($10,reg);
        reg.AX:=$0300 {получение координат курсора};
        reg.BX:=$0000;
        intr($10,reg);
        row:=reg.DX div $100;
        col:=reg.DX mod $100;
        write ('The cursor is at row ',row);
        write ('and column ',col);
    end.

Вызов функции 4: Чтение позиции светового пера.

Комментарии

Функция сообщает о подключении светового пера и возвращает значение строки и столбца в случае, когда световое перо подключено. Следует отметить, что для передачи номера строки при работе в совместимых режимах (4 - 6) используется регистр CH, а при работе в новых режимах регистр CX.

VGA не поддерживает работу со световым пером.

Исходные данные

Регистры (устанавливаются до вызова функции):

  • AH: устанавливается 4

Выходные данные

Регистры (опрашиваются после вызова функции):

  • AH: 0 - перо не подключено;1 - подключено
  • DH: символьная строка (для текстовых режимов)
  • DL: символьный столбец (для текстовых режимов)
  • CH: строка пикселей (для совместимых режимов)
  • CX: строка пикселей (для новых режимов)
  • BX: столбец пикселей

[ Назад ] [ Оглавление ] [ Далее ]

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог