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