|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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系统)。
请教下各位大神们,这是什么情况,有遇到过的吗?
在这先谢谢了!!!! |
|