nostr:npub1v96a5ce23jgc0fpk3uxg44nm3fhgsnck63tf2ja98vwkq6tvgpus2v8jt9 I use teletype output, int 10/ah=0x0e, it prints one character at the time. I only tested it on real hardware though, I imagine most virtual machines are not meant to run real-mode code at all.
Now I'm figuring out how to transfer control from the MBR to a partition boot sector. On the arch linux iso, 'LBA start' is 0x40, but stuff at that offset (0x20000) doesn't look like valid machine code to me