Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь 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; просмотров: 323; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.102.163 (0.009 с.) |