鱼C论坛

 找回密码
 立即注册
查看: 2655|回复: 4

关于在DOS中显示字符的奇怪问题

[复制链接]
发表于 2017-9-20 09:27:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
这是我写的代码,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, [bx]                        ;定位第一行的字符串
                mov ah, 09h;
                mov es:7c2h[si], al                ;低位存储字符
                mov es:7c3h[si], ah                ;高位存储字符显示的属性
               
                mov al, 24[bx]                ;定位第二行的字符串
                mov ah, 04h
                mov es:861h[si], al                ;定位第二行显示的字符
                mov es:862h[si], ah

                mov al, 48[bx]                ;定位第三行字符串
                mov ah, 0ch
                mov es:8f8h[si], al                ;低位存储的字符
                mov es:8f9h[si], ah                ;高位存储的字符
               
                inc bx
                add si, 2
                loop s

                mov ax, 4c00h
                int 21h
codsg ends
end start


两个奇怪的问题:
1、显示第二行的时候为乱码(但第一、三行可以正常显示)
2、有时候在DOS中运行程序时,什么也不显示,黑屏现象(我用的是虚拟机下的XP系统)。

请教下各位大神们,这是什么情况,有遇到过的吗?
在这先谢谢了!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-9-20 11:30:11 | 显示全部楼层
上面编译程序执行的效果如图

dos-exe

dos-exe
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-20 15:16:30 | 显示全部楼层
已解决!
mov es:860h[si], al                ;定位第二行显示的字符
mov es:861h[si], ah
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-20 15:20:06 | 显示全部楼层
weizhongyang 发表于 2017-9-20 15:16
已解决!
mov es:860h[si], al                ;定位第二行显示的字符
mov es:861h[si], ah

明白了,

奇数位存放字符, 偶数位存储显示字符的属性!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-9-21 10:31:34 | 显示全部楼层
此问题已解决,结帖了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 04:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表