读书人

帮小弟我改改这个程序

发布时间: 2012-12-16 12:02:32 作者: rapoo

帮我改改这个程序
就是想 输入一个两位或三位的整数 然后排序 我不知道怎么改了

;?aê?×??ˉéú3éμ?′ú???£°?
STACKS SEGMENT STACK ;??????
DW 128 DUP(?) ;×¢òa?aà???óD128??×??ú
STACKS ENDS
DATAS SEGMENT ;êy?Y??
;???ú?aà??¨ò??úμ?êy?Y
BUF DB 20 DUP(?)
STRING1 DB 'Please input the number :',0AH,0DH,'$'
STRING2 DB 'NUM'
STIRNG3 DB 31H,':'
ERRO DB 'The Number is invalid',0AH,0DH,'$'
LEN DB 3

DATAS ENDS
CODES SEGMENT ;′ú????
ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS ;3?ê??ˉ
MOV DS,AX
MOV CX,3 ;12óD20??êy
XOR SI,SI
LEA DX, STRING1
MOV AH ,9
INT 21H
INPUT:
MOV AH,1 ;ê?è?μú?t??êy
INT 21H
CMP AL,'0'
JB ER
CMP AL,'9'
JA ER
SUB AL,'0' ;×a??3é2????


MOV DL,AL
PUSH DX ;è???
MOV AH,1 ;ê?è?μú?t??êy
INT 21H
CMP AL,'0'
JB ER
CMP AL,'9'
JA ER
SUB AL,'0'
MOV DL, AL
PUSH DX ;è???
MOV AH,1 ;ê?è?μúèy??êy
INT 21H
CMP AL,0DH ;è?ê???3μ?òò?12?íá???êy
JZ TWONUM ;′|àí?aá???êy

CMP AL,'0' ;??ò?D??μúèy??êyê??óDD§
JB ER
CMP AL,'9'
JA ER
SUB AL,'0'
MOV BL, AL ;????êy?Yê±±£′?
POP AX ;ê???êy3???
MOV DL,10
MUL DL ;ê???êy×?3?10
ADD AX, BX ;?óé?????êy×?


MOV BX ,AX ;è?oó?Yê±±£′?
POP AX ;°ù??êy3???
MOV DL ,100
MUL DL ;°ù??êy3?ò?100
ADD AX,BX ;?óé?ê???êyoí????êy
MOV BUF[SI],AL ;±£′?μ??o′???
INC SI
MOV DL ,0AH
MOV AH, 02H
INT 21H
MOV DL, 0DH
MOV AH ,02H
INT 21H
LOOP INPUT
JMP AGAIN3
ER:
LEA DX,ERRO
MOV AH,9
INT 21H
JMP INPUT
MOV AX,4C00H ;í?3?3ìDò
INT 21H

TWONUM:
MOV DL ,0AH
MOV AH ,02H
INT 21H
MOV DL ,0AH
MOV AH ,02H


INT 21H
MOV DL ,0AH
MOV AH ,02H
INT 21H
MOV DL ,0DH
MOV AH ,02H
INT 21H
POP BX ;????êy3???
POP AX ;ê???êy3???
MOV DL ,10
MUL DL ;ê???êy×?3?10
ADD AX, BX ;?óé?????êy×?
MOV BUF[SI],AL ;±£′?μ??o′???
INC SI
DEC CX
CMP CX,0
JZ AGAIN3
JMP INPUT


XOR AX,AX
XOR CX,CX
XOR BX,BX
XOR SI,SI
XOR DI,DI
MOV CX, 3
AGAIN1:
DEC CX
CMP BX,CX ;bx=i,cx=L£?cmp£¨i£?L-1£?


JGE OVER ;i>=L-1ê±£?ía?-??áê?
INC CX
INC BX
MOV AX,BX ;ax=bx+1 => j=i+1
AGAIN2:
CMP AX,CX ;ax=j,cx=L;cmp(j,L)
JGE CNTINU1 ;è?j>=L£??ú?-??áê?£???ò????êy?Y
MOV SI,BX ;?¨ò?á???????£?si=i£?di=j?±e???òêy×é?úμ?á???êy?Y
MOV DI,AX
SHL SI,1 ;si*2£??1?-êy?μ?úêy×é?Dμ?????
SHL DI,1
PUSH AX
MOV AL,BUF[SI]
CMP AL,BUF[DI] ;±è??data[i]ó?data[j]
JLE CNTINU2
XCHG AL,BUF[DI] ;è?óDdata[i]>data[j]£?????á???êy?μ
MOV BUF[SI],AL
CNTINU2:
POP AX
INC AX
JMP AGAIN2
CNTINU1:
INC BX
JMP AGAIN1

OVER:
XOR CX,CX
MOV CL,LEN
SHR CX,1
MOV BX,0


AGAIN3:
MOV AL,BUF[BX]
MOV BX,10
MOV CX,0
NEXT1:
MOV DX,0
DIV BX
ADD DX,'0'
PUSH DX
INC CX
CMP AX,0
JNZ NEXT1
NEXT2:
POP DX
MOV AH,02H
INT 21H
LOOP NEXT2
MOV DL,20H
INT 21H
RET
ADD BX,2
LOOP AGAIN3



MOV CL,LEN
CODES ENDS
END START

[最优解释]
我有个程序 直接联系我吧
[其他解释]
略乱。。你该加点注释的
[其他解释]
注释怎么乱码了?
[其他解释]
copy代码,也把注释弄一下,这个大写的汇编+乱码的注释,

读书人网 >汇编语言

热点推荐