这是汇编学习遇到的第十个实验
问题、代码以及运行结果如下:
实验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
发表评论
沙发空缺中,还不快抢~