欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

在显存显示字符串(调用子程序实现)

程序员文章站 2022-04-19 18:49:55
[html]   assume cs:codesg,ds:datasg      datasg segment   &nb...
[html]  

assume cs:codesg,ds:datasg  

  

datasg segment  

  

 db 'I love China !',0  

datasg ends  

  

codesg segment  

  

start: mov ax,datasg  

       mov ds,ax  

  

         

       mov dl,12 ;要显示的行号  

       mov dh,20 ;要显示的列号  

        

  

     

       call show  

         

  

       mov ax,4c00h  

       int 21h  

  

       ; 在显存显示字符串,将十进制的数转换成对应的ascii码进行显示。  

show:    

       mov ax,0b800h  

       mov es,ax  

  

       ;mov di,dl*160+dh*2 ; 将要显示的目的地传给di  

      ; mov al,160  

       mov ax,160  

       mul dl  

       mov di,ax  

       mov ax,2  

       mul dh  

       add di,ax  

  

       mov si,0  

       mov ch,0  

          

  s1:  mov al,ds:[si]  

       mov cl,al  

       jcxz over  

       mov ah,2  

       mov es:[di],ax  

       inc si  

       add di,2  

       jmp s1  

        

 over: ret  

         

codesg ends  

  

end start  

  

   

note:

1.在show里面本来要用jmp 标号模拟loop,因为事先不知道要显示的字符串的长度。所以根据末尾的0来结束打印。