I am new to programming in assembly language and I was wondering how to display ASCII characters on the computers monitor if I'm programming in x86 assembly language right to the hardware.
Posted on 2006-12-04 18:20:10 by mjolnir
Hi ,

As far as I know you can do it using windows 9x ,as you have access to the hardware by using interupts.
Not 100 percent as I'm a beginer, but you need to get the address of the video card (memory address) fill some buffer in the video memory with the chars .

On windows Nt and above you don't have direct access .

Hope that helps .
Posted on 2006-12-04 18:40:43 by gavin
If you want to do "right to the hardware", write 16bit DOS code... depending on what you want/need, this might even work in a dos box under under 9x and (to a lesser extent) NT - or you could use dosemu, qemu, bochs, vmware, virtualpc...

Posted on 2006-12-04 18:44:50 by f0dder
It is possible to access the video directly beginning at address b800. This even worked on my XP machine in a dos window. Note: that there is a character AND atribute so every other screen location determines the color. This is a fast way to output text.

mov ds,b800
mov dx,00
mov ,"the character"
add dx,02
mov ,"the next character"
Posted on 2006-12-05 09:56:37 by Jeronimo0d0a
It works in a dos box (well, cmd.exe with launched NTVDM :) ), but not from a window native app. Also, you might need to call some DOS/BIOS interrupt from your dos app before direct screen output works.
Posted on 2006-12-05 17:19:45 by f0dder
Yes, definitely a primitive DOS app if you're doing direct video.  I didn't have to do anything special, but I will say it's not fast in a window, only full screen.  This is done with the DOS debug, so anyone with a bootable pc can try it.
Posted on 2006-12-06 10:49:03 by Jeronimo0d0a