当前位置:编程学习 > 汇编语言 >>

汇编语言问题

程序目的:输入十个数字,从大到小排序后输出。以下是我的程序。 问题:以下程序编译时不通过,问题提示如图,本人系菜鸟,调试不来。。。请说明错误并改正。 还有输出程序怎么写。 请在我的程序上改动,网上的就不要复制过来了。 DATA SEGMENT BUF1 DB 'Please input 10 numbers from 0-255:$' BUF DB 10 DUP(0) ;定义10个字节型数据 N EQU $-BUF ;N为数据个数 BUF2 DB 'The result is as follows:$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX INPUT: MOV DX,OFFSET BUF1 ;显示输入提示语句 MOV AH,9 INT 21H MOV SI,-1 COUNT: INC SI INPUTBUFFER: ;开始输入 MOV AH,1 INT 21H CMP AL,0DH ;判断输入是否为回车,若为回车,输入结束 JZ INITAL CMP AL,' ' ;判断是否为空格键,若为空格,SI+1,继续输入 JZ COUNT DEAL: ;若既不为空格,也不为回车,则对数据进行处理 MOV [BUF+SI],[BUF+SI]×0AH+AL JMP INPUTBUFFER INITAL: ;开始排序 MOV DL,N LEA BX,BUF LOP_WAI: MOV DH,DL DEC DH MOV AL,[BX] MOV SI,BX LOP_NEI: INC SI CMP AL,[SI] JBE CONTINUE ;若AL<=[SI],跳到CONTINUE XCHG AL,[SI] MOV [BX],AL CONTINUE: DEC DH JNE LOP_NEI;DH不为0,继续内层循环 DEC DL CMP DL,1 JZ SHUCHU INC BX JMP LOP_WAI ;排序结束 MOV DX,OFFSET BUF2 ;输出提示语 MOV AH,9 INT 21H SHUCHU: 这段程序怎么写,以十进制的形式输出。 EXIT: MOV AH,4CH INT 21H CODE ENDS END START
追问:这个。。就是完整的代码。。。
答案:请在我的程序上改动,网上的就不要复制过来了。
-----
楼主有这样的要求,就很难改了,因为需要改动的地方太多了。

输入N个0~255的十进制数字,楼主没有使用N来进行控制,只是等到回车,才算输入结束。
这样,个数完全可能超出N,结果不可预料。

如果输入了非数字字符,楼主没有进行鉴别,这样,结果也不可预料。

每一个0~255的十进制数字,可能要输入三个字符,收到的第一位,可能是百位数,要乘以100,再和十位、个位数相加。楼主的程序,完全没有考虑这样的问题。
另外,输入三个字符,也可能大于255,如果不加以控制,保存的数据,就不可能是键入的数字。

排序、输出,也有很大的问题。

建议看看:
http://hi.zhaoxi.net/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/7d8efcb239a3a7bbd8335ae1.html
其他:判断输入是否为回车,若为回车,输入结束 麻烦给出完整的代码,谢了~~ 问题补充:输入的序号最好有提示,输出当然是;= ;从键盘输入9个十进制数(数与数之间用空格隔开) ;再输入的一个序号( 

上一个:汇编语言的逻辑运算中异或怎么算,能不能给个例子
下一个:c语言和汇编语言的区别

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,