| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 523 人关注过本帖
标题:怎么扩大到千位?
只看楼主 加入收藏
ch775914568
Rank: 2
等 级:论坛游民
帖 子:15
专家分:10
注 册:2012-10-29
结帖率:100%
收藏
 问题点数:0 回复次数:4 
怎么扩大到千位?
P1:  STOSB                 ;显示十位
              INC       DI
              MOV       AL,AH
              STOSB                 ;显示个位
              INC       DI
              MOV       AL,20H
              STOSB                 ;显示空格
              INC       DI
              RET
2012-11-13 22:53
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
1、将寄存器改用16位,8位最多只能表示255,无法容纳千位数,
2、利用循环或增加显示的步骤,从高位到低位逐位显示数字。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-11-15 14:42
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
可以在坛子里找找这方面的帖子 应该有

梅尚程荀
马谭杨奚







                                                       
2012-11-15 23:33
ch775914568
Rank: 2
等 级:论坛游民
帖 子:15
专家分:10
注 册:2012-10-29
收藏
得分:0 
回复 2楼 hu9jj
这是程序全部、、、 需要怎么改才能实现呢?改了好多东西都不能实现,反而改乱了、、、

 CODE  SEGMENT
              ASSUME    CS:CODE,DS:CODE
              ORG       100H
      START:
              PUSH      CS
              POP       DS
              MOV       AX,3
              INT       10H         ;BIOS中断,置文本显示模式

              MOV       AX,0B800H
              MOV       ES,AX       ;定位显存

              MOV       DX,OFFSET MSG
              MOV       AH,9
              INT       21H         ;提示

         T0:  MOV       AH,0
              INT       16H         ;接收数据

              CMP       AL,1BH      ;Esc键结束程序  esc(ascii=1Bh)
              JZ        QUIT

              CMP       AL,'3'      ;数据校验,保证输入3<al<9
              JB        T0
              CMP       AL,'9'
              JA        T0

              MOV       AH,0EH      ;在Teletype模式下显示字符
              INT       10H         ;显示有效数

              SUB       AL,30H      ;得到十进制数字
              PUSH      AX
              MUL       AL          ;al*al
              MOV       SI,AX       ;保存矩阵最大数到si中
              POP       AX
              CBW                   ;chang byte to word
              MOV       BP,1        ;第一个元素值
              MOV       DI,3*80*2
       NEXT:
              MOV       CNT1,AX     ;输入数据保存到cnt1
              DEC       AX          ;n-1
              MOV       CNT2,AX
              MOV       CNT3,AX
              DEC       AX          ;(n-1)-1
              MOV       CNT4,AX
              ADD       DI,3*2
              CALL      SHOW        ;输出矩阵
              MOV       AX,CNT1
              SUB       AX,2
              SUB       DI,3*2
              CMP       BP,SI
              JBE       NEXT        ;bp<si,则继续执行
              MOV       AH,0
              INT       16H         ;等待
              JNZ       START
       QUIT:
              MOV       AX,4C00H
              INT       21H
       SHOW:                        ;显示方阵
              MOV       CX,CNT1     ;right 向右赋值
         M1:  CALL      CRT
              INC       BP          ;下一个元素数值
              LOOP      M1
              MOV       CX,CNT2     ;down 向下赋值
              JCXZ      P2          ;cx=0,则转p2处
         M2:  ADD       DI,(80-3)*2
              CALL      CRT
              INC       BP
              LOOP      M2
              MOV       CX,CNT3     ;left 向左赋值
              JCXZ      P2
         M3:  SUB       DI,6*2      ;下一个元素位置
              CALL      CRT
              INC       BP
              LOOP      M3
              MOV       CX,CNT4     ;up 向上赋值
              JCXZ      P2
         M4:  SUB       DI,(80+3)*2
              CALL      CRT
              INC       BP
              LOOP      M4
         P2:  RET
        CRT:
              MOV       AX,BP
              AAM                   ;调整指令
              OR        AX,3030H
              XCHG      AH,AL       ;交换ah和al
              CMP       AL,'0'
              JNZ       P1
              MOV       AL,20H
         P1:  STOSB                 ;显示十位
              INC       DI
              MOV       AL,AH
              STOSB                 ;显示个位
              INC       DI
              MOV       AL,20H
              STOSB                 ;显示空格
              INC       DI
              RET
         MSG  DB        'input(3-9),Esc to quit: $'
        CNT1  DW        ?
        CNT2  DW        ?
        CNT3  DW        ?
        CNT4  DW        ?
        CODE  ENDS
              END       START
2012-11-16 14:33
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
我已经有十多年没有使用过汇编,现在电脑中也没有安装汇编环境,所以无法直接替你修改代码(因为修改的代码若不经过测试,很难保证正确无误),况且楼主的程序我还没有完全弄明白。我只能说,要显示千位首先被显示的数据应该是有千位的,而千位的数据至少需要16位的寄存器才能保存。8位的寄存器可以保存小于256的数据,建议楼主可以先试试将上述的程序扩展到可以显示百位,然后再考虑延展到千位,

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2012-11-16 19:48
快速回复:怎么扩大到千位?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.019585 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved