Руководство по HamsterCMS от TomoTomoTan
Ручной «Хомяк» – наглядное пособие по Hamster CMS. Предисловие и глава 1. - Как включить
Ручной «Хомяк» – наглядное пособие по Hamster CMS. Глава 2 - О шаблонах и содержимом
Ручной «Хомяк» – наглядное пособие по Hamster CMS. Глава 3 - Доступ к сайту через FTP, редактирование шаблона
Ручной «Хомяк» – наглядное пособие по Hamster CMS. Глава 4 - Устройство шаблона. Немного о включениях.
Ручной «Хомяк» – наглядное пособие по Hamster CMS. Глава 5 - Создание собственного шаблона. Загрузка файлов на сайт с помощью WebFTP

Вывод на экран DOS (Текстовый режим 80x25)

Moderator: push0ret

User avatar
push0ret
Набирающий обороты
Posts: 32
Joined: Sun Dec 29, 2024 2:48 pm
Has thanked: 22 times
Been thanked: 26 times

Вывод на экран DOS (Текстовый режим 80x25)

Post by push0ret »

Hello, world!

В этой теме расскажу о том, как производится вывод на экран в текстовом режиме 80x25, в дальнейшем, возможно рассмотрю также графические режимы и работу с таблицами знакогенератора.

Видеопамять проецируется в оперативную, поэтому обращение к ней осуществляется также с помощью адресации. Сегментный адрес текстовой видеопамяти B800. В данном режиме работы видеоадаптер поддерживает 8 видеостраниц, адреса видеостраниц в текстовом режиме 80х25:

Страница 0 - B800:0000 Страница 1 - B800:1000
Страница 2 - B800:2000 Страница 3 - B800:3000
Страница 4 - B800:3000 Страница 5 - B800:5000
Страница 6 - B800:4000 Страница 7 - B800:7000

Исключение составляют видеоадаптеры EGA, которые имеют 64КБ видеопамяти, в этом случае поддерживается 4 видеостраницы. Одна из видеостраниц является активной, то есть содержимое области памяти активной страницы мы видим на экране. К каждой странице видеоэкрана можно обратиться с помощью функций BIOS, с помощью адресации, а также с помощью управляющих регистров контроллера ЭЛТ.

Для кодирования каждого знакоместа (символа) экрана используется 2 байта, первый байт - ASCII код символа, а второй байт - атрибут символа. Атрибуты определяют цвет символа, цвет фона, интенсивность цвета. Приведу формат байта атрибута:

D2-D0 Цвет символа.
D3 Интенсивность символа.
D6-D4 Цвет фона символа.
D7 Мигание символа или интенсивность фона символа.

Код цвета в__________Стандартный цвет________Цвет с повышенной
байте атрибутов______________________________интенсивностью

000__________________черный__________________серый
001__________________синий___________________светло-синий
010__________________зеленый_________________светло-зеленый
011__________________морской волны___________голубой
100__________________красный_________________светло-красный
101__________________фиолетовый______________малиновый
110__________________коричневый______________желтый
111__________________белый___________________ярко-белый

Давайте выведем на экран всю таблицу ASCII символами в цвете морской волны на коричневом фоне:

Code: Select all

.model	tiny
.286
code	segment
org	100h

start:

;get text videomemory address in ES:BX

push 0B800h
pop es

mov cx, 256d		;size of ASCII table
mov ah, 01100011b	;attribute 

display:

mov word ptr es:[bx], ax
add bx, 2d
inc al
loop display

mov ah, 1d
int 21h

push 0
ret

code	ends
end	start
Результат работы программы:
ascii_on_screen.PNG
Была использована версия компилятора MASM 6.11 в контексте операционной системы MS DOS 6.22!

Спасибо за внимание!
С уважением, push0ret!
You do not have the required permissions to view the files attached to this post.

Code: Select all

push 0
ret

Return to “Системное программирование”