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

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

27.04.2024, 23:03. Показов 831. Ответов 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
6180 / 2416 / 400
Регистрация: 29.07.2014
Сообщений: 3,151
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
Множества в Python
py-thonny 11.06.2025
В Python существует множество структур данных, но иногда я сталкиваюсь с задачами, где ни списки, ни словари не дают оптимального решения. Часто это происходит, когда мне нужно быстро проверять. . .
Работа с ccache/sccache в рамках C++
Loafer 11.06.2025
Утилиты ccache и sccache занимаются тем, что кешируют промежуточные результаты компиляции, таким образом ускоряя последующие компиляции проекта. Это означает, что если проект будет компилироваться. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
OSZAR »