1
0
Fork 0
mirror of https://github.com/tailix/loadwarka.git synced 2024-11-11 13:50:54 -05:00
loadwarka/src/x86/stage2.S

72 lines
973 B
ArmAsm
Raw Normal View History

2022-01-26 15:19:39 -05:00
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
2022-01-26 17:43:18 -05:00
2022-01-26 15:19:39 -05:00
.code16
.global _start
2022-01-27 12:32:40 -05:00
.extern program_size
2022-01-27 12:34:57 -05:00
2022-01-26 15:19:39 -05:00
.section .text
2022-01-26 18:16:14 -05:00
_start:
2022-01-26 20:46:04 -05:00
ljmp $0, $main
2022-01-26 17:43:18 -05:00
2022-01-26 19:30:53 -05:00
.align 2
2022-01-27 12:32:40 -05:00
size: .word program_size
2022-01-26 19:21:22 -05:00
2022-01-26 20:28:33 -05:00
hello2: .string "Hello from stage 2!\r\n"
hello3: .string "Hello from sector 3!\r\n"
2022-01-26 20:51:26 -05:00
hello4: .string "Hello from sector 4!\r\n"
2022-01-26 17:43:18 -05:00
2022-01-26 18:03:47 -05:00
main:
2022-01-26 20:46:04 -05:00
mov $hello2, %si
2022-01-26 17:43:18 -05:00
call print_str
2022-01-26 15:19:39 -05:00
2022-01-26 20:51:26 -05:00
mov $teststr3, %si
2022-01-26 20:06:12 -05:00
call print_str
2022-01-26 20:51:26 -05:00
mov $teststr4, %si
call print_str
ljmp $0, $sector3
2022-01-26 17:43:18 -05:00
do_ret:
ret
2022-01-26 19:26:54 -05:00
// AL - char
2022-01-26 17:43:18 -05:00
print_char:
mov $0x0E, %ah
mov $0x0001, %bx
int $0x10
2022-01-26 19:36:10 -05:00
ret
2022-01-26 17:43:18 -05:00
2022-01-26 19:26:54 -05:00
// SI - string pointer
2022-01-26 17:43:18 -05:00
print_str:
lodsb
test %al, %al
jz do_ret
call print_char
jmp print_str
2022-01-26 19:21:22 -05:00
2022-01-26 20:51:26 -05:00
.fill 512, 1, 0
2022-01-26 20:06:12 -05:00
2022-01-26 20:51:26 -05:00
teststr3: .string "Test string from sector 3\r\n"
2022-01-26 19:47:11 -05:00
2022-01-26 20:51:26 -05:00
sector3:
2022-01-26 20:46:04 -05:00
mov $hello3, %si
2022-01-26 20:28:33 -05:00
call print_str
2022-01-26 20:51:26 -05:00
ljmp $0, $sector4
.fill 512, 1, 0
teststr4: .string "Test string from sector 4\r\n"
sector4:
mov $hello4, %si
call print_str
2022-01-26 20:28:33 -05:00
hang:
cli
hlt
jmp hang