Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчет основы ЭВМ.doc
Скачиваний:
1
Добавлен:
12.07.2019
Размер:
75.26 Кб
Скачать

Цель задания

Данная работа заключатся в написании программы работы видеоконтроллера на языке низкого уровня Ассемблер. Программа выполняет тест 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