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