Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Получить дату BIOS 2

Delphi , ОС и Железо , BIOS

Получить дату BIOS 2

function GetBIOSDate: string;
{получение даты BIOS в Win95}
var
  s: array[0..7] of char;
  p: pchar;
begin
  p := @s;
  asm
    push esi
    push edi
    push ecx
    mov esi,$0ffff5
    mov edi,p
    mov cx,8
    @@1:mov al,[esi]
    mov [edi],al
    inc edi
    inc esi
    loop @@1
    pop ecx
    pop edi
    pop esi
  end;
  setstring(result, s, 8);
end;

Here's the translation of the text into Russian:

Функция GetBIOSDate, написанная на языке Pascal для Delphi, получает дату BIOS с системы, работающей под Windows 95. Вот разбивка кода:

Подпись функции

function GetBIOSDate: string;

Функция GetBIOSDate возвращает строку, представляющую дату BIOS.

Переменные и инициализации

var
  s: array[0..7] of char;  // массив для хранения даты BIOS
  p: pchar;  // указатель на первый элемент массива
begin

Переменная s - это массив символов размером в 8 элементов, который будет использоваться для хранения даты BIOS. Переменная p - это указатель на первый элемент массива s.

Ассемблерный код

push esi
push edi
push ecx
mov esi, $0ffff5  // загружаем адрес даты BIOS в ESI
mov edi, p  // загружаем адрес массива s в EDI
mov cx, 8  // устанавливаем счетчик цикла в 8 (длина даты BIOS)

@@1: mov al, [esi]  // перемещаем байт из памяти по адресу ESI в AL
mov [edi], al  // храним байт в массиве s
inc edi  // инкрементируем указатель на следующий элемент в массиве
inc esi  // инкрементируем адресный указатель на следующий байт в памяти
loop @@1  // повторяем цикл 8 раз
pop ecx
pop edi
pop esi
end;

Этот ассемблерный код выполняет цикл, который читает 8 байтов из памяти по адресу, хранящемуся в регистре ESI, и хранит их в массиве s. Регистр ESI загружается адресом $0ffff5, который, вероятно, является местоположением даты BIOS в памяти.

Код Delphi

setstring(result, s, 8);

Функция setstring используется для преобразования массива s в строку Delphi. Полученная строка присваивается переменной result, которая возвращает функцией GetBIOSDate.

Альтернативное решение Если вам не нужно использовать ассемблерный код, вы можете использовать unit Win32API в Delphi и вызвать функцию GetSystemInfo для получения информации о системе, включая дату BIOS. Вот пример:

uses Win32API;

function GetBIOSDate: string;
begin
  var sysinfo: TSystemInfo;
  FillChar(sysinfo, SizeOf(TSystemInfo), #0);
  GetSystemInfo(sysinfo);

  Result := FormatDateTime('yyyy-mm-dd', sysinfo.dwBIOSDate);
end;

Этот код использует функцию GetSystemInfo для получения записи TSystemInfo, содержащей информацию о системе. Поле dwBIOSDate этой записи представляет дату BIOS в виде DWORD. Функция FormatDateTime используется для преобразования этого значения в строку в формате 'yyyy-mm-dd'.

Функция GetBIOSDate получает дату BIOS в системе Win95, преобразуя байты в строку с помощью ассемблера.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: BIOS ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-20 02:44:51/0.0069692134857178/2