| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 588 人关注过本帖
标题:回环矩阵,输入上限是9。怎么扩展上限???求指教!
只看楼主 加入收藏
ch775914568
Rank: 2
等 级:论坛游民
帖 子:15
专家分:10
注 册:2012-10-29
结帖率:100%
收藏
 问题点数:0 回复次数:0 
回环矩阵,输入上限是9。怎么扩展上限???求指教!
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-12 11:53
快速回复:回环矩阵,输入上限是9。怎么扩展上限???求指教!
数据加载中...
 
   



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

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