汇编语言-实验九

assume cs:code ds:data ss:stack  ;实验9,题目容易读迷糊,大概意思就是让程序
                                 ;在屏幕中间显示3组不同颜色的'welcome to masm!'

data segment
       ;0123456789abcdef
    db 'welcome to masm!'
    db  00000010b ;绿色
    db  00100100b ;绿底红色
    db  01110001b ;白底蓝色
data ends

stack segment
    db 16 dup (0)
stack ends

code segment
over:                 ;最后一步执行,其作用和实验八一样
    mov ax,4c00h
    int 21h

start:                ;cs:ip指向这里开始运行,最开始不运行标识符 over 
    mov ax,data
    mov ds,ax
    mov bx,0b800h
    mov es,bx
    mov di,160*12+40  ;因为要显示在屏幕中间,所以得位移:每行160字节数*12行
                      ;  +40字节,同时也方便下面 目标偏移地址 的输入

    mov bx,10h   ;bx为颜色偏移地址
    mov cx,3     ;颜色偏移地址bx自加3次后cx=0,执行下一条语句

allrow:
    push cx
    push di      ;di为目标偏移地址,每次bx++时,自动 push di
    mov si,0     ;si为welcome的w偏移地址,每次bx+1时si都置于0
    mov cx,16    ;si++为16时cx=0,执行下一条语句
firstrow:
    mov al,ds:[si]
    mov ah,ds:[bx]
    mov es:[di],ax
    inc si
    add di,2
    loop firstrow

    pop di       ;(di)的出栈
    pop cx       ;压栈作用是把最外层的循环保存起来,这里是cx值的出栈
    inc bx,1     ;bx++的每次循环依次转移 绿色,绿底红色,白底蓝色 的代码值到es中
    loop allrow

    jmp over

code ends

end start

笨鸟一只,哎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值