您的位置:首页 > 其它

如何使用汇编在dos界面上显示字体和颜色--学习心得笔记

2013-05-30 14:11 841 查看
最近在学习王爽老师编著的《汇编语言》,王老师深入浅出的讲述,使得汇编语言的学习难度大为降低,文章不再是晦涩难懂,只要你肯花时间,所有书上讲述的内容都可以弄懂,这几天我刚学到第九章,实验九要求我们自己在屏幕的中央显示三行不同颜色和底色的字符串,用的是80*25彩色模式,即在内存B8000~BFFFF段的32kb内存中写入数据,原理书本上讲得很清楚,下面是我的实现代码:

assume cs:code, ds:data, ss:stack

data segment

db 'welcome to masm!'
;字符段

db 16 dup(02h)
;绿色字体信息

db 16 dup(00100100b)
;绿底红色

db 16 dup(01110001b)
;白底蓝色

data ends

stack segment
;栈段

db 0, 0, 0, 0

stack ends

code segment

start:
mov ax, data ;获得数据段地址

mov ds, ax
;获取段地址

mov bx, 0
;数据段偏移地址寄存器

mov cx, 3
;welcome to masm!为16个字符

mov di, 0
;颜色信息索引

mov ax, stack

mov ss, ax
;获得段寄存器地址

mov sp, 4

mov ax, 1011100000000000b
;获得显示区段地址,B800

mov es, ax

mov si, 1660

s0: push cx

mov cx, 16

s: mov al, ds:[bx]
;将字符移入寄存器

mov es:[si], al
;将字符移入显示区

mov al, ds:[bx].16[di]
;将颜色信息移入寄存器

mov es:[si].1, al
;将颜色信息移入显示区

add si, 2

inc bx

loop s

add si, 128
;进入下一行

add di, 16
;进入下一个串的字体信息段

mov bx, 0

pop cx

loop s0

mov ax, 4c00h

int 21h

code ends

end start

运行后,实现效果如下:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐