I read in my assembly book that a segment is 16 bytes long and also that to display text to the screen you can put stuff in [0B800H : offset] I did this and its happy and works. But just now I was at osdev.org and read that to put stuff on the screen you just have to put stuff in [es : 0B800H] with es address as 0. Now thats what makes no sense at all, when you access memory in asm its like this [segment : offset] right? If Im correct about a segment being 16 bytes and correct about how accessing memory works then you can probably see why Im confused. It might be that my asm book is for dos and osdev.org focuses on 32 bit **** so that its a different address entirely but still doesnt make much sense. Or maybey Im just not understanding segments properly. thanks for any help