【汇编语言】(第三版) 实验10(指定位置显示字符串)

程序名称:show_str功能:在指定位置,用指定的颜色,显示一个用0结束的字符串。参数:(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79),(cl)=颜色,ds:si 指向字符串首地址返回值:无assume cs:codedata segment db 'Welcome to masm!',0data endsstack segment dw ...
摘要由CSDN通过智能技术生成

程序名称:show_str

功能:在指定位置,用指定的颜色,显示一个用0结束的字符串。

参数:(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79),(cl)=颜色,ds:si 指向字符串首地址

返回值:无

assume cs:code

data segment
	db 'Welcome to masm!',0
data ends

stack segment
	dw 8 dup (0)
stack 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:
	push dx
	push cx
	push ax
	push si		;相关寄存器入栈

	mov ax,0b800h
	mov es,ax	;es指向显示缓冲区
	mov al,160	;每行占160个字节
	mul dh          ;第8行
	mov bx,ax
	mov al,2        ;每列占两个字节
        mul dl	        ;第3列	
	mov di,ax       ;di指向字符串在显示缓冲区对应位置的起始地址
	mov ah,cl	;色值参数传递给ah

s:	mov cl,ds:[si]	
	mov ch,0	
	jcxz s0		;读取字符串,如果字符串结束,末尾为0,结束读取,跳转至程序返回处
	mov al,ds:[si]	;al存放字符,此时ah中存放的是色值
	mov es:[bx+di],ax	;将字符与颜色值写入显示缓冲区对应的位置
	inc si		;si指向数据段中的下一个字节单元
	add di,2	;di指向当前显示缓冲区偏移地址的下一个字单元
	jmp s

s0:
	pop si
	pop ax
	pop cx
	pop dx		;相关寄存器出栈
	ret             ;程序返回
code ends
end start

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值