|
![]() | 作者: 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号