2D, 3D, game, games, online game, game development, game engine, programming, OpenGL, Open AI, math, graphics, design, graphic, graphics, game development, game engine, programming, web development, web art, web graphic, arts, tutorial, tutorials,
miercuri, 20 noiembrie 2024
FASM : simple bootloader source code with menu .
This is the source code with a boot menu and can be tested with qemu emulator.
I need to use the Sonet 3.5 artificial inteligence to search infos and make this source code better, but I learn assembly in the past.
The compile commands of the source code:
mythcat@localhost:~/fasm$ ./fasm.x64
flat assembler version 1.73.32
...
mythcat@localhost:~/fasm$ ./fasm.x64 bootloader.asm bootloader.bin
flat assembler version 1.73.32 (16384 kilobytes memory, x64)
2 passes, 512 bytes.
The test with qemu tool:
mythcat@localhost:~/fasm$ qemu-system-x86_64 -drive format=raw,file=bootloader.bin
Let's see the source code:
; Simple Bootloader with Menu for QEMU
; Written in FASM
org 0x7C00
format binary
start:
; Clear the screen
xor ax, ax
mov ds, ax
mov es, ax
mov ah, 0x0
int 0x10
; Display the menu
call display_menu
main_loop:
; Wait for key press
call wait_for_input
; Check key pressed
cmp al, '1'
je handle_option1
cmp al, '2'
je handle_option2
; Invalid option, restart
jmp main_loop
handle_option1:
; Option 1 selected
mov si, option1_msg
call display_message
call wait_for_input ; Wait for any key
jmp start ; Return to menu
handle_option2:
; Option 2 selected
mov si, option2_msg
call display_message
call wait_for_input ; Wait for any key
jmp start ; Return to menu
display_menu:
; Display the menu
mov si, menu
call print_string
ret
wait_for_input:
; Wait for a key press
xor ax, ax
int 0x16
ret
print_string:
; Print string at DS:SI
mov ah, 0x0E
@@:
lodsb
test al, al
jz @f
int 0x10
jmp @b
@@:
ret
display_message:
; Print message at DS:SI
call print_string
ret
menu db 'Simple Bootloader Menu', 13, 10
db '1. Option 1', 13, 10
db '2. Option 2', 13, 10
db 'Select an option: ', 0
option1_msg db 13, 10, 'You selected Option 1!', 13, 10
db 'Press any key to return to menu...', 13, 10, 0
option2_msg db 13, 10, 'You selected Option 2!', 13, 10
db 'Press any key to return to menu...', 13, 10, 0
rb 510-($-$$)
db 0x55, 0xAA
This is the result:
Posted by
Cătălin George Feștilă
Labels:
2024,
artificial intelligence,
assembly,
design,
FASM,
graphic,
graphics,
tutorial,
tutorials
News : Gamedev In-Depth | How I Implement a New Feature.
Devlog video about "Homegrown", a casual farming game I'm creating using my own engine.
... this video is from ThinMatrix - youtube channel.
Abonați-vă la:
Postări (Atom)