王爽《汇编语言 第三版》 实验10_1 显示字符串的子程序

这是汇编学习遇到的第十个实验
问题、代码以及运行结果如下:

实验10—1 显示字符串

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

代码如下:

assume cs:code

data segment
db 'Although XiaoHei is black,he is more than headsome!',0
db 'It is said that he likes English and Assmebly very much!',0
data ends

code segment

start:
	;第一次调用 需置si为0
	mov dh,8 ;行号:第八行
	mov dl,3 ;列数:第三列
	mov cl,0a4h ;颜色
	mov ax,data
	mov ds,ax
	mov si,0
	call show_str
	;第二次调用,无需设置si
	mov dh,10 ;行号:第10行
	mov dl,5 ;列数:第五列
	mov cl,0f1h ;颜色
	mov ax,data
	mov ds,ax
	call show_str
	;第三、第四次调用...
	mov ax,4c00h
	int 21h
	
	;说明: 显示字符串
	;在指定位置用指定颜色显示一个以0结束的字符串
	;参数:(dh) = 行号(0~24) ,(dh)=列号(0~79)
	;		cl=颜色,ds:si指向要显示字符串的首地址
show_str:
	mov ax,0B800h
	mov es,ax
	
	mov bl,cl	;用bl保存颜色信息
	
	mov al,dh
	mov ah,0
	mov cx,ax
	mov ax,es
	
s:	add ax,0AH
	loop s
	mov es,ax
				;更改行号
	mov di,0
	mov al,dl
	mov ah,0
	mov cx,ax
s1:	add di,2
	loop s1
				;更改列号
				
it:	mov al,ds:[si]
	mov cl,al
	mov ch,0
	mov es:[di],al
	mov es:[di].1,bl
	inc si
	add di,2
	jcxz bk		
	jmp short it
				;逐行打印
bk:	ret		

	
	
code ends
end start

运行结果如下:
printAString

发表评论

沙发空缺中,还不快抢~