王爽版汇编语言实验10:编写子程序1-显示字符串

基于之前实验9的基础,这里要求用调用子程序的形式,dh为行数,dl为列数,cl为颜色,ds:si指向字符串的首地址。功能要求:在屏幕的8行三列用绿色显示data中的字符串

代码如下

;在屏幕的8行3列,用绿色显示data段中的字符串
assume cs:code,ds:data,ss:stack
data segment
db 'Welcome to masm!',0
data ends
stack segment
db 100 dup('0')
stack ends

code segment
start: mov dh,8
       mov dl,3
       mov cl,2
       mov ax,data
       mov ds,ax
       mov ax,stack
       mov ss,ax
       mov si,0
       mov ax,0b800h
       add dl,dl
       sub dl,2
       mov bx,0ah
       sub dh,1
       mov cl,dh
       mov ch,0
      s:add ax,bx
        loop s   
        mov es,ax;es现在是第八行的段地址
        mov cl,2
        mov dh,0
        mov di,dx
       call show_str
       
       mov ax,4c00h
       int 21h 
       ;show_str函数的作用就是将数据输入显存区,并存入绿色属性
show_str:
         mov cx,16
         s1:mov dx,cx
            mov cl,[si]
            mov ch,0
            jcxz ok
            mov al,[si]
            mov es:[di],al
            mov byte ptr es:1[di],02h
            add di,2
            inc si
            mov cx,dx
            loop s1
            
ok:ret
   

         
         


code ends
end start

执行结果如下

主要是参数属实有点烦,你不能直接算出来,要通过数据自行传递,这样才符合设计初衷,子程序的独立性较强,当然了这里可以改进一点,就是最后输入绿色02h的属性时,不用02h,直接用cl,cl经历一个出入栈过程即可。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值