Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
прогр.docx
Скачиваний:
23
Добавлен:
21.12.2018
Размер:
2.58 Mб
Скачать

3) В Win32 имеется функция GetFileInformationByHandle, с помощью которой можно получить все атрибуты файла:

BOOL GetFileInformationByHandle(HANDLE hFile,

LPBY_HANDLE_FILE_INFORMATION lpFileInformation);

На вход данной функции передается дескриптор файла, о котором необходимо получить информацию, и указатель на экземпляр структуры BY_HANDLE_FILE_INFORMATION, который заполняется этой функцией. В этой структуре сосредоточена вся информация о файле.

Пример 10: Разработать Win32 - консольное приложение с использованием функции GetFileInformationByHandle.

;---------------------------описание структур----------------------------

FILETIME struc

DwLowDateTime dd ? ;младшие 32 бита значения времени

DwHighDateTime dd ? ;старшие 32 бита значения времени

FILETIME ends

BY_HANDLE_FILE_INFORMATION struc

DwFileAttributes dd 0 ;атрибуты файла

struc

ftCreationTime_DwLowDateTime dd ? ; младшие 32 бита времени

; создания файла

ftCreationTimeDwHighDateTime dd ? ;старшие 32 бита времени создания

; файла

Ends

Struc

FtLastAccessTime_DwLowDateTime dd ? ; младшие 32 бита времени

; последнего доступа

FtLastAccessTime_DwHighDateTime dd ? ; старшие 32 бита времени

; последнего доступа

еnds

struc

ftLastWriteTime_DwLowDateTime dd ? ; младшие 32 бита времени

; последней записи

ftLastWnteTime_DwHighDateTime dd ? ;старшие 32 бита времени

; последней записи

ends

dwVolumeSerialNumber dd 0 ;серийный номер тома, на котором

; находится файл

nFileSizeHigh dd 0 ; старшие 32 бита размера файла

nFileSizeLow dd 0 ; младшие 32 бита размера файла

nNumberOfLinks dd 0 ; число ссылок на файл

nFileIndexHigh dd 0 ;старшие 32 бита идентификатора файла

nFileIndexLow dd 0 ; младшие 32 бита идентификатора файла

ends

.data

info BY_HANDLE_FILE_INFORMATION <>

TitleText db 'Получение информации о файле в Win32',0

lpBuf db "File1.txt",0

hFile dd 0

.code

;-------------------------------------Открываем файл--------------------

push 0

push 0

push OPEN_EXISTING ; открыть существующий файл, если его нет –

; ошибка

push 0 ; защита файла не требуется

push FILE_SHARE_READ ;разрешено совместное использование файла

; (по чтению)

push GENERIC_READ ; разрешено чтение из файла

push offset lpBuf

call CreateFileA

сmp eax,0ffffffffh

je exit ; если неуспех

mov hFile,eax ; дескриптор файла

;---------------------------GetFileInformationByHandle

push offset info

push hFile

call GetFileInformationByHandle

cmp eax,0

jz exit ; выход в случае неудачи

; результат смотрим в отладчике TD32.exe

Самостоятельно на практике: Вывести все атрибуты созданного текстового файла File1.txt на консоль.

Лекция №11. Работа с графикой на ассемблере. Функции BIOS. Видеопамять.

Современные видеоконтроллеры поддерживают разнообразные текстовые и графические режимы. Текстовые режимы различаются по разрешению (число отображаемых символов по горизонтали и вертикали) и цветовой палитре (монохромный или 16-цветный режим). Для графических режимов основным признаком классификации является количество одновременно отображаемых цветов и, соответственно, количество бит видеопамяти, отводимое на каждую точку (пиксел) изображения.

Различают следующие типы графических режимов:

монохромный (1-битное кодирование);

16-цветный EGA/VGA (4-битное кодирование);

256-цветный SVGA (8-битное кодирование);

HiColor (16-битное кодирование);

TrueColor (24-битное / 32-битное кодирование).

Для работы с графическим адаптером, в BIOS используется прерывание INT 10h. Оно позволяет устанавливать графические режимы работы, выводить символы и графику. Выбор графического режима – Функция 0 (ah=0) прерывания INT 10h устанавливает видеорежим, который был указан в регистре AL.

Графические режимы

Режим

Разрешение

Количество цветов

06h

640x200

2

0Dh

320x200

16

0Eh

640x200

16

0Fh

640x350

2

10h

640x350

16

11h

640x480

2

12h

640x480

16

13h

320x200

256

6Ah *

800x600

16

Режим 6Ah утвержден VESA, но его поддерживают не все видео адаптеры

Существуют также дополнительные режимы, которые используются для SVGA и XGA адаптеров. Они устанавливаются вызовом VESA BIOS Extension (AX=4F02h INT 10h).

Рисование точки

Функция 0Ch прерывания INT 10h.

Цвет – в AL;

Видеостраница – в BH;

КоординатаY – в DX;

КоординатаX – в CX.

Пример: нарисовать точку с цветом 1, с координатами X=50 и Y=20.

mov ah,0Ch ; функция рисования точки

mov al,1 ; цвет точки

mov bh,0 ; видео страница

mov cx,50 ; координата X

mov dx,20 ; координата Y