汇编语言 王爽 实验9 根据材料编程

编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串 ‘welcome to masm!’。
编程所需的知识通过阅读、分析下面的材料获得。
1
2
3
4

assume cs:code,ds:data,ss:stack

data segment
    db 'welcome to masm!'
    db 00000010B,00100100B,01110001B
data ends

stack segment                 ;栈区用于存放临时变量
    dw 8 dup(0)
stack ends    

code segment
    
    start:  ;row:12,13,14    col:33
    mov ax,stack              ;设置栈寄存器
    mov ss,ax
    mov sp,16                 ;栈区大小为16个字节
    
    mov ax,data               ;使ds指向存放字符串的数据段
    mov ds,ax
    mov si,0                  ;作为偏移量,用于指向每个字符
    mov bp,16                 ;指向颜色列表的起始地址 
                              
    mov ax,0b800h             ;使es指向显示缓冲区
    mov es,ax
    mov bx,6e0h               ;对应行
    mov di,64                 ;对应列
    
    mov cx,3                  ;设置写入的行数
 s0:push cx                   ;保存临时变量
    push di
    push si
    
    mov ah,ds:[bp]            ;设置待写入字符串的颜色
    mov cx,16                 ;待写入的字符串的字符个数
 s1:mov al,ds:[si]            ;读取待写入的字符
    mov es:[bx+di],ax         ;将待写入字符,以及颜色设置一起写入显示缓冲区
    inc si                    ;指向下一个待写入字符
    add di,2                  ;指向显示缓冲区的下一个位置
    loop s1
    
    add bx,0A0h               ;指向下一行
    pop si
    pop di
    pop cx
    
    inc bp                    ;指向下一种颜色的地址
    loop s0 
    
    mov ax,4c00h
    int 21h
code ends
end start
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值