Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
В Win32 получить время создания, время последнего доступа и время последней модификации файла можно с помощью функции GetFileTime.Содержание книги
Поиск на нашем сайте BOOL GetFileTime(HANDLE hFile, LPFILETIME lpCreationTime, LPFILETIME lpLastAccessTime, LPFILETIME lpLastWriteTime); Перед вызовом данной функции, необходимо открыть файл, о значениях времени которого необходимо получить информацию. Функции GetFileTime передается дескриптор этого файла и указатели на три экземпляра структуры FILETIME, в которые будут записаны время создания (lpCreationTime), время последнего доступа (lpLastAccessTime) и время последней записи (lpLastWriteTime).
2) Установить время создания, последнего доступа или модификации файлов можно с помощью функции SetFileTime. BOOL SetFileTime(HANDLE hFile, const FILETIME *lpCreationTime, const FILETIME *lpLastAccessTime, const FILETIME *lpLastWriteTime): В качестве входных параметров функция SetFileTime принимает указатели на три экземпляра структуры FILETIME и дескриптор файла. Экземпляры структур уже заполнены необходимыми значениями времени. В случае успешного завершения функция возвращает ненулевое значение в регистре ЕАХ.
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. Графические режимы
Режим 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. movah,0Ch; функция рисования точки moval,1; цвет точки movbh,0; видео страница movcx,50; координата X movdx,20; координата Y int10h; вызов прерывания BIOSФункция 0Ch исполняется очень медленно, особенно при рисовании множества точек. Настоящие графические программы (такие как игры) записывают непосредственно в видеопамять, после того, как они рассчитали цвет и расположение точки. Пример программы Эта программа переключается в графический режим, рисует длинную линию, используя функцию 0Сh, затем ожидает нажатия клавиши и возвращается в прежний режим. .model small.stack 100h.386Mode_6 = 6; 640 X 200, 2 colors Mode_13 = 0Dh; 320 X 200, 16 colors Mode_14 = 0Eh; 640 X 200, 16 colors Mode_15 = 0Fh; 640 X 350, 2 colors Mode_16 = 10h; 640 X 350, 16 colors Mode_17 = 11h; 640 X 480, 2 colors Mode_18 = 12h; 640 X 480, 16 colors Mode_19 = 13h; 320 X 200, 256 colors Mode_6A = 6Ah; 800 X 600, 16 colors. datasaveMode db; Сохранить текущий видео режим currentX dw 100; координата X currentY dw 100; координата Y color db 1; номер цвета; В 2 цветном режиме 1 = белый, в 16 цветном 1 = синий. code start: mov ax,@data mov ds,ax; Получить текущий видеорежим mov ah,0Fh int 10h mov saveMode,al; Переключиться в графический режим mov ah,0; установка видеорежима mov al,Mode_17; номер режима int 10h; Рисование прямой линии LineLength = 100 mov dx,currentY mov cx,LineLength; счетчик цикла L1: push cx mov ah,0Ch; рисование точки mov al,color; цвет точки mov bh,0; видео страница mov cx,currentX int 10h inc currentX ;inc color; используйте для разноцветной линии pop cx loop L1; Ожидаем нажатия клавиши mov ah,0 int 16h; Возврат в прежний видеорежим mov ah,0; установить видео режим mov al,saveMode; сохраненный видео режим int 10h; Выход из программы mov ax,4C00h int 21h end start
Обзор прерываний BIOS Получение информации об оборудовании INT 11h - Получить список оборудования. В процессе инициализации тестовые модули, находящиеся в BIOS, динамически определяют состав аппаратного обеспечения машины и записывают конфигурацию системы в специально отведенную для этого ячейку памяти. С помощью прерывания INT 11h, получают в регистре AX состав аппаратного обеспечения машины. Каждый бит в слове конфигурации отвечает за соответствующее устройство. Значения битов в регистре AX:Биты Значение 0 1 - система содержит НМД; 0 - система не содержит НМД. 1 1 - установлен арифметический сопроцессор; 0 - арифметический сопроцессор не установлен. 2-3 Объем основной памяти, установленной на материнской плате: Биты: 3 2 0 1 - 16К; 1 0 - 32К; 1 1 - 64К и более. 4-5 Тип дисплейного контроллера и его режим: Биты: 5 4 0 0 - не используется или EGA; 0 1 - CGA, EGA, VGA в режиме 40x25; 1 0 - CGA, EGA, VGA в режиме 80x25; 1 1 - монохромный контроллер. 6-7 Количество установленных НГМД: Биты: 7 6 0 0 - установлен 1 НГМД; 0 1 - установлено 2 НГМД; 1 0 - установлено 3 НГМД; 1 1 - установлено 4 НГМД. 8 1 - используется контроллер прямого доступа к памяти; 0 - контроллер прямого доступа к памяти не используется. 9-11 Количество установленных портов последовательной передачи данных RS232S: 000 - нет портов; 001 - используется один порт;............. 111 - используется 7 портов. 12 1 - используется игровой адаптер (джойстик); 0 - игровой адаптер не используется. 13 1 - установлен последовательный принтер (только для PC Jr). 14-15 Количество установленных принтеров: 00 - нет принтеров; 01 - используется 1 принтер; 10 - используется 2 принтера; 11 - используется 3 принтера.
|
||||||||||||||||||||||||||||||||
|
Последнее изменение этой страницы: 2016-09-13; просмотров: 443; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.169 (0.007 с.) |