汇编语言:实验10 根据材料编程—1.显示字符串

问题描述

显示字符串是现实工作中经常要用到的功能,应该编写一个通用的子程序来实现这个功能
我们应该提供灵活的调用接口,使调用者可以决定显示的位置(行、列)、内容和颜色

实验效果

将字符串展示到8行3列黑底蓝字。


实验要求

子程序描述

名称:show_str
功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。
参数:(dh)行号(取值范围0~24),(dl)=列号(取值范围0~79),
(cl)=颜色,ds:si指向字符串的首地址
返回:无

实验代码

;实验10 问题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
	;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。
	;参数:(dh)行号(取值范围0~24),(dl)=列号(取值范围0~79),
	;	(cl)=颜色,ds:si指向字符串的首地址
	;返回:无
	show_str:
		push ax
		push bx
		push cx
		push dx
		push es
		push si
		push di
		;显存起始位置,目的地址
		mov ax,0b800H
		mov es,ax
		;计算di,di = dh*160+dl*2,ax 、bx、di 没有用户数据被占用 可以进行使用
		;mov di,(dh)*160+(dl)*2
		mov al,dh
		mov ah,0
		mov bl,160
		mul bl
		mov di,ax
		
		mov al,dl
		mov ah,0
		mov bl,2
		mul bl
		add di,ax
		
		mov dl,cl		;存放颜色
		str_set:
			
			mov cl,ds:[si]
			mov ch,0
			jcxz show_ok	;控制结束条件
			
			mov ax,ds:[si]
			mov es:[di],ax	;设置字母
			mov es:[di+1],dl;设置颜色
			add di,2
			inc si
			jmp short str_set
	show_ok:
		pop di
		pop si
		pop es
		pop dx
		pop cx
		pop bx
		pop ax
		ret	
code ends
end start


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值