求求求~~~~~~~一道简单的问题
请问我的程序为什么输入一个‘-’后,以后输入的数字都带‘-’呢?
请各位高手指点一下,不胜感激~~~
题目是20个有符号数的排序
DATAS SEGMENT
BUF DB 5
DB ?
DB 5 DUP(?)
DA1 DW 20 DUP(?)
MINU DB 1 DUP(?)
DE DB 20 DUP(?)
DATAS ENDS
STACKS SEGMENT
SA DB 100 DUP(?)
TOP LABEL WORD
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,STACKS
MOV SS,AX
MOV SP,OFFSET TOP
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATAS
MOV DS,AX
MOV BX,0
MOV CX,5
INPUT:
PUSH BX
PUSH CX
MOV DX,OFFSET BUF
MOV AH,0AH
INT 21H
PUSH DX
PUSH AX
MOV DL,0AH
MOV AH,02H
INT 21H
POP AX
POP DX
MOV BX,DX
MOV CL,[BX+1]
ADD DX,2
CALL ASCTOBIN
POP CX
POP BX
MOV DA1[BX],AX
INC BX
INC BX
LOOP INPUT
CALL PAIXU
MOV CX,5
MOV BX,0
SHOW:
MOV AX,DA1[BX]
CALL BINTOASC
LEA DX,DE
MOV AH,09H
INT 21H
ADD BX,2
LOOP SHOW
ASCTOBIN PROC FAR
PUSH CX
PUSH DX
PUSH SI
MOV SI,DX
MOV CH,0
CMP CX,6
JA ERR
CLD
MOV AL,[SI]
CMP AL,'-'
JNE CHK
MOV MINU,1
JMP DECS
CHK:CMP AL,'+'
JNE CLRD
DECS:
DEC CX
INC SI
CLRD:
XOR DX,DX
NEXT:
CALL CHE
JC ERR
LODSB
CMP AL,'0'
JB ERR
CMP AL,'9'
JA ERR
AND AX,000FH
ADD DX,AX
JC ERR
LOOP NEXT
MOV AX,DX
CMP MINU,1
JNE EXIT
NEG AX
JMP EXIT
ERR:STC
MOV AX,0
EXIT:
POP SI
POP DX
POP CX
RET
CHE PROC NEAR
PUSH BX
MOV BX,DX
SHL DX,1
SHL DX,1
ADD DX,BX
SHL DX,1
POP BX
RET
CHE ENDP
ASCTOBIN ENDP
PAIXU PROC FAR
PUSH BX
PUSH CX
PUSH DX
MOV BX,OFFSET DA1
MOV CX,5
DEC CX
L1: MOV DX,CX
L2:
MOV AX,[BX]
CMP AX,[BX+2]
JLE COUNT1
XCHG AX,[BX+2]
MOV [BX],AX
COUNT1:
ADD BX,2
LOOP L2
MOV CX,DX
MOV BX,OFFSET DA1
LOOP L1
POP CX
POP BX
POP DX
RET
PAIXU ENDP
BINTOASC PROC FAR
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DI
LEA DI,DE
OR AX,AX
JNS PLUS
MOV BYTE PTR[DI],'-'
INC DI
NEG AX
PLUS:MOV CX,0
MOV BX,10
LOP1:MOV DX,0
DIV BX
PUSH DX
INC CX
OR AX,AX
JNZ LOP1
LOP2:POP AX
ADD AL,30H
MOV [DI],AL
INC DI
LOOP LOP2
MOV AL,00H
MOV [DI],AL
INC DI
MOV AL,'$'
MOV [DI],AL
POP DI
POP DX
POP CX
POP BX
POP AX
RET
BINTOASC ENDP
;
;
MOV AH,4CH
INT 21H
CODES ENDS
END START