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

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM