王爽汇编语言实验9——实现

思路:可以将色彩信息也储存在附加段,然后在打出每组welcome to masm时将这段信息从内存中取到,追加在字符信息的后边,最后循环三次取色彩的值,完成;
也可以将色彩信息储存在栈中,逆序push后,在打印每组字符串时,逐个pop,pop出来的色彩信息再同字符信息送入buffer。
我选择的是后者,为了减少对内存的访问,并防止reg冲突。
光说不做假把式,来看代码:

char segment
    db 'welcome to masm!'
char ends
assume cs:code
code segment

start:mov ax,0b800h
    mov ds,ax
    mov ax,char
    mov es,ax

    
    mov ax,0071h
    push ax
    mov ax,0024h
    push ax
    mov ax,0002h
    push ax
    
    mov cx,0003h
    mov bx,0728h
    
  res:pop ax
    mov dx,cx
    
    mov si,0
    mov di,0
    mov cx,0010h
  s:mov ds:[bx+si+1],al //先放色彩再放字符,因为后面借助ax会改变它的值
    mov ah,0
    push ax

    mov al,es:[di]
    mov ds:[si+bx],al
    add si,2
    add di,1
    pop ax
     
    loop s
    mov cx,dx
    add bx,00a0h
    loop res 
    
    
    mov ax,4c00h
    int 21h
code ends
end   start
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值