编程:参考教材实验9,在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串’welcome to masm’。
一、分析
8086CPU中,80x25彩色字符模式显示缓冲区的结构:内存地址空间中,B8000H~BFFFFH共32kb的空间,为80x25彩色字符模式的显示缓冲区。向这个地址空间写入数据,写入的内容将立即出现在显示器上。显示器可以显示25行,每行80个字符,每个字符可以有256种属性。
显示缓冲区分8页,一般情况下,显示第0页的内容。也就是通常情况下,B8000H~B8F9FH中的4000个字节的内容将出现在显示器上。要出现在中间,即出现在11、12、13行,开始的对应的地址分别为6E0H、6E0H+0A0H、6E0H+0A0H+0A0H。 而每列160个字节,要是显示在中间,则字符串第12行首地址为710H。接下来,就要把这些字符显示在显示器了。对了,这里应该注意的一个地方是,在显示缓冲区,偶地址存放字符,奇地址存放字符的颜色属性,所以在寻找列的中间位置的时候要考虑到。160-16*2=96。96/2=48.
二、代码:
assume cs:code
data segment
db ‘Welcome to masm!’
data ends
code segment
start: mov ax,data
mov es,ax
mov ax,0b800h;基地址
mov ds,ax
mov bx,0710h;设置字符串首地址
mov cx,16;总共16个字符,所以循环16次mov si,0s:mov ax,es:[si];取出字符mov ah,02h;设置属性为绿色mov word ptr ds:[bx],ax;把字符输入到需要显示的地址mov ah,24h;设置属性为绿底红色、mov word ptr ds:[bx+0a0h],axmov ah,71h;设置属性为白底蓝色mov word ptr ds:[bx+0a0h+0a0h],axinc siadd bx,2loop smov ax,4c00hint 21h
code ends
end start
三、截图
本文发布于:2024-02-01 22:12:43,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170679676439755.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |