x8086汇编在显存中显示字符串

题目:在屏幕中间显示绿色,绿底红色,白底蓝色的字符串‘welcome to masm!’

 

80X25彩色字符模式显示缓冲区的结构:

  在内存地址结构中,B8000H~BFFFFH共32KB的空间,为80x25彩色字符模式的显示缓冲区。向这个地址空间写入数据,写入的内容将立即出现在

显示器上。

  在80x25彩色模式下,显示器可以显示25行,每行80个字符,每个字符可以由256中属性。

  80x25模式下,一屏的内容在显示缓冲区共4000个字符。

===========================================================

绿色:    0000 0010B -> 02H

绿底红色:  0010 0100B -> 24H

白底蓝色:  0111 0001B -> 71H

============================================================

代码:

 

 1 assume cs:code,ss:stack,ds:data
 2 
 3 data segment
 4         db 'welcome to masm!'
 5         db 00000010B
 6         db 00100100B
 7         db 01110001B
 8 data ends
 9 
10 stack segment
11         db 128 dup (0)
12 stack ends
13 
14 code segment
15 
16  start: mov ax,stack
17         mov ss,ax
18         mov sp,128
19 
20         mov ax,data
21         mov ds,ax
22 
23         jmp show_m
24 
25    xh:  jmp xh
26 
27   next: mov ax,4c00h
28         int 21h
29 ;-------------------------------------
30 show_m:
31 
32         mov bx,0b800h
33         mov es,bx
34 
35         mov bx,16             ; ds:[bx]  color
36         mov di,12*160+60      ; es:[di]  zimu + color
37 
38         mov cx,3
39 
40  s_c:   push cx
41         push di
42 
43         mov si,0              ; ds:[si] zimu
44         mov cx,16
45 
46 
47  s_w:   mov dl,ds:[si]
48         mov dh,ds:[bx]
49         mov es:[di],dx
50         inc si
51         add di,2
52         loop s_w
53 
54         pop di
55         pop cx
56         inc bx
57         add di,160
58         loop s_c
59 
60         jmp next
61         
62 
63 
64 code ends
65 
66 end start

 

posted @ 2016-05-07 12:15  小黄人python  阅读(2758)  评论(0编辑  收藏  举报