Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
INT 12h - Получить размер основной памяти.Содержание книги
Похожие статьи вашей тематики
Поиск на нашем сайте
Прерывание INT 12h возвращает в регистре AX количество имеющихся блоков памяти размером в один килобайт. Если компьютер оборудован расширенной памятью (адресное пространство этой памяти находится выше границы в 1 мегабайт), то размер этой памяти в килобайтах можно узнать, вызвав прерывание INT 15h со значением регистра AX, равным 8800h. Возвращает в регистре AX размер памяти в килобайтах.
Работа с дисплейным адаптером. При вызове прерывания INT 10h регистр AH должен содержать номер функции, которую требуется выполнить. Остальные регистры при вызове прерывания содержат операнды. Приведем краткий обзор функций прерывания INT 10h. H - Задание видеорежима. В процессе инициализации BIOS задает начальный режим адаптера исходя из его типа. Если нужен другой режим, отличный от исходного, то необходимо использовать функцию 00h. При этом необходимо учитывать, что дисплейные адаптеры могут поддерживать не все режимы. При вызове: AH=00h АL=видеорежим: Основные графические режимы VGA
Стандартные графические режимы SVGA могут быть 4-, 8-, 15-, 16-, 24- и 32-битными. 1) 4-битные режимы (16 цветов): VGA 012h: 640x480 (64 Кб) VESA VBE 1.0 102h: 800x600 (256 Кб) 104h: 1024x768 (192 Кб) 106h: 1280x1024 (768 Кб)
Каждый пиксель описывается одним битом, для вывода цветного изображения требуется программирование видеоадаптера на уровне портов ввода-вывода.
2) 8-битные режимы (256 цветов): VGA 013h: 320x200 (64 Кб) VBE 1.0 100h: 640x400 (256 Кб) 101h: 640x480 (320 Кб) 103h: 800x600 (512 Кб) 105h: 1024x768 (768 Кб) 107h: 1280x1024 (1,3 Мб) VBE 2.0 120h: 1600x1200 (1,9 Мб)
Каждый пиксель описывается ровно одним байтом. Значение байта — нoмер цвета из палитры, значения цветов которой можно изменять, например вызывая подфункцию 09 видеофункции 4Fh.
3) 15-битные режимы (32 К цветов): VBE 1.2 10Dh: 320x200 (128 Кб) 110h: 640x480 (768 Кб) 113h: 800x600 (1 Мб) 116h: 1024x768 (1,5 Мб) 119h: 1280x1024 (2,5 Мб) VBE 2.0 121h: 1600x1200 (3,8 Мб)
Каждый пиксель описывается ровно одним словом (16 бит), в котором биты 0 – 4 содержат значение синей компоненты цвета, биты 5 – 9 — зеленой, а биты 10 – 14 — красной. Бит 15 не используется.
4) 16-битные режимы (64 К цветов): VBE 1.2 10Eh: 320x200 (128 Кб) 111h: 640x480 (768 Кб) 114h: 800x600 (1 Мб) 117h: 1024x768 (1,5 Мб) 11Ah: 1280x1024 (2,5 Мб) VBE 2.0 121h: 1600x1200 (3,8 Мб)
Так же как и в 15-битных режимах, каждый пиксель описывается ровно одним словом. Обычно биты 0 – 4 (5 бит) содержат значение синей компоненты, биты 5 – 10 (6 бит) — зеленой, а биты 11 – 15 (5 бит) — красной.
5) 24-битные и 32-битные режимы (16 М цветов): VBE 1.2 10Fh: 320x200 (192 Кб) 112h: 640x480 (1 Мб) 115h: 800x600 (1,4 Мб) 118h: 1024x768 (2,3 Мб) 11Bh: 1280x1024 (3,7 Мб) VBE 2.0 122h: 1600x1200 (7,7 Мб)
Основные функции BIOS при работе с графикой прерывания 10h H - Установить характеристики курсора. С помощью этой функции вы можете установить размер и форму курсора, сделать курсор мигающим или убрать его совсем. На входе: AH = 01h - изменение размеров курсора; CH = верхняя граница курсора: D3-D0 верхняя граница курсора D5-D4 00b - обычный курсор B - невидимый курсор B - мигающий курсор B - быстро мигающий курсор D7-D6 не используются; CL = нижняя граница курсора (0-31). На выходе: Не используются. H - Установить положение курсора. Эта функция позволяет управлять расположением курсора на экране, в частности, один из способов убрать курсор - расположить его за пределами экрана, например, на несуществующей 26 строке.
На входе: AH = 02h - установка позиции курсора; BH = номер страницы видеопамяти; DH = номер строки (0-24); DL = номер столбца (0-79). На выходе: Не используются.
Mov ah,2; запрос на установку курсора Mov dh,8; номер строки - 8 Mov dl,12; номер столбца - 12 Mov bh,0; номер страницы Int 10H H - Получить положение курсора. Программа может узнать в любое время, где расположен курсор. Это может потребоваться ей, например, для того, чтобы переместить курсор в следующую позицию (вправо, вверх, вниз и т. д.) На входе: AH = 03h - определение размеров и координат Курсора BH = номер страницы видеопамяти. На выходе: CH = верхняя граница курсора; CL = нижняя граница курсора; DH = позиция текущей строки курсора; DL = позиция текущего столбца курсора. H - Получить положение светового пера. Световое перо используется относительно редко, однако если оно есть, то функция 04h позволит вам работать с этим устройством. H - Выбрать активную страницу дисплейной памяти. Компьютер хранит, как правило, не один отображаемый образ экрана, а несколько. Для этого видеопамять (память для хранения видеоизображения, находится на плате видеоконтроллера) разбивается на страницы. Отображается только активная страница видеопамяти. На входе: AH = 05h - выбор активной страницы видеопамяти; AL = номер страницы видеопамяти, которая Станет активной. На выходе: Не используются.
06h, 07h - Прокрутка (скроллинг) окна вверх/вниз. С помощью этих функций можно переместить выбранную область окна на заданное число строк вверх или вниз. Освободившееся место будет заполняться пустыми строками. Одно из применений этой функции - полная очистка экрана. H, 09h - Прочитать/записать символ и атрибут. С помощью этих функций можно прочитать или записать символ и его атрибут. При записи символа можно задать число повторений. Атрибуты символов: мерцание, цвет фона, интенсивность, цвет символов. На входе: AH = 08h - чтение символа и его атрибутов; BH = номер страницы видеопамяти. На выходе: AL = ASCII-код символа; AH = байт атрибутов символа. Пример: считать символ и его атрибут из текущей позиции курсора на странице page: ... Mov ah,8; читаем символ и его атрибуты Mov bh,page; выбираем страницу видеопамяти page Int 10h; считываем символ и его атрибут Mov char,al; сохраняем полученный ASCII-код символа Mov attr,ah; и его атрибут ... На входе: AH = 09h - запись символа с атрибутом; AL = ASCII-код записываемого символа; BH = номер страницы видеопамяти; BL = атрибут (для текстового режма) или цвет (для графического режима); CX = число записываемых символов. На выходе: Не используются. Ah - Записать символ. Запись символа в видеопамять без задания для него индивидуального значения атрибута. Используется текущий атрибут. Можно задавать кратность записи. Записывает символ ASCII кода в текущую позицию курсора. После вывода курсор следует сместить к следующей позиции функцией 02h. На входе: AH = 10h - запись символа без атрибута; AL = ASCII-код записываемого символа; BH = номер страницы видеопамяти; BL = цвет (для графического режима); CX = число записываемых символов. На выходе: Не используются.
Mov AH, 0ah mov AL, ‘a’; выводимый символ (или его порядковый ; номер в таблице) Mov BH, 0;установка видеостраницы Mov CX, 1;коэффициент повторения Int 10h Bh - Выбрать цветовую палитру. Эта функция позволяет управлять цветом рамки вокруг изображения в текстовом режиме и цветом фона в графическом режиме. Данная функция позволяет выбрать одну из двух стандартных цветовых палитр. Стандартные цветовые палитры в режимах 4,5,6.
Функция 0Bh имеет следующий формат вызова: На входе: AH = 0Bh - установка цветовой палитры; BH = 0, тогда BL = цвет фона и рамки (для графического режима) или цвет рамки (для текстового режима) BH = 1, тогда BL = номер палитры (0 или 1). На выходе: Не используются.
Ch, 0Dh - Записать/прочитать графическую точку. Можно установить точку заданного цвета в заданном месте экрана для выбранной дисплейной страницы или прочитать значение цвета любой точки на экране соответственно. При вызове: AH=0Ch АL=цвет (номер цветового регистра) ВН=страница СХ=графический столбец ВХ=графическая строка Функция 0Dh читает из видеобуфера цвет пиксела в заданной графической позиции. При вызове: AH=0Dh ВН=страница СХ=графический столбец ВХ=графическая строка При возврате: АL=номер цвета пиксела. Пример: определим номер цвета пиксела, имеющего координаты x_pos и y_pos: Mov ah,0Dh mov cx,x_pos mov dx,y_pos Int 10h ; сохраняем полученную величину mov color_number,al Eh - Запись символа на экран в стиле TTY. После записи символа на экран курсор продвигается на следующую позицию, при этом обрабатываются такие управляющие символы, как BEL (подача звукового сигнала), возврат на одну позицию, перевод строки, возврат к началу строки. Fh - Прочитать текущий видеорежим. Если необходимо изменить видеорежим, то можно сохранить старый видеорежим, получив его с помощью этой функции. Кроме того, функция возвращает количество столбцов на экране и номер текущей активной дисплейной страницы. На входе: AH = 0Fh - определение текущего режима Видеоадаптера. На выходе: AH = число символов в строке; AL = номер текущего режима; BH = номер активной страницы видеопамяти.
___________________________________________________ Пример 2. Программа выводит на экран синусоиду в режиме 13h. ; Рисуем синусоиду в графическом режиме 13h ; также рисуем координатные оси ; синус определяем как sin(z)=((2*tan(z))/(1+tan(z)*tan(z))) masm model small .stack 100h .data B Dd 0 Y dd? X dw? B1 dd 0 D1 dd 2.0 MASSHTAB dd 10.0 saveMode db?; Сохранить текущий видео режим currentX dw 100; координата X currentY dw 0; координата Y color db 1; номер цвета step dd 0.1 .code start: mov ax,@data mov ds,ax
; Получаем и сохраняем текущий видеорежим mov ah,0Fh int 10h mov saveMode,al
; Переключиться в графический режим mov ah,0h mov al,13h int 10h
finit FLD B1 mov cx,220;; счетчик цикла
L1: FPTAN FLD ST(1) FLD ST(0) FMUL FADD FLD ST(0) FLD ST(2) FLD D1 FMUL FLD ST(1) FDIV FLD MASSHTAB FMUL FLD ST(0) FRNDINT fist Y mov ax,word ptr[Y] mov bx,100 sub bx,ax mov dx,bx; в dx записываем точку Y push cx mov ah,0Ch; рисование точки mov al,color; цвет точки mov bh,0; видео страница mov cx,currentX; в cx записываем точку X int 10h inc currentX inc color; используйте для разноцветной линии pop cx finit fld B FLD step fadd fst B loop L1
;Рисуем координатную ось OX mov cx,320 L2: mov dx,100; в dx записываем точку Y push cx mov ah,0Ch; рисование точки mov al,3; цвет точки mov bh,0; видео страница mov cx,currentX; в cx записываем точку X int 10h inc currentX pop cx loop L2 ;-------------------------------------------------------- ;Рисуем координатную ось OY mov cx,200 L3: push cx mov cx,100; в cx записываем точку X mov ah,0Ch; рисование точки mov al,3; цвет точки mov bh,0; видео страница mov dx,currentY; в dx записываем точку Y int 10h inc currentY pop cx loop L3 ;-------------------------------------------------------- ; Ожидаем нажатия клавиши mov ah,0 int 16h
; Возврат в прежний видеорежим mov ah,0; установить видео режим mov al,saveMode; сохраненный видео режим int 10h
exit:;выход mov ax,4c00h;стандартное завершение программы int 21h end start _________________________________________________
Пример: Написать программу вывода на экран монитора четырех смежных квадратов в шахматном порядке: два синих два желтых.
masm model small .stack 100h .data .code start:;точка входа mov ax,@data mov ds,ax mov ax,0002h;установка видеорежима с номером в AL int 10h;прерывание BIOS mov ax,0600h;прокрутка вверх (AL=0 - заполняет экран ;пробелами) mov bh,01100000b;устанавливает цвет фона(желтый) и ;символа mov cx,0000h;координаты верхнего левого угла ;(строка, столбец) mov dx,0306h;координаты нижнего правого угла int 10h mov bh,00010000b;синий mov cx,0007h mov dx,030Dh int 10h
mov cx,0400h mov dx,0706h int 10h
mov bh,01100000b;желтый mov cx,0407h mov dx,070Dh int 10h
mov ax,4c00h;стандартное завершение программы int 21h end start Обслуживание клавиатуры. Обработчик прерывания INT 16h выполняет несколько функций, связанных с обслуживанием клавиатуры. Вход: AH=00H – читать (ожидать) следующую нажатую клавишу Выход: AL = ASCII символ (если AL=0, AH содержит Расширенный код ASCII) AH = сканкод или расширенный код ASCII Вход: AH=01H проверить готовность символа (и показать его, если Так) Выход: ZF = 1 если символ не готов. ZF = 0 если символ готов. AX = как для подфункции 00H (но символ здесь не Удаляется из очереди). Вход: AH=02H читать состояние shift-клавиш. определить, какие
|
|||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-09-13; просмотров: 415; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.205.19 (0.008 с.) |