8086汇编 实验9根据材料编程

编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串 ‘welcome tomasm!’。

80x25彩色字符模式显示缓冲区(以下简称为显示缓冲区)的结构:
内存地址空间中,B8000H~BFFFFH共 32KB的空间,为80×25彩色字符模式的显示缓冲区。向这个地址空间写入数据,写入的内容将立即出现在显示器上。
在80x25彩色字符模式下,显示器可以显示25行,每行80个字符,每个字符可以有256种属性(背景色、前景色、闪烁、高亮等组合信息)。
这样,一个字符在显示缓冲区中就要占两个字节,分别存放字符的ASCII码和属性。80×25模式下,一屏的内容在显示缓冲区中共占4000个字节。
显示缓冲区分为8页,每页4KB(≈4000B),显示器可以显示任意一页的内容。一般情况下,显示第0页的内容。也就是说通常情况下,B8000H ~ B8F9FH中的4000个字节的内容将出现在显示器上。
在这里插入图片描述
在这里插入图片描述

实验实现代码

assume cs:code

data segment
	db 'welcome to masm!'	;B8000H~BFFFFH区域显示
data ends

color segment
	db 02h,24h,71h
color ends

code segment
start:	mov ax,data
		mov ds,ax
		mov dx,color
		mov ax,0b86eh
		mov es,ax

		mov cx,3			;显示3行
		mov di,0
	s0:	push cx
		call show
		mov ax,es
		add ax,10
		mov es,ax
		inc di
		pop cx
		loop s0
		mov ax,4c00h
		int 21h


show:	push es
		mov es,dx
		mov ah,es:[di]
		pop es				;找出对应的color
		mov cx,16
		mov bx,0
		mov si,64
	s:	mov al,ds:[bx]
		mov es:[si],al
		mov es:[si+1],ah
		inc bx
		add si,2
		loop s
		ret

code ends
end start

运行结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值