汇编语言王爽 实验10.1

初学汇编 做的不好 但是能用:



assume cs:code

data segment


db 'welcome to masm! ',0


data ends


code segment


start: mov dh,8;line
       mov dl,3;column
       mov cl,2;color
       mov ax,data
       mov ds,ax
       mov si,0
       call show_str
       mov ax,4c00h
       int 21h




show_str: push cx ;   show_str(dh:line,dl:colum,cx:color,ds:[0]-ds:['0'])
          push si
          push bx
          push ax
          push dx
         
        
          mov ax,0b800h
          mov es,ax   ;display seg mem
       
          mov al,160
          dec dh
          mul dh; ATTENTION:ax==the offest address of character
          mov bx,ax;ax is used to another multiple
          mov al,2
          mul dl
          sub ax,2
          add bx,ax
          mov si,bx


          mov bx,cx;cx is used for both loop and color, therefore use unsed bx to store color
    
 
    ;step 1:
         ; first fill color information in mem 
         push si
    s1:  mov ch,0
         mov cl,ds:[di]; sourse data
         jcxz ok0
        
         mov es:[si+1],bx
         add si,2
         inc di
    loop s1
         
    ok0: 
         
         mov di,0
         pop si
    ;step 2: 
    ;fill other spaces with ASCII code




    s2:   mov cl,ds:[di]
          jcxz ok1
          
          mov bl,ds:[di];
          mov es:[si],bl;
          add si,2
          inc di


          loop s2
    
    ok1:  pop dx
          pop ax
          pop bx
          pop si
          pop cx
    ret        


code ends


end start



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值