论坛: 编程破解 标题: 一个汇编程序的输出问题,请指教 复制本贴地址    
作者: sniper167 [sniper167]    论坛用户   登录
num1和num2两个数相加:
----------------------------------
DATA  SEGMENT
      NUM1 DB 22H,33H,44H,55H,66H,77H
      NUM1L DB 6
      NUM2 DB 22H,22H,22H,22H
      NUM2L DB 4
DATA  ENDS
STACK1 SEGMENT PARA STACK
      DW 20H DUP(0)
STACK1 ENDS
CODE  SEGMENT
      ASSUME CS:CODE,DS:DATA,SS:STACK1
START:MOV AX,DATA
      MOV DS,AX
      MOV CH,0
      MOV SI,OFFSET NUM1
      MOV DI,OFFSET NUM2
      MOV AH,NUM1L
      MOV AL,NUM2L
      CMP AH,AL
      JAE CHA
      XCHG SI,DI
      XCHG AH,AL                                  
CHA:  SUB AH,AL
      MOV CL,AL
      CLC
LOP1: MOV AL,[DI]
      ADC [SI],AL
               
     
      MOV  AX,[SI]
DIVID:MOV  AH, 0
      MOV  BL, 10
      DIV  BL             
      MOV  BL,AH           
      MOV  DL,AL         
      cmp  DL,10
      JGE  DIVID
      ADD  DL,30H         
      MOV  AH, 02
      INT  21H             
      MOV  DL,BL         
      ADD  DL,30H         
      MOV  AH,02
      INT  21H             
      MOV  DL,','
      MOV  AH, 02
      INT  21H             
      INC SI
      INC DI
      LOOP LOP1
      MOV CL,AH
      JCXZ NEXT2
LOP2: ADC BYTE PTR [SI],0
      MOV  AX,[SI]
      MOV  AH, 0
      MOV  BL, 10
      DIV  BL               
      MOV  BL,AH         
      MOV  DL,AL         
      ADD  DL,30H       
      MOV  AH, 02
      INT  21H           
      MOV  DL,BL         
      ADD  DL,30H         
      MOV  AH,02
      INT  21H           
      MOV  DL,','
      MOV  AH, 02
      INT  21H             
      INC SI
      LOOP LOP2
NEXT2: MOV AH,4CH
      INT 21H
CODE  ENDS
      END START

-----------------------------------------
输出结果本来应该是
68,85,102,119,102,119,的
可实际输出却是
68,85,10,11,;2,;9,

请问怎么改正才能正确输出呢?
谢谢



[此贴被 啥都不会(sniper167) 在 12月03日23时40分 编辑过]

地主 发表时间: 04-12-02 22:47

回复: superwww [superwww]   论坛用户   登录
等我学会了汇编告诉你
可是现在无能为离啊

B1层 发表时间: 04-12-02 23:20

回复: seny11 [seny11]   论坛用户   登录
晕啊。看半天。把题目的功能写出来啊。
你的程序是把Num1和Nume2的数组元素相加吧,再输出吧?


B2层 发表时间: 04-12-03 00:52

回复: pillow_911 [pillow_911]   论坛用户   登录
1、程序结构不正确,低字节相加后可能产生进位,按本程序,该进位不可能被加到高字节去。
2、你的16进制数转换成ASCII码显示时只能显示两位数,象100以上的三位数显示肯定出错

另外,建议你以后编程序时最好能按模块分开来写,比如:先将二个数相加;再将加以后的结果中的每个字节进行转换并显示。

B3层 发表时间: 04-12-23 20:12

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号