8086地址b800h:使用TASM将符号直接写入视频内存

时间:2013-04-07 08:50:16

标签: memory video assembly x86-16 tasm

我想编写一个程序,通过直接写入视频内存来显示ascii符号。

.model tiny
.stack
.data
.code
main: 

mov ax, b800h
mov ds, ax

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

end main

当我尝试使用TASM

编译时,我收到此错误
"Undefined symbol: B800H"

1 个答案:

答案 0 :(得分:3)

在它前面放一个0,以便TASM可以告诉它是一个数值而不是一个符号:

mov ax, 0b800h

您似乎也遗漏了任何将从您的程序返回的内容。没有它,很难说{em>代码将在mov es:[20], al之后运行,但我怀疑它不会很漂亮。

您需要int 21, function 4c之类的内容。我总是发现Ralf Brown's interrupt list对于这类东西非常宝贵。


TASM 5在90年代发布并修补到大约2002年,并且不支持自那时以来已经完成的许多新内容(MMX,SSE等)。我个人最喜欢的是NASM,但还有很多其他选择。