2025-07-04 03:10:55 +02:00
|
|
|
// vim: et:sw=12:ts=12:sts=12
|
|
|
|
|
|
|
|
|
|
.global _start
|
|
|
|
|
.text
|
2025-07-04 04:02:05 +02:00
|
|
|
.code16
|
2025-07-04 03:10:55 +02:00
|
|
|
|
|
|
|
|
_start:
|
2025-07-04 04:02:05 +02:00
|
|
|
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
|
|
|
|
|
|
2025-07-04 03:10:55 +02:00
|
|
|
xor %bx, %bx
|
2025-07-04 04:02:05 +02:00
|
|
|
mov 4(%bp), %si
|
|
|
|
|
|
|
|
|
|
1: lodsb
|
|
|
|
|
or %al, %al
|
|
|
|
|
jz 2f
|
2025-07-04 03:10:55 +02:00
|
|
|
mov $0x0E, %ah
|
|
|
|
|
int $0x10
|
|
|
|
|
jmp 1b
|
2025-07-04 04:02:05 +02:00
|
|
|
|
|
|
|
|
2: pop %si
|
|
|
|
|
pop %bx
|
|
|
|
|
mov %bp, %sp
|
|
|
|
|
pop %bp
|
|
|
|
|
ret
|
|
|
|
|
|
|
|
|
|
message: .asciz "Hello, World!"
|