汇编语言 实验10.1(王爽 第三版) 1.编写子程序-显示字符串

其他两个子程序:
2.编写子程序-解决除法溢出的问题 https://blog.csdn.net/qq_41700629/article/details/89426260
3.编写子程序-数值显示 https://blog.csdn.net/qq_41700629/article/details/89447439

1.编写子程序-显示字符串

子程序描述
名称:show_str
功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。
参数:(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79),
(cl)=颜色,ds:si指向字符串的首地址
返回:无
应用举例:在屏幕的8行3列,用绿色显示data段中的字符串。
提示
(1)子程序的入口参数是屏幕上的行号和列号,注意在子程序内部要将它们转化为显存中的地址,首先在分析一下屏幕上的行列位置和显存地址的对应关系;(参见:王爽《汇编语言》实验9)
(2)注意保存子程序中用到的相关寄存器
(3)这个子程序的内部处理和显存的结构密切相关,但是向外提供了显存结构无关的接口。通过调用这个子程序,进行字符串的显示时可以不必了解显存的结构,为编程提供了方便。在实验中,注意体会这种设计思想。

参考代码:

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       ;显存段地址es
			mov al,0a0h
			mov bh,6h
			mul bh            ;第七行偏移地址放在ax中
			mov di,4h			
			add di,ax		;第3列地址放在di中,不再使用ax,用es:[di]
			mov al,cl        ;把颜色从cl放到al中
			mov ch,0
			
		f:  mov cl,ds:[si]
			jcxz ok         ;检测是否放到0
			mov es:[di],cl  ;放字母
			inc di
			mov es:[di],al  ;放颜色
			inc di
			inc si
			jmp short f
			
		ok: ret
			
code ends
end start

结果图:
在这里插入图片描述

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值