在8086上使用TASM将ASCII符号写入视频内存

时间:2013-04-07 09:14:59

标签: memory video assembly x86-16 tasm

我需要编写一个程序,用于将ASCII符号写入视频内存。

.model tiny
.stack
.data
.code
main: 

mov ax, 0b800h
mov ds, ax

mov aL, 'x'
mov es, bx
mov es:[1], aL

mov ah, 4ch
int 21h

end main

此代码尚未呈现;它编译,运行然后退出而不打印任何东西。 我想我错过了一条线。

1 个答案:

答案 0 :(得分:2)

为了能够写入视频内存,请将ES设置为0b800h 在要写入的屏幕上指定位置(偏移)。将DI设置为(行*(最多行(80))+ col)* 2(ROW和COL基于空)。例如,要写入第10行中的第三个字符,请使用“mov di,(2 * 80 + 9)* 2” 在AH中指定颜色。设置AH为(backgroundcolor * 16 + foregroundcolor)例如在黑色(0)背景上写浅灰色(7)字母使用“mov ah,7” 使用STOSW指令代替“mov es:[adress]”,al。这样您就可以动态地写入屏幕上的不同位置。