- •Министерство образования и науки Российской Федерации
- •Ноу впо технологический институт «вту»
- •Расчетно-графическое задание
- •По “Основам эвм”
- •На тему: ”Работа с видеоконтроллером”
- •Видеоконтроллер
- •Типы видеоконтроллеров
- •Цель задания
- •Оборудование и по для решения поставленной задачи
- •Результат выполнения программы
- •Листинг программы
Цель задания
Данная работа заключатся в написании программы работы видеоконтроллера на языке низкого уровня Ассемблер. Программа выполняет тест VESA BIOS, а именно: проверяет наличие VESA BIOS, проверяет наличие режима с линейной адресацией, разрешением 640x480, палитрой 256 цветов и получить его параметры.
VESA BIOS Extensions (VBE) — расширение BIOS в стандарте VESA, дополнительные функции видео-BIOS видеокарты. По отношению к стандартному видео-BIOS для VGA, позволяет запрашивать у адаптера список поддерживаемых видеорежимов и их параметров и изменять эти параметры для согласования адаптера с конкретным монитором.
По сути, VBE является унифицированным стандартом программного интерфейса с VESA-совместимыми картами — при работе через видео-BIOS он позволяет обойтись без специализированного драйвера карты.
Оборудование и по для решения поставленной задачи
Для компиляции программы на видеоконтроллер было установлено следующее программное обеспечение: виртуальная машина Microsoft Virtual PС 2007 со стандартным хостом под Windows 98, Windows 98 SE RUS, дополнения виртуальной машины и ассемблер Borland TASM 5.0.
Запуск программы производился на компьютере со следующими параметрами: процессор Intel Celeron 2,8 ГГц, оперативная память 3 Гбайта, видеокарта Zotac nVidia 1Гбайт и ОС Windows XP.
Результат выполнения программы
Все скрины
Листинг программы
Макрос list1_03.inc
B_RUBOUT equ 8
B_TAB equ 9
B_LF equ 10 ;переход строки
B_ENTER equ 13
B_ESC equ 27
F1 equ 59
F2 equ 60
F3 equ 61
F4 equ 62
F5 equ 63
F6 equ 64
F7 equ 65
F8 equ 66
F9 equ 67
F10 equ 68
Макрос list1_04.inc
MACRO MShowBinByte SString,SColumn,BData
mov [ScreenString],SString
mov [ScreenColumn],SColumn
mov AL,BData
call ShowBinByte
ENDM
MACRO MShowBinWord SString,SColumn,WData
mov [ScreenString],SString
mov [ScreenColumn],SColumn
mov AX,WData
call ShowBinWord
ENDM
Основная программа
IDEAL
P386
LOCALS
MODEL MEDIUM
include "list1_03.inc"
include "list1_04.inc"
DATASEG
GraphicsMode DW ?
VESA_BIOS DB 512 DUP(?)
VESA_info DB 256 DUP(?)
Txt0 DB LIGHTCYAN,0,33,"ТЕСТ VESA BIOS",0
DB YELLOW,24,29,"Нажмите любую клавишу",0
Txt1 DB 2,29,"Обнаружен драйвер VESA",0
DB 4,29,"Сигнатура:",0
DB 5,21,"Номер версии VESA:",0
DB 6,31,"Имя OEM:",0
DB 7,22,"Объем памяти, Мб:",0
DB 12,25,"Номера поддерживаемых режимов:",0
Txt2 DB 4,27,"Параметры режима № h:",0
DB 6,13,"Атрибуты режима:",0
DB 7,13,"Атрибуты окна A:",0
DB 8,13,"Атрибуты окна B:",0
DB 9,2,"Гранулярность окна (Кбайт):",0
DB 10,9,"Размер окна (Кбайт):",0
DB 11,4,"Начальный сегмент окна A:",0
DB 12,4,"Начальный сегмент окна В:",0
DB 13,5,"Адрес функции поз. окна:",0
DB 14,2,"Байтов на строку развертки:",0
DB 15,3,"Горизонтальное разрешение:",0
DB 16,5,"Вертикальное разрешение:",0
DB 17,11,"Ширина знакоместа:",0
DB 18,11,"Высота знакоместа:",0
DB 19,5,"Число плоскостей памяти:",0
DB 6,46,"Число битов на пиксель:",0
DB 7,49,"Число банков памяти:",0
DB 8,51,"Тип модели памяти:",0
DB 9,44,"Размер банка памяти (Кб):",0
DB 10,43,"Число полных видеостраниц:",0
DB 11,43,"Размер красной компоненты:",0
DB 12,40,"Нач. поз. красной компоненты:",0
DB 13,43,"Размер зеленой компоненты:",0
DB 14,40,"Нач. поз. зеленой компоненты:",0
DB 15,45,"Размер синей компоненты:",0
DB 16,42,"Нач. поз. синей компоненты:",0
DB 17,41,"Размер резервной компоненты:",0
DB 18,43,"Нач. поз. рез. компоненты:",0
DB 19,41,"Линейный адрес буфера кадра:",0
Err1 DB 25,0,"Команды VESA не поддерживаются",0
ENDS
SEGMENT sseg para stack 'STACK'
DB 400h DUP(?)
ENDS
CODESEG
; Основной модуль программы
PROC VESA_BIOS_Test
mov AX,DGROUP
mov DS,AX
mov [CS:MainDataSeg],AX
mov AX,3
int 10h
mov [ScreenString],25
mov [ScreenColumn],0
call SetCursorPosition
MShowColorText 2,Txt0
mov AX,DS
mov ES,AX
mov AX,4F00h
mov DI,offset VESA_BIOS
int 10h
cmp AX,4Fh
jne @@Err
mov [TextColorAndBackground],LIGHTGREEN
MShowText 6,Txt1
mov [TextColorAndBackground],WHITE
mov SI,offset VESA_BIOS
MShowASCIIField 4,40,0,4
MShowHexWord 5,40,<[word ptr VESA_BIOS+4]>
call ShowVESAString
mov AX,[word ptr VESA_BIOS+12h]
shr AX,4 ;разделить на 16
MShowDecWord 7,40,AX
mov [ScreenString],14
mov [ScreenColumn],0
mov BX,[word ptr VESA_BIOS+0Eh]
mov AX,[word ptr VESA_BIOS+10h]
mov ES,AX
mov CX,128
ENDP VESA_BIOS_Test
PROC ShowVESAString near
pusha
push ES
mov AX,0B800h
mov ES,AX
cld
mov DI,6*160+40*2
mov AH,[TextColorAndBackground]
push DS
mov BX,offset VESA_BIOS + 06h
mov SI,[BX]
mov BX,[BX+2]
mov DS,BX
@@L1: lodsb
and AL,AL
jz @@L2
stosw
jmp @@L1
@@L2: pop DS
pop ES
popa
ret
ENDP ShowVESAString
ENDS
END