鱼C论坛

 找回密码
 立即注册
查看: 2328|回复: 1

被30h搞懵了,输出不对,求老哥们指点

[复制链接]
发表于 2020-5-29 04:47:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. DISP_STR  MACRO  X     ;宏定义.
  2.     MOV  DX, OFFSET X
  3.     MOV  AH, 9        ;输出字符串
  4.     INT  21H
  5. ENDM
  6. ;----------------------------------------------
  7. DATA  SEGMENT          ;数据段.
  8.   MSG1 DB  13, 10, 'Input N
  9.   MSG2 DB  13, 10, 'I can not count so much !
  10.   MSG3 DB  13, 10, 'Please Input NUM (1~9, 0 end):
  11.   MSG4 DB  13, 10, 'Please Input Matrix from 0~15,remember to have a space between each data!!!
  12.   MSG5 DB  13, 10, 'The sum of leading diagonal is :
  13. MSG6 DB  13, 10, 'Reprint the matrix:
  14.   IN_N1 DB  16 DUP ('$$)           ;影响

  15.   ONLY DB 0
  16.   SUM DD 0       

  17.   N DB  30H          ;序数.
  18. DATA  ENDS
  19. ;----------------------------------------------
  20. CODE   SEGMENT         ;代码段.
  21.     ASSUME   CS: CODE, DS: DATA
  22. START:
  23.     MOV  AX, DATA
  24.     MOV  DS, AX
  25. ;--------------------------------
  26.     MOV  BX, OFFSET IN_N1;数据
  27.     MOV  CX, 16                       ;循环次数
  28. ;--------------------------------
  29. DISP_STR  MSG4
  30.   CALL INPUT
  31. ;==========================================================
  32.    LEA SI,IN_N1
  33.   LEA DI,SUM                  
  34.    mov ax,[SI]         ;1
  35. add [DI],ax
  36. mov ax,[SI+2]
  37. adc [DI+2],ax

  38.    JC  SS1                ;如果进位 跳转到SS1
  39. B1:
  40.      ADD SI,25         ;6
  41.        mov ax,[SI]         
  42. add [DI],ax
  43. mov ax,[SI+2]
  44. adc [DI+2],ax

  45.      JC SS2   
  46. B2:
  47.      ADD SI,25        ;11
  48.      mov ax,[SI]         
  49. add [DI],ax
  50. mov ax,[SI+2]
  51. adc [DI+2],ax


  52.      JC SS3   
  53. B3:
  54.      ADD SI,25           ;16
  55.      mov ax,[SI]         
  56. add [DI],ax
  57. mov ax,[SI+2]
  58. adc [DI+2],ax

  59.      JC SS4
  60.      JMP IN_END

  61. SS1:
  62.     INC ONLY
  63.      JMP B1
  64. SS2:
  65.     INC ONLY
  66.      JMP B2
  67. SS3:
  68.     INC ONLY
  69.      JMP B3
  70. SS4:
  71.     INC ONLY

  72. ;=============================
  73. IN_END:
  74. DISP_STR  MSG5
  75.    MOV DL,ONLY
  76.   ADD DL,30H
  77.     MOV  AH, 2
  78.     INT  21H

  79.     LEA SI,SUM
  80.     MOV DL,[SI]
  81.   ADD DL,30H
  82. MOV  AH, 2
  83.     INT  21H

  84. MOV DL,[SI+1]
  85.   ADD DL,30H
  86. MOV  AH, 2
  87.     INT  21H

  88. MOV DL,[SI+2]
  89.   ADD DL,30H
  90. MOV  AH, 2
  91.     INT  21H

  92. MOV DL,[SI+3]
  93.   ADD DL,30H
  94. MOV  AH, 2
  95.     INT  21H

  96. MOV  DL, 13             ;换行
  97.     MOV  AH, 2
  98.     INT  21H
  99.     MOV  DL,10
  100.     MOV  AH, 2
  101.     INT  21H
  102. ;=========================================
  103. DISP_STR  MSG6;未施工完成


  104.    JMP EXIT
  105. ;--------------------------------
  106. _IN_ERR:
  107.     DISP_STR  MSG2     ;宏调用,提示 can not count so much !
  108. EXIT:  
  109.     MOV  AH, 4CH
  110.     INT  21H
  111. ;--------------------------------------------
  112. INPUT:        ;所有输入过程

  113. IN_X:
  114.     PUSH CX
  115.    
  116.     DISP_STR  MSG1     ;宏调用,提示 Please Input :
  117.     INC  N
  118.     ;MOV  DL, N
  119.     ;MOV  AH, 2
  120.     ;INT  21H
  121.     MOV  DL, ':'
  122.     MOV  AH, 2
  123.     INT  21H
  124.     MOV  DX, BX

  125. IN_LOOP:
  126.     MOV  AH, 1         ;输入字符.
  127.     INT  21H
  128.     CMP  AL, ' '       ;空格?
  129.     JZ   IN_Y          ;本数字结束.
  130.     CMP  AL, 30H
  131.     JB   _IN_ERR       ;小于'0',输入错误.
  132.     CMP  AL, 3AH
  133.     JNB  _IN_ERR       ;大于'9',输入错误.
  134. SUB AL,30H;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  135.     MOV  [BX], AL
  136.     INC  BX
  137.     MOV  AX, BX
  138.     SUB  AX, 3        ;影响
  139.     SUB  AX, DX
  140.     JA   IN_Y
  141.     JMP  IN_LOOP       ;继续输入.

  142. IN_Y:
  143.     ADD  DX, 5      ;影响
  144.     MOV  BX, DX
  145.     POP  CX
  146.     LOOP IN_X

  147. RET
  148. ;--------------------------------
  149. CODE  ENDS
  150. END  START
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-29 04:49:51 | 显示全部楼层
输入进去16个数,想象成一个矩阵,想把其中几个数加起来。但是不管怎么调,结果都是一堆乱七八糟的符号,感觉是和30h有关系,可自己太菜了找不到哪错了....求老哥们指点啊啊啊!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-7 18:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表