Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/60: Рейтинг темы: голосов - 60, средняя оценка - 4.50
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065

Очистка экрана через DOS, используя 21 прерывание

09.12.2012, 15:28. Показов 12135. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
можно ли как-нибудь очистить экран через 21 прерывание?? мне в голову кроме прокрутки экрана вниз ничего не приходит.
PS: заранее не известно сколько символов не экране
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.12.2012, 15:28
Ответы с готовыми решениями:

Организовать аппаратное прерывание DOS
Вопрос заключается в следующем: как организовать аппаратное прерывание? Конкретно нужно вот что: на любом этапе работы программы при...

Прерывание MS-DOS
Помогите разобраться. В учебнике Калашникова в пятом уроке вот такая программа для практики: CSEG segment org 100h Start: mov...

Прерывание на получение времени в MS DOS
Подскажите, нашел только для поулчение даты

17
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
09.12.2012, 15:41
Fatal Error, а чем 10h прерывание плохо?
0
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
09.12.2012, 15:43  [ТС]
запрещено использовать под страхом не сдачи лабы
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
09.12.2012, 15:48
Fatal Error, поищи в инете книгу Майкла Абраша "Таинства программирования графики"
0
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
09.12.2012, 15:53
Assembler
1
2
3
4
5
6
    mov cx,80*24
    mov dl,' '
    mov ah,2
m1:
    int 21h
    loop m1
0
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
09.12.2012, 15:58  [ТС]
Mikl___, и чем она мне должна помочь? я почитал отзывы, она там вроде только про графику

Добавлено через 3 минуты
AFP, ну зачем ты так?
Assembler
1
2
3
4
5
6
mov ah, 9
mov dx, offset new_line
mov cx, 25
@@1:
int 21h
loop @@1
это первое что пришло в голову. но вот вдруг препод скажет мол надо было не прокрутить экран, а очистить от всего.
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
09.12.2012, 16:07
AFP, можно и за один раз
Assembler
1
2
3
4
5
6
.data
str db 80*25 dup ' ','$'
.code
   mov dx,offset str
   mov ax,9
   int 21h
Добавлено через 2 минуты
Fatal Error, там вроде можно и командой out очистить экран, если разобраться с регистрами CGA/EGA/VGA
0
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049
09.12.2012, 16:12
Есть вариант:
1)Программированием регистров VGA ставим курсор в левый верхний угол
2)Через функцию 09h забиваем экран пробелами
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
09.12.2012, 16:21
sh2ezo, можно и не устанавливать курсор, при записи 80*25 пробелов или символов с кодом 0, FF, DB произойдет прокрутка экрана и его затирание
0
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
09.12.2012, 16:35  [ТС]
Цитата Сообщение от Mikl___ Посмотреть сообщение
произойдет прокрутка экрана и его затирание
так в том то и тема что всего лишь прокрутка. вобщем тема такова:
Ввести с клавиатуры длины сторон A,B,C четырех треугольников в виде матрицы 4*3. После ввода данных, относящихся к одному треугольнику, предусмотреть проверку их корректности (например, при A=1, B=2, C=5 треугольник не существует).
Определить, является ли каждый треугольник прямоугольным. Вывести исходную матрицу, добавив в конце строки с данными прямоугольного треугольника слово "прямоугольный". Если не встретился ни один прямоугольный треугольник, вывести на чистом экране сообщение об этом. Очистку экрана выполнить средствами прерывания INT 21h.
так вот, если введена неверная сторона, то выводится сообщение об этом. и таких сообщений может быть миллион. надо бы их все затереть. но по ходу через досю никак... ладно, ограничусь прокруткой экрана

Добавлено через 2 минуты
Цитата Сообщение от Mikl___ Посмотреть сообщение
можно и не устанавливать курсор,
так 21 не умеет курсор устанавливать.
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
09.12.2012, 16:58
Fatal Error, можно стирать через прямой доступ к видеопамяти 0B800h а потом вызывать, например, функцию 6B00h прерывания 21h, эта функция ничего не делает и немедленно возвращает управление, и с ясными и чистыми глазами говорить преподу при сдаче лабораторной работы, что это "недокументированная функция", которая стирает с экрана, пусть он покопается в справочниках и докажет обратное
0
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
09.12.2012, 17:07  [ТС]
Цитата Сообщение от Mikl___ Посмотреть сообщение
0B800h а потом вызывать, например, функцию 6B00h прерывания 21h,
так преподу отдавать надо код, а он то увидит что там есть доступ к видео-буферу. да и объяснить что такое недокументированное прерывание девушке, которая в компе нуб - невозможно
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16373 / 7685 / 1080
Регистрация: 11.11.2010
Сообщений: 13,759
09.12.2012, 17:19

Не по теме:

Fatal Error, да Вы, сэр, сексуальный маньяк... :D

использование указателя на видеобуфер объясняется, как необходимое условие для использования функции 6В00 пусть доказывает, что это не так...
Не путай недокументированную функцию с вполне документированным ДОС-прерыванием 21h
0
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
09.12.2012, 17:42  [ТС]
если я тебя правильно понял, то ты хочешь так сделать:
Assembler
1
2
3
4
5
6
7
mov ax, 0
mov di, 0
mov es, 0B800h
mov cx, 100500
rep stosw
mov ax, 6B00h
int 21h
так? если да, то тут же видно что происходит обнуление путем записи в видеобуфер.

Не по теме:

Цитата Сообщение от Mikl___ Посмотреть сообщение
Fatal Error, да Вы, сэр, сексуальный маньяк...
это еще почему?:)

0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
09.12.2012, 17:42
Fatal Error, а запустить "COMMAND.COM CLS" по int 21h/4B00h не пробовал?
Геморройно, но зато взятки гладки.
1
 Аватар для Troll_Face
608 / 406 / 8
Регистрация: 26.04.2012
Сообщений: 2,065
09.12.2012, 17:44  [ТС]
Charles Kludge, гениально
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
09.12.2012, 18:51
Можно ещё чуток схалявить - писать в stdout(BX=1) по int21h/40h строку 1Bh,'[2J'
Но сначала проверить, установлен ли ansi.sys по INT 2Fh/1A00h.
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
10.12.2012, 22:43
Ну и самое простое, но не через 21-ый:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    org 100h
    push    cs
    pop es
    mov bx, top
    shr bx, 4
    inc bx
    mov ah, 4Ah
    int 21h
    mov si, cmd_
    pusha
    int 2Eh
    popa
    xor ax,ax
    int 16h
    int 20h
cmd_:   db  3,'CLS',0dh
top:
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.12.2012, 22:43
Помогаю со студенческими работами здесь

Как в ms-dos настроить прерывание аппаратное по lpt порту?
Почему может прерывание не работать не подскажете .MODEL tiny .386 .DATA oldSeg dw 0 oldOfs dw 0 base = 0378h .CODE...

Очистка экрана в консоли через определенное время
Результат стоит в консоли секунду потом происходит очистка экрана. как такое можно реализовать??

Ввод символа, очистка экрана, вывод символа в центре экрана
Вывести приглашение к вводу символа, ввести символ, вывести введенный символ в центре очищенного экрана.

Перехват Int 05h: Каждое нажатие клавиши Print Screen вызывает изменение атрибута символов
Пипл, помогите,пожалуйста, написать прогу. Очень-очень важно, для сессии. Очень прошу!Я сам в этом не разбираюсь нифига. Очистить...

Очистка экрана
скажите как в плюсах чистить экран консоли? system("cls") не предлагать, мой препод сказал что cout и system("cls") не совместимы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru