谁能帮我修改一下这个汇编程序
这个程序的问题是:1.输入三位数或以上就只显示后两位. 2.如果输入错误,无法用回格键修改.
谁帮我解决这两个问题???万分感激.
代码如下:
CRLF MACRO
MOV AH,02H
MOV DL,0DH
INT 21H
MOV AH,02H
MOV DL,0AH
INT 21H
ENDM
SPA MACRO
MOV AH,02H
MOV DL,20H
INT 21H
ENDM
DATA SEGMENT
MESS DB 'INPUT NUMBER:',0DH,0AH,'$'
ERROR DB 'INPUT ERROR!',0DH,0AH,'$'
RESULT DB 'THE RESULT IS:',0DH,0AH,'$'
N DW 0
ORG 1000H
SCORE DW 15 DUP (?)
DATA ENDS
;STACK SEGMENT
;STA DW 17 DUP(?)
;TOP DW ?
;STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START: MOV AX,DATA
MOV ES,AX
MOV DS,AX
; MOV SP,TOP
MOV SI,OFFSET SCORE
MOV AL,0FFH
MOV [SI-2],AL
MOV CX,0FH
UUU: CALL GETNUM
MOV [SI],DL
CALL PAIXU
PUSH CX
PUSH SI
MOV AX,N
INC AX
MOV N,AX
MOV CX,AX
MOV SI, OFFSET SCORE
MOV AH,09H
MOV DX,OFFSET RESULT
INT 21H
WWW: MOV AL,[SI]
CALL DISP1
SPA
INC SI
LOOP WWW
POP SI
POP CX
INC SI
B: CRLF
LOOP UUU
MOV AX,4C00H
INT 21H
A: POP CX
INC CX
JMP B
GETNUM PROC NEAR
PUSH CX
XOR DX,DX
MOV AH,09H
MOV DX,OFFSET MESS
INT 21H
GGG: MOV AH,01H
INT 21H
CMP AL,0DH ;回车
JZ PPP
CMP AL,20H ;空格
JZ PPP
SUB AL,30H
JB KKK
CMP AL,0AH
JB GETS
CMP AL,11H
JB KKK
SUB AL,07H
CMP AL,0FH
JBE GETS
CMP AL,2AH
JB KKK
CMP AL,2FH
JA KKK
SUB AL,20H
GETS: MOV CL,04
SHL DX,CL
XOR AH,AH
ADD DX,AX
JMP GGG
KKK: SPA ;输出错误信息
MOV AH,09H
MOV DX,OFFSET ERROR
INT 21H
JMP A
PPP: PUSH DX
CRLF
POP DX
POP CX
RET
DISP1 PROC NEAR
PUSH CX
MOV BL,AL
MOV DL,BL
MOV CL,04
ROL DL,CL
AND DL,0FH
CALL DISPL
MOV DL,BL
AND DL,0FH
CALL DISPL
POP CX
RET
DISP1 ENDP
DISPL PROC NEAR
ADD DL,30H
CMP DL,3AH
JB DDD
ADD DL,27H
DDD: MOV AH,02H
INT 21H
RET
DISPL ENDP
PAIXU PROC NEAR
PUSH SI
AA: MOV AL,[SI]
CMP AL,[SI-1]
JAE TUI
XCHG AL,[SI-1]
MOV [SI],AL
DEC SI
JMP AA
TUI: POP SI
RET
PAIXU ENDP
GETNUM ENDP
CODE ENDS
END START