From 5fee8cbbcfeb515061564c293745aed233540e99 Mon Sep 17 00:00:00 2001 From: Thomas Oltmann Date: Fri, 4 Jul 2025 04:02:05 +0200 Subject: [PATCH] Basic BIOS-based print function --- boot16.S | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/boot16.S b/boot16.S index e5ac141..468a2ae 100644 --- a/boot16.S +++ b/boot16.S @@ -1,14 +1,39 @@ // vim: et:sw=12:ts=12:sts=12 - .code16 .global _start .text + .code16 _start: - xor %bx, %bx - mov $0x0E, %ah - mov $'A', %al - int $0x10 + mov %cs, %ax + mov %ax, %ds + + push $message + call print + add $2, %sp 1: hlt jmp 1b + +print: push %bp + mov %sp, %bp + push %bx + push %si + + xor %bx, %bx + mov 4(%bp), %si + +1: lodsb + or %al, %al + jz 2f + mov $0x0E, %ah + int $0x10 + jmp 1b + +2: pop %si + pop %bx + mov %bp, %sp + pop %bp + ret + +message: .asciz "Hello, World!"