
用基本 For循环或Do Loop语句写一个算法,要求输入50个数,按从大到小排列。
2个回答
展开全部
DATA SEGMENT
A DW 100 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,0000H
MOV DX,0000H
MOV CX,0000H
MOV BX,OFFSET A
KEYIN:
PUSH BX
PUSH CX
MOV AH,01H
INT 21H
CMP AL,20H
JE FINA
MOV AH,00H
SUB AX,0030H
MOV CX,AX
A1:
MOV AH,01H
INT 21H
CMP AL,20H
JE FIN1
MOV AH,00H
SUB AX,0030H
MOV BX,AX
MOV AX,CX
MOV DX,000AH
MUL DX
MOV CX,AX
ADD CX,BX
JMP A1
FIN1:
MOV AX,CX
POP CX
POP BX
MOV [BX],AL
MOV [BX+1],AH
ADD BX,2
ADD CX,1
JMP KEYIN
FINA:
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
INT 21H
POP CX
POP BX
PUSH CX
MOV BX,0000H
DEC CX
L1: MOV DX,CX
L2: MOV AX,WORD PTR A[BX]
CMP AX,WORD PTR A[BX+2]
JAE A0
XCHG AX,WORD PTR A[BX+2]
MOV WORD PTR [BX],AX
A0: ADD BX,2
LOOP L2
MOV CX,DX
MOV BX,0
LOOP L1
POP CX
CALL PRINT
PRINT:
MOV BX,0
PRINTF:
PUSH CX
MOV AX,WORD PTR A[BX]
MOV DX,0000H
MOV CX,2710H
DIV CX
PUSH DX
MOV DX,AX
ADD DL,30H
MOV AH,2
INT 21H
POP DX
MOV AX,DX
MOV DX,0000H
MOV CX,03E8H
DIV CX
PUSH DX
MOV DX,AX
ADD DL,30H
MOV AH,2
INT 21H
POP DX
MOV AX,DX
MOV DX,0000H
MOV CX,0064H
DIV CX
PUSH DX
MOV DX,AX
ADD DL,30H
MOV AH,2
INT 21H
POP DX
MOV AX,DX
MOV DX,0000H
MOV CX,000AH
DIV CX
PUSH DX
MOV DX,AX
ADD DL,30H
MOV AH,2
INT 21H
POP DX
ADD DL,30H
MOV AH,2
INT 21H
MOV DL,20H
MOV AH,2
INT 21H
POP CX
INC BX
INC BX
LOOP PRINTF
MOV AH,4CH
INT 21H
RET
CODE ENDS
END START
该程序添加了输入与输出支持,以空格间隔两个数,两个空格则结束输入进入排序阶段,输入数的个数无限,最大支持65535的有效排序,而对于大于65535的数则减去65535的倍数而进行比较
这个是比较复杂的 - -你的那个需要自己输入那50个数么。多大的数,还是说那些数是可以事先存进去的???
A DW 100 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,0000H
MOV DX,0000H
MOV CX,0000H
MOV BX,OFFSET A
KEYIN:
PUSH BX
PUSH CX
MOV AH,01H
INT 21H
CMP AL,20H
JE FINA
MOV AH,00H
SUB AX,0030H
MOV CX,AX
A1:
MOV AH,01H
INT 21H
CMP AL,20H
JE FIN1
MOV AH,00H
SUB AX,0030H
MOV BX,AX
MOV AX,CX
MOV DX,000AH
MUL DX
MOV CX,AX
ADD CX,BX
JMP A1
FIN1:
MOV AX,CX
POP CX
POP BX
MOV [BX],AL
MOV [BX+1],AH
ADD BX,2
ADD CX,1
JMP KEYIN
FINA:
MOV DL,0DH
MOV AH,2
INT 21H
MOV DL,0AH
INT 21H
POP CX
POP BX
PUSH CX
MOV BX,0000H
DEC CX
L1: MOV DX,CX
L2: MOV AX,WORD PTR A[BX]
CMP AX,WORD PTR A[BX+2]
JAE A0
XCHG AX,WORD PTR A[BX+2]
MOV WORD PTR [BX],AX
A0: ADD BX,2
LOOP L2
MOV CX,DX
MOV BX,0
LOOP L1
POP CX
CALL PRINT
PRINT:
MOV BX,0
PRINTF:
PUSH CX
MOV AX,WORD PTR A[BX]
MOV DX,0000H
MOV CX,2710H
DIV CX
PUSH DX
MOV DX,AX
ADD DL,30H
MOV AH,2
INT 21H
POP DX
MOV AX,DX
MOV DX,0000H
MOV CX,03E8H
DIV CX
PUSH DX
MOV DX,AX
ADD DL,30H
MOV AH,2
INT 21H
POP DX
MOV AX,DX
MOV DX,0000H
MOV CX,0064H
DIV CX
PUSH DX
MOV DX,AX
ADD DL,30H
MOV AH,2
INT 21H
POP DX
MOV AX,DX
MOV DX,0000H
MOV CX,000AH
DIV CX
PUSH DX
MOV DX,AX
ADD DL,30H
MOV AH,2
INT 21H
POP DX
ADD DL,30H
MOV AH,2
INT 21H
MOV DL,20H
MOV AH,2
INT 21H
POP CX
INC BX
INC BX
LOOP PRINTF
MOV AH,4CH
INT 21H
RET
CODE ENDS
END START
该程序添加了输入与输出支持,以空格间隔两个数,两个空格则结束输入进入排序阶段,输入数的个数无限,最大支持65535的有效排序,而对于大于65535的数则减去65535的倍数而进行比较
这个是比较复杂的 - -你的那个需要自己输入那50个数么。多大的数,还是说那些数是可以事先存进去的???
更多追问追答
追问
好复杂……
话说我是高二的 = =
不用管输入的问题,直接上算法就行了。
追答
- -这就是问题了 你高二怎么会弄微机原理呢。。你的语言是汇编???。。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-10-14
展开全部
~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询