王爽《汇编语言第三版》实验10-1代码实现

本文介绍了一个使用MASM编写的通用子程序,该程序能够灵活地显示指定的字符串。通过调整参数,用户可以控制字符串显示的颜色、位置等内容,适用于需要自定义字符串显示效果的场景。

;编写一个通用的子程序实现这个显示字符串的功能,提供灵活的调用接口,使调用者
;可以决定显示的位置,内容,颜色
assume cs:code,ss:stack,ds:data

data segment
        db 'welcome to masm!',0 ;要显示的字符串
data ends

stack segment
        db 128 dup (0)
stack ends

code segment

 start: mov dh,23    ;行数
        mov dl,10    ;列数
        mov cl,4     ;颜色

        mov ax,data
        mov ds,ax

        mov ax,stack
        mov ss,ax
        mov sp,128

        mov si,0
        call show_str


        mov ax,4c00h
        int 21h
;------------------------------
 show_str:
        push cx
        push dx

        mov bx,0b800h    ;显示地址
        mov es,bx
;---------------------------------
        sub dh,1         
        mov al,160
        mul dh
        mov di,ax         ;行偏移

        sub dl,1
        mov al,2
        mul dl             ;列偏移
        add di,ax         ;行偏移+列偏移
;-------------------------------------
        mov dh,cl        ;将颜色cl赋予dh   

 
 s:     mov cl,ds:[si]     ;将字符传给cl
        mov ch,0         ;在cx为0时跳出循环

        mov dl,cl        ;字符
        mov es:[di],dx     ;字符+颜色传递到显示位置

        inc si             ;调用下一个字符
        add di,2         ;显示下一个字符
 

        jcxz ok             ;当cx为0时结束循环,字符最后一个为0
        loop s

  ok:   pop dx
        pop cx
        ret                 ;返回到主函数

code ends

end start

转载于:https://www.cnblogs.com/xautxuqiang/p/5478282.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值