1

我需要编写一个程序来将 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

这段代码到目前为止是惰性的;它编译、运行然后退出而不打印任何内容。我想我错过了一条线。

4

1 回答 1

2

为了能够写入视频内存,请将 ES 设置为 0b800h 在屏幕上指定要写入的位置(偏移)。将 DI 设置为 (row*(max. rows (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 . 这样您就可以动态地写入屏幕上的不同位置。

于 2014-12-08T17:52:50.423 回答