王爽《汇编语言》实验10

这篇博客主要介绍了王爽《汇编语言》实验10的内容,包括编写一个通用子程序实现显存无关的字符串显示功能,并探讨了如何解决除法操作中可能出现的溢出问题。实验结果显示了字符串正确显示的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.显示字符串

编写一个通用的子程序,向调用者提供与显存无关的接口,方便调用者在窗口指定位置显示字符串的功能。

assume cs:code

data segment
	db 'Welcome to masm!',0		;要显示的字符串
data ends

code segment
start:	mov dh,8			;行号
	mov dl,3			;列号
	mov cl,2			;指定显示属性(颜色、闪烁等),此处为绿色显示
	mov ax,data
	mov ds,ax
	mov si,0
	call show_str		        ;调用子程序
	
	mov ax,4c00h
	int 21h
		
;子程序		
show_str:	mov ax,0b800h		;显存的段地址
		mov es,ax
		mov al,0a0h		;0a0h表示每行的字符数(每行80个字符,每个字符需占用2个字节,
						;其中包含属性字节),用于计算用户指定行的起始地址			
		mul dh			;计算得到指定行偏移地址
		mov di,ax
		mov al,2		;用于计算用户指定行的起始列位置
		mul dl
		add di,ax		;最后得到需要显示字符的具体偏移地址,并赋给di
			
    put:	push cx			;由于在子程序中需要使用cx寄存器,这里保存cx中的值(字体的属性)
		mov cl,ds:[si]	    ;获得需要显示的字符
		mov ch,0
		jcxz ok			;若cx=0,则转到ok处,返回,即表示到达了字符串末尾
		mov es:[di],cl		
		pop cx
		mov es:1[di],cl
		inc si
		add di,2
		jmp short put			
ok:		ret				;子程序返回
code en
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值