shadeos/learning/old_src/old-16b/boot_stack.asm

38 lines
585 B
NASM
Raw Normal View History

mov ah, 0x0e ; tty mode
mov bp, 0x8000 ; far away from 0x7c00, want to avoid overwriting ourself
mov sp, bp ; if stack empty, sp points to bp
push 'A'
push 'B'
push 'C'
; stack grows downwards
mov al, [0x7ffe] ; 0x8000 - 2
int 0x10
; you can only access stack top now
mov al, [0x8000]
int 0x10
; recover chars with pop
; you can onoly pop words, so you need an aux register to manipulate the lower byte
pop bx
mov al, bl
int 0x10
pop bx
mov al, bl
int 0x10
pop bx
mov al, bl
int 0x10
; pop'd stack is garbage now
mov al, [0x8000]
int 0x10
jmp $
times 510-($-$$) db 0
dw 0xaa55