实验十 显示字符串

;---------------------------------------------------------
;编写字符串
; 显示字符串
;  在第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

 

你可能感兴趣的:(字符串)