题目:在屏幕中间显示绿色,绿底红色,白底蓝色的字符串‘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
时间: 2024-10-07 06:32:29