关于在DOS中显示字符的奇怪问题
这是我写的代码,dos居中显示我定义的字符,代码如下:assume cs:codsg, ds:datsg
datsg segment
db 'hello, baiyang '
db 'welcome to here '
db 'this is a assembly world'
datsg ends
codsg segment
start: mov ax, datsg
mov ds, ax
mov bx, 0
mov ax, 0b800h
mov es, ax
mov ax, 0
mov ss, ax
mov ax, 0003h ;这两条指令为清屏功能
int 10h
mov si, 0
mov cx, 24
s: mov al, ;定位第一行的字符串
mov ah, 09h;
mov es:7c2h, al ;低位存储字符
mov es:7c3h, ah ;高位存储字符显示的属性
mov al, 24 ;定位第二行的字符串
mov ah, 04h
mov es:861h, al ;定位第二行显示的字符
mov es:862h, ah
mov al, 48 ;定位第三行字符串
mov ah, 0ch
mov es:8f8h, al ;低位存储的字符
mov es:8f9h, ah ;高位存储的字符
inc bx
add si, 2
loop s
mov ax, 4c00h
int 21h
codsg ends
end start
两个奇怪的问题:
1、显示第二行的时候为乱码(但第一、三行可以正常显示)
2、有时候在DOS中运行程序时,什么也不显示,黑屏现象(我用的是虚拟机下的XP系统)。
请教下各位大神们,这是什么情况,有遇到过的吗?
在这先谢谢了!!!! 上面编译程序执行的效果如图
已解决!
mov es:860h, al ;定位第二行显示的字符
mov es:861h, ah weizhongyang 发表于 2017-9-20 15:16
已解决!
mov es:860h, al ;定位第二行显示的字符
mov es:861h, ah
明白了,
奇数位存放字符, 偶数位存储显示字符的属性!{:5_97:} 此问题已解决,结帖了。
页:
[1]