实验十 显示字符串

;---------------------------------------------------------
;编写字符串
; 显示字符串
;  在第8行 第3列 显示 绿色 Welocme to masm!
;---------------------------------------------------------

assume cs:code

data segment
 db 'Welocme to masm!', 0
data ends

code segment
 start: mov dh, 8  ;行号[1~25]
   mov dl, 3  ;列号[1~80]
   mov cl, 2  ;颜色属性
   
   mov ax, data
   mov ds, ax
   mov si, 0
   
   call show_str
   
   mov ax, 4c00h
   int 21h
   
 show_str:
   push cx
   push si
   
   mov al, 0A0h ;160个字节==0A0h
   
   dec dh ;dh=dh-1   7=8-1
   mul dh ;(n-1)*0A0h  7*160=字节
   
   mov bx, ax ;偏移位置【7行】
   
   mov al, 2 ;每个字符占两个字节
   mul dl ;(ax)=(al)*(dl) = 2*3=6
   sub ax, 2 ;(ax)=(ax)-2 = 6-2 = 4
   
   add bx, ax ; 7行+4
   
   mov ax, 0B800h ;显存开始地址
   mov es, ax
   
   mov di, 0
   
   mov al, cl
   
   mov ch, 0
   
  s: mov cl, ds:[si]
   jcxz ok
   
   mov es:[bx+di], cl ;字符
   mov es:[bx+di+1], al ;颜色属性
   
   inc si
   
   add di, 2 ;一个字节存放字符 另一个字节存放属性
   jmp short s
   
  ok: pop si
   pop cx
   ret
   
code ends
end start

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值