您的位置:首页 > 其它

汇编实现屏幕中指定内容打印

2017-10-15 15:08 274 查看
在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串 ‘welcome to masm!’。

实现代码为:

assume cs:code,ss:stack,ds:data

data segment

db  'welcome to masm!'
db  00000010B
db  00100100B
db  01110001B

data ends

stack segment stack

db 128 dup(0)

stack ends stack

code segment
start: mov ax,stack
mov ss,ax
mov sp,128

jmp show_masm

next:mov ax,4c00H
int 21H

;===========================================

show_masm:mov bx,data
mov ds,bx

mov cx,3
mov di,80*2*12+80

mov bx,0B800H
mov es,bx

mov bx,16

showmasm: push cx
push di

mov cx,16
mov si,0
mov dh,ds:[bx]

showstring:mov dl,ds:[si]
mov es:[di],dx

inc si
add di,2
loop showstring

pop di
pop cx

add di,160
inc bx
loop showmasm

jmp next

code ends
end start


在内存地址空间中,B8000H-BFFFFFH共32KB的空间,共80*25彩色字符模式的显示缓冲区,向这个地址空间写入数据,写入的内容将立即显示在显示器上。

显示缓冲区分为8页,每页4KB。

在每一行中,一个字符占两个字节的存储空间(一个字),低位字符存储字符的ASCII码,高位字节存储字符的属性,一行80个字符,占160个字节。

在显示缓冲区,偶数地址存放字符,奇数地址存放字符的颜色属性。

颜色属性字节中格式为:



如:红色高亮闪烁绿色:11001010B
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  显存 内存地址
相关文章推荐