Форум программистов, компьютерный форум, киберфорум
ОС на Assembler
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
6 / 6 / 1
Регистрация: 26.06.2022
Сообщений: 146
Записей в блоге: 14
FASM

Компиляция загрузчика IO.SYS, для uefi

27.04.2024, 23:03. Показов 1030. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Недавно мне пришла идея создать загрузчик io.sys, для uefi. С этой целью я обратился к GPT-CHAT. Я написал запрос в чате:
Code
1
напиши на fasm загрузчик uefi, эмулирующий bios, который передаёт управление файлу io.sys
В результате получил код:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
format binary as 'uefi_bios_bootloader_io.sys'
 
org 0x7c00
 
start:
    ; Set up stack
    xor ax, ax
    mov ss, ax
    mov sp, 0x7c00
 
    ; Set up data segments
    mov ax, 0x07c0
    mov ds, ax
    mov es, ax
 
    ; Clear screen
    mov ah, 0x06       ; Scroll screen function
    xor al, al         ; Number of lines to scroll
    mov bh, 0x00       ; Attribute
    mov cx, 0x0000     ; Upper-left corner
    mov dx, 0x184f     ; Lower-right corner
    int 0x10
 
    ; Print message
    mov si, message
    call print_string
 
    ; Load and execute io.sys
    mov ax, 0x0201     ; Load and execute function
    mov cx, 0x0002     ; Number of sectors to read
    mov dx, 0x0000     ; Destination segment (0x0000:0x7e00)
    mov bx, 0x7e00     ; Destination offset
    mov es, dx         ; Set ES to destination segment
    mov dl, 0x80       ; Drive number (assuming boot drive is 0x80)
    mov dh, 0x00       ; Head
    mov ch, 0x00       ; Cylinder
    mov cl, 0x02       ; Sector
    mov ah, 0x02       ; Read sectors function
    int 0x13           ; BIOS interrupt
 
    ; Jump to loaded program
    mov ax, 0x7e00
    mov ds, ax
    mov es, ax
    jmp 0x0000:0x7e00
 
print_string:
    lodsb              ; Load next byte from SI into AL
    test al, al        ; Check if AL is zero (end of string)
    jz .done           ; If zero, jump to end
    mov ah, 0x0e       ; Teletype output function
    mov bh, 0x00       ; Video page number
    mov bl, 0x07       ; Text attribute
    int 0x10           ; Call BIOS interrupt
    jmp print_string   ; Continue printing
.done:
    ret
 
message db 'UEFI Bootloader', 0
 
times 510-($-$$) db 0
dw 0xaa55
К сожалению я не могу протестировать этот код, так как работаю с MacBook, а мой основной компьютер находится в другом городе. Если кто шарит, подскажите софт для теста на macos. Нужно проверить работу EFI загрузчика, а так-же возможность запускать ms-dos 7.01, с его помощь.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.04.2024, 23:03
Ответы с готовыми решениями:

[gcc+nasm] Раздельная компиляция загрузчика
Здравствуйте, в си программе необходимо вызвать процедуру ассемблера с передачей char. extern void write(char); write('A'); ...

Не простое восстановление загрузчика UEFI
Присутствуют такие диски (смотрите скриншоты). На "Диске 2" были установлены Win7 и Win11 (11 ещё стоит). Приобрёл SSD, создал вручную...

Раздел загрузчика виндоус на ноутбуке с uefi
Здравствуйте! У меня ноутбук DEXP Atlas H117. Изначально была предустановлена неактивированная Windows 8.1. Сейчас обновил на windows 10....

2
Модератор
2131 / 1000 / 170
Регистрация: 23.07.2018
Сообщений: 3,349
Записей в блоге: 3
28.04.2024, 07:33
MaGz GoLd, ишкушштвенный интеллект напутал с форматом объектного модуля.

https://flatassembler.net/docs... nual#2.4.2
Цитата Сообщение от flat assembler 1.73 Programmer's Manual
use format PE directive, it can be followed by additional format settings: first the target subsystem setting, which can be console or GUI for Windows applications, native for Windows drivers, EFI, EFIboot or EFIruntime for the UEFI
Assembler
1
2
3
format PE64 EFI
entry here
here: ret
dumpbin /headers fuefi.efi /nologo
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
Dump of file fuefi.efi
 
PE signature found
 
File Type: EXECUTABLE IMAGE
 
FILE HEADER VALUES
            8664 machine (x64)
               1 number of sections
        662DD059 time date stamp Sun Apr 28 09:28:09 2024
               0 file pointer to symbol table
               0 number of symbols
              F0 size of optional header
              2F characteristics
                   Relocations stripped
                   Executable
                   Line numbers stripped
                   Symbols stripped
                   Application can handle large (>2GB) addresses
 
OPTIONAL HEADER VALUES
             20B magic # (PE32+)
            1.73 linker version
             200 size of code
             200 size of initialized data
               0 size of uninitialized data
            1000 entry point (0000000000401000)
            1000 base of code
          400000 image base (0000000000400000 to 0000000000401FFF)
            1000 section alignment
             200 file alignment
            1.00 operating system version
            0.00 image version
            5.00 subsystem version
               0 Win32 version
            2000 size of image
             200 size of headers
            FB48 checksum
               A subsystem (EFI Application)
0
Эксперт Hardware
Эксперт Hardware
 Аватар для R71MT
6206 / 2441 / 402
Регистрация: 29.07.2014
Сообщений: 3,174
Записей в блоге: 4
28.04.2024, 11:06
Цитата Сообщение от MaGz GoLd Посмотреть сообщение
Если кто шарит, подскажите софт для теста на macos.
виртуальная машина QEMU: https://ports.macports.org/port/qemu/
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.04.2024, 11:06
Помогаю со студенческими работами здесь

Восстановление UEFI загрузчика Windows 7 Ultimate x64
Здравствуйте. Суть проблемы начну излагать издалека. На компьютере на чистый хард была сначала поставлена Win7, естественно через режим...

Как определить тип загрузчика флешки - Обычный или UEFI
Здравствуйте , Как определить тип загрузчика флешки - Обычный или UEFI может есть команды в windows или отдельные программы. Спасибо

nvlddmkm.sys, dxgkrnl.sys, dxgmms1.sys, ntoskrnl.exe, watchdog.sys
Здравствуйте! У меня такая проблема компьютер стоит 3 года в последние дни 19 июля оставил игру включенную и отошел на 5 минут пришел игра...

MSI GTX 970 4GD5T OC Nvlddmkm.sys, dxgkrnl.sys и dxgmms1.sys
Всем привет! Видеокарта MSI GTX 970 4GD5T OC. Windows 7 x64. В последнее время стала очень часто вылезать ошибка BSoD 116, комп уходит в...

Что такое драйвера atapi.sys , pciide.sys и pciidex.sys
При попытке прогуглить эти драйвера в основном выдаёт, что это драйвера для соединения винды и жёсткого диска, это понятно, но какую именно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru