汇编实验:彩色字符中间位置显示字符串-创新互联
汇编实验九:在屏幕中间位置显示三行彩色字符串
创新互联公司始终坚持【策划先行,效果至上】的经营理念,通过多达10年累计超上千家客户的网站建设总结了一套系统有效的全网整合营销推广解决方案,现已广泛运用于各行各业的客户,其中包括:石牌坊等企业,备受客户称赞。80*25彩色字符模式显示缓冲区在B8000H到BFFFFH位置。一行80个字符号,160个字节。其中每个字的低位存储ASC2码,高位存储字符颜色属性。
属性格式:
7 6 5 4 3 2 1 0
BL R G B I R G B
7闪烁; 6、5、4背景; 3高亮; 2、1、0前景
0 1 0 0 1 0 1 0 4ah
0 1 0 0 0 1 0 1 45h
0 0 1 0 0 0 0 1 21h
1 assume cs:codes,ds:dates,ss:stacks
2
3 dates segment
4 db 4ah,45h,21h ;颜色 5 db 'welcome to masm!' 6 dates ends
7 stacks segment
8 db 6 dup (0)
9 stacks ends
10 codes segment
11 start:12 mov ax,dates
13 mov ds,ax
14
15 mov ax,stacks
16 mov ss,ax
17 mov sp,25 ;3+16+6,指向栈底18
19 mov ax,0b800h;彩色模式缓冲区20 mov es, ax
21
22 ;(25-3)/2 = 11行23 ;(80-16)/2 = 32列24 ;(11-1)*160 + 32 = 1632 = 0660h25 mov bx,0660h;
26
27 mov di,028 mov cx,329 setcolor:30 push cx
31 push di;颜色存放偏移位置32
33 mov ax,ds:[di];依次获取颜色值34 mov di,ax
35 mov si,336 mov cx,1637 setchar:38 mov al,[si]
39 mov es:[bx],al;设置字符40 mov ax,di
41 mov es:[bx+1],al;设置颜色属性42 add bx,243 inc si
44 loop setchar
45
46 ;输出字符串16个字节加16个属性字节47 ;160-16*2 = 0080h48 add bx,0080h;
49 pop di
50 pop cx
51 inc di
52 loop setcolor
53
54 mov ax,4c00h
55 int 21h
56 codes ends
57 end start
View Code 文章名称:汇编实验:彩色字符中间位置显示字符串-创新互联
文章网址:http://cdiso.cn/article/dggjie.html