王爽《汇编语言》实验九---汇编实现多种颜色显示字符串

vscode上编程,dosbox模拟环境 

assume cs:codesg, ds:datasg, ss:stacksg

datasg segment
    ;显示内容:welcome to masm
    content db 'welcome to masm'
    ;显示模式:依次为红底绿字、红底闪烁绿字、红底高亮绿字、黑底白字、白底蓝字
    mode    db 42h, 0c2h, 4ah, 7h, 71h
datasg ends

stacksg segment
            dw 0, 0
stacksg ends

codesg segment
    start: mov  ax, datasg
           mov  ds, ax             ;初始化ds:数据段(显示内容、显示模式)
           mov  ax, stacksg
           mov  ss, ax             ;初始化ss:栈段(临时存储cx)
           mov  ax, 0b872h
           mov  es, ax             ;初始化es:显存,坐标(12,33)

           xor  si, si             ;显示模式索引清零
           mov  cx, 5              ;设置外层循环次数(cx)
    s1:    push cx                 ;外层循环次数(cx)入栈
           xor  bx, bx             ;显示内容索引清零
           xor  bp, bp             ;显存偏移地址清零
           mov  cx, 15             ;设置内层循环次数(cx)

    s2:    mov  al, content[bx]
           mov  es:[bp], al        ;向显存写入显示内容
           inc  bp                 ;显存地址+1
           inc  bx                 ;显示内容索引+1
           mov  al, mode[si]
           mov  es:[bp], al        ;向显存写入显示模式
           inc  bp                 ;显存地址+1
           loop s2

           inc  si                 ;显示模式索引+1
           mov  ax, es
           add  ax, 0ah            ;一行0a0h(160)个字节,段寄存器+0a0h/10h
           mov  es, ax             ;显存行数+1
           pop  cx                 ;外层循环次数(cx)出栈
           loop s1

           mov  ax, 4c00h
           int  21h
codesg ends

end start

 dosbox上亲测

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值