题目:在屏幕中间显示绿色,绿底红色,白底蓝色的字符串‘welcome to masm!’
80X25彩色字符模式显示缓冲区的结构:
在内存地址结构中,B8000H~BFFFFH共32KB的空间,为80×25彩色字符模式的显示缓冲区。向这个地址空间写入数据,写入的内容将立即出现在
显示器上。
在80×25彩色模式下,显示器可以显示25行,每行80个字符,每个字符可以由256中属性。
80×25模式下,一屏的内容在显示缓冲区共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 segment11 db 128 dup (0)12 stack ends13 14 code segment15 16 start: mov ax,stack17 mov ss,ax18 mov sp,12819 20 mov ax,data21 mov ds,ax22 23 jmp show_m24 25 xh: jmp xh26 27 next: mov ax,4c00h28 int 21h29 ;-------------------------------------30 show_m:31 32 mov bx,0b800h33 mov es,bx34 35 mov bx,16 ; ds:[bx] color36 mov di,12*160+60 ; es:[di] zimu + color37 38 mov cx,339 40 s_c: push cx41 push di42 43 mov si,0 ; ds:[si] zimu44 mov cx,1645 46 47 s_w: mov dl,ds:[si]48 mov dh,ds:[bx]49 mov es:[di],dx50 inc si51 add di,252 loop s_w53 54 pop di55 pop cx56 inc bx57 add di,16058 loop s_c59 60 jmp next61 62 63 64 code ends65 66 end start
灯红酒绿的城市,登上楼顶,俯视万家灯火,