原创 第10章 实验10 3数值显示

2009-5-23 20:35 2054 8 8 分类: MCU/ 嵌入式
经过一番奋斗,终于把第三个子程序写出来了,可以继续做我的课程设计1了,甚是兴奋矣。、 
数值显示这道题目出得真是妙,答案很快做出来了,不过一开始显示的是逆置的字符串。那么要考虑的问题就是怎么使得所有的数值显示正常,根据课本给出的转换字符的算法,则在将字符存入data段的时候是需要将字符逆置写入,这个细节方面的东西方法很多,不过感觉自己写的方法还不错,欢迎各位批评! 
下面是我的源程序: 
assume cs:code 
data segment 
     db 10 dup(0) 
data ends 

stack segment 
     db 16 dup(0) ;自定义栈段 
stack ends 

code segment 
start: mov ax, 12666 
       mov bx, data 
       mov ds, bx 
       mov si, 0 
        
       mov dx, stack ;自定义栈 
       mov ss, dx 
       mov sp, 16  
       call dtoc 
        
       mov dh, 8 
       mov dl, 3 
       mov cl, 2 
       call show_str 
     
       mov ax, 4C00H 
       int 21H 
     
;数字转换成字符串子程序        
 dtoc:push si;子程序使用的寄存器入栈 
       push bx  
       push dx 
       push cx 
       push di 
        
       mov bx, 10 ;除数为10 
        
     s:mov dx, 0 ;被除数的高16位设置为0 
       div bx  ;商保存在ax中,余数在dx中 
        
       mov cx, dx ;dx的值放入cx中,为jxcz的操作做好准备 
       jcxz ok1 
       push dx ;余数dx入栈 
       inc di 
       jmp short s 
        
     ok1:mov cx, di ;设置循环计数器 
      s0:pop dx ;取出余数 
         add dl, 30H ;数值转换成字符形式 
         mov [si], dl ;字符写入data段中 
         inc si 
         loop s0 
          
         pop di;子程序使用的寄存器出栈 
         pop cx   
         pop dx 
         pop bx 
         pop si 
          
          
         ret 
   

;显示字符串子程序             
show_str:push si ;子程序使用的寄存器入栈 
    push di  
    push cx  
    push dx  
     
    mov ax, 0B800h  
    mov es, ax ;显示字符段地址存入es 
     
    mov al, 160 
    mov ah, 0 
    mul dh 
    mov bx, ax ;bx为显示字符的偏移地址 
     
    add dl, dl 
    mov dh, 0 

    mov di, dx ;bi保存显示字符的偏移地址 
    mov ah, cl ;ah将cl(字符属性)先保存起来 

function:mov cl, [si] 
    mov ch, 0 
     
    jcxz ok2 
    mov al, [si] 
    mov es:[bx + di],al ;将字符写入显存的相应位置 
    inc di 
    mov es:[bx+di], ah ;设置字符属性 
    inc di 
    inc si 
    jmp short function ;跳转到编号function处继续执行 
         
ok2: pop  dx ;子程序使用的寄存器出栈 
    pop cx 
    pop di 
    pop si 
    ret 
     
code ends 

end start
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /3 下一条