如何使用汇编在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
运行后,实现效果如下:
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
运行后,实现效果如下:
相关文章推荐
- Dynamic CRM 2013学习笔记(二十六)报表设计:Reporting Service报表 动态参数、参数多选全选、动态列、动态显示行字体颜色
- Android(java)学习笔记96:如何改变spinner系统自带的字体和颜色
- ios学习笔记:设置UIButton的文字显示位置、字体的大小、字体的颜色
- 【WPF学习笔记】之如何传递第一个登录界面的值到下一个页面显示:动画系列之(三)
- python3.4学习笔记(十八) pycharm 安装使用、注册码、显示行号和字体大小等常用设置
- CYPRESS BLE学习心得(一):如何在使用CYPRESS BLE中的SFLash
- android 开发零起步学习笔记(二十):Android开发笔记:如何使用预先制作好的SQLite数据库(整理自网络)
- 汇编输出字符串显示问题学习笔记
- 如何使用qtp检查网页中显示的文字颜色为指定的颜色
- 如何使用EasyUI显示表格界面
- C语言学习笔记----伊能C语言学习笔记----如何在一个文件中使用另一个文件中定义的变量呢??
- Linux学习笔记——如何使用echo指令向文件写入内容
- 32位汇编语言学习笔记(40)--在汇编代码中使用libc库函数
- Linux学习笔记2:如何快速的学习使用一个命令
- j2me学习笔记【15】——使用低层用户界面显示文本小实例
- Vue2.5学习笔记之如何在项目中使用和配置Vue
- android学习之三:如何使用自定义颜色
- 使用Qt 4如何设置QLabe中字体的颜色
- 【学习笔记】汇编:关于CLD以及DF的用法,还有一点REP的使用
- 如何修改Recovery的字符串资源(修改显示字体颜色和大小)