. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->CALL和RET指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  子程序10.3数值显示,自己琢磨的代码,测试可以运行,求大神指导  [待解决] 回复[ 0次 ]   点击[ 288次 ]  
18715987303
[帖 主]   [ 发表时间:2018-10-06 12:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2018-10-06 11:56
assume cs:code

data segment
        db 10 dup (0)
data ends

code segment
  start:mov ax,12666  ;被除数
                  mov bx,data   ;目标储存区域
                  mov ds,bx
                  mov di,0
                  
                  call dtoc

!!!!!!!!!!!!!!!!!!!!!10.3程序开始

  dtoc:
                  mov dx,0    ;32位除法,dx闲置
                  mov bx,10   ;赋值除数
                  mov cx,ax   ;测试被除数是否为0
                  jcxz ok
                  div bx      ;除法,商在ax中,余数在dx中
                  add dx,30H
                  push dx     ;放入栈中,目的是把最终数倒过来
                  inc di                ;记录读取字符的数量
                  jmp short dtoc   ;循环dtoc

          ok:
                  mov cx,di   ;cx赋值循环次数
                  mov si,0
          s1:
                  pop ds:[si] ;取出栈中的内容
                  inc si      
                  loop s1

!!!!!!!!!!!!!!!!!!!10.3程序完毕
                  mov dh,8
                  mov dl,3
                  mov cl,2          
                  call show_str
                  mov ax,4c00h   
                int 21h
  
  show_str:
     
        push si
        push cx

        mov ax,0b800h
        mov es,ax

        mov al,0A0h  ;80*25彩色缓冲区,每行为80*2=160 个字节。
        dec dh       ;内存从0开始
        mul dh       ;转到需要输出的行
        mov bx,ax    ;bx储存行

        mov al,02h   ;同理
        mul dl
        sub ax,2

        add bx,ax    ;在行的基础上加上列,定位完毕

        mov di,0     
        mov al,cl    ;cl中的颜色值先做保存
        mov ch,0     ;归零,做递增使用
        mov si,0     ;归零,递增用
        
      s2:
        mov cl,ds:[si]  ;读取值
        jcxz ok1         ;判断cx是否为0
        mov es:[bx+di],cl   ;不为0,赋值字符
        mov es:[bx+di+1],al ;赋值颜色
        inc si
        add di,2
        jmp short s2
     ok1:
        pop cx
        pop si
        ret
code ends
end start
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved