汇编实验:彩色字符中间位置显示字符串-创新互联

汇编实验九:在屏幕中间位置显示三行彩色字符串

创新互联公司始终坚持【策划先行,效果至上】的经营理念,通过多达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://pwwzsj.com/article/dggjie.html