实验9 根据材料编程

assume cs:code
data segment
	db 'welcome to masm!'
	db 42H,07H,71H
data ends

stack segment
	db 8 dup(0)
stack ends
code segment
start:	mov ax,data
		mov ds,ax
		mov ax,stack
		mov ss,ax
		mov sp,10H
		mov ax,0b800H
		mov es,ax
		mov si,10H	;字符属性所在的地址
;确认了地址,开辟了栈空间,接下来是进行循环。
;cmd屏幕在清空条件下,大概12~13行居中,一行160个字节,故160*12+((160-16)/2)为正中央,即1992H
	mov bx,1980	;后续操作是把数据写入es:[bx],所以这里是十进制的偏移地址
	mov cx,3	;总共写入三行	
s:	push cx		;保存外层循环的循环数
	mov di,0	;初始化偏移地址
	mov cx,16	;每行写入16个字符

output:	mov al,[di]	;将字符从ds:[di]写入es:[bx]
		mov es:[bx],al	;初始为1992
		mov ah,[si]	;将字符属性从ds:[si]写入es:[bx+1]
		mov es:[bx+1],ah	;初始为1993
		inc di		;di+1,写入下一个字符
		add bx,2	;1992+2为下一个字符
		loop output
	;内层循环结束后,将跳转到下一行,初始地址为es:[bx+128]
	add bx,128	
	inc si		;更换字符属性
	pop cx		;取出外层循环的循环数
	loop s
mov ax,4c00h
int 21h
code ends
end start 

首先需要debug一下
在这里插入图片描述
使用g指令

在这里插入图片描述
在这里插入图片描述

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值