Как сделать гашение курсора

Подскажите как в программе на Паскале средствами Ассемблерного кода убрать курсор и вернуть его обратно
6 ответов

Может пойдёт, с помощью прерывания, устанавливаем курсор за пределы экрана (например на 100-ую позицию, первой строки)
asm
mov ah, 02h
mov bh, 0
mov dh, 0 {строка}
mov dl, 99 {столбец} 
int 10h
end;
Напомню: отсчёт позиции курсора на экране начинается с нуля, т.е. 0,0 - левый верхний угол.


Нет, такой метод в текстовом режиме не канает. Сдесь если значение столбца привышает ограничения (80), то курсор автоматически переводится на новую строку. ТОже самое происходит со строкой.Я слышал, что есть процедура позваляющая просто заглушать курсор.


можно получить текущее положение курсора, потом установить цвет фона такой же какой цвет курсора


Нет, это понятно, но для этого нужно моного действий выполнить:
TextColor(ЦветФона);
Write(' ');
Cclrscr;
TextCoOlor(Нормальный Цвет текста);
Темболие, что здесь приходится очищать экран, а это не совсем удобно когда я вывожу какой то текст.А простой функции просто меняющей цвет курсора насколько мне известно нет.А на Ассемблере просто одна функция убирет курсор, причем так, что он негде не вылезет.


Мне подсказали один вариант:
asm 
 mov ah,01;
 mov cx,$2000;
 int $10; 
end;
Как сказали он и должен обратно курсор включать, но он почему, то его не возвращает. Может кто знает почему и как эту проблем решить?


Не вижу проблемы , всё те правильно подсказалиВот тебе страшная дема (FASM) На паскале то же самое (asm "xxh" = pascal "$xx" если не в курсе)
org 100h

;Скрыть
 mov ah, 01h ; функция 01 int10h
 mov cx, 2000h; (ch=20h - скрыть)
 int 10h; видеосервис биос

;Аникей
 mov ah, 01h
 int 21h

;Обратно
 mov ah, 01h ; функция 01 int10h
 mov cx, 0FFFFh; отобразить
 int 10h; видеосервис биос

;Сам догадайся =)
 mov ah, 01h
 int 21h

;Эксит
 int 20h
Ина будущее: http://www.codenet.ru/progr/dos/