运行的结果为什么会有“小花“?
DATA SEGMENT
BUFS DB 10 DUP(?)
BUFD DB 10 DUP (?)
TOTAL DW ?
NOZERO DB ?
YE DB ?
M1 DB 'please input the some chars.....',13,10,'$'
M2 DB 'the result is....',13,10,'$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA DX,M1
CALL PROMPT
CALL CRLF
MOV SI,0
COMMON:
MOV AH,1
INT 21H
CMP AL,13
JE INOVER
MOV BUFS[SI],AL
INC SI
CMP SI,10D
JB COMMON
INOVER:
MOV TOTAL ,SI
LEA DX,M2
CALL PROMPT
CALL CRLF
LEA DX,BUFS
CALL PROMPT
CALL CRLF
MOV BX,TOTAL
MOV YE,BL
MOV BL,YE
CALL PUTOUTDEC
MOV AH,4CH
INT 21H
PUTOUTDEC PROC
PUSH CX
MOV NOZERO,0
MOV CL,100
CALL MAIN
MOV CL,10
CALL MAIN
MOV CL,1
CALL MAIN
CMP NOZERO,0
JNE LL
MOV DL,30H
MOV AH,2
INT 21H
LL: POP CX
RET
MAIN PROC
MOV AL,BL
MOV AH,0
DIV CL
MOV BL,AH
MOV DL,AL
CMP DL,0
JNE LLL
CMP NOZERO,0
JNE LLL
JMP LL2
LLL:
MOV NOZERO,1
ADD DL,30H
MOV AH,2
INT 21H
LL2:
RET
MAIN ENDP
PUTOUTDEC ENDP
CRLF PROC
MOV DL,13
MOV AH,2
INT 21H
MOV DL,10
MOV AH,2
INT 21H
RET
CRLF ENDP
PROMPT PROC
MOV AH,09H
INT 21H
RET
PROMPT ENDP
CODE ENDS
END START
哪位高手先运行一下试试看,我运行的结果是有一个小花,还有一行不该出现的文字
是这样的:
假如说输入的是123vabn
运行的结果为:
please input the some chars.....
result is....
123vabn;就在这个地方一个小花,还有please input the some chars.....
7
问题点数:20、回复次数:2Top
1 楼NeoZero(龙王零式)回复于 2006-03-04 18:36:31 得分 0
下面是按我的习惯作了修改,为什么在字符串里有回车换行你还要CRLF,而在输入了字符以后又不CRLF。在BUFS后面必须加'$'才能正常结束,还有MOV YE,BL MOV BL,YE我觉得是重复的。另外输入长度最多也就10个字节,没有必要用双字也没有必要在转BIN时除于100。
START:
MOV AX,DATA
MOV DS,AX
LEA DX,M1
CALL PROMPT
MOV SI,0
COMMON:
MOV AH,1
INT 21H
CMP AL,13
JE INOVER
MOV BUFS[SI],AL
INC SI
CMP SI,10D
JB COMMON
INOVER:
MOV TOTAL ,SI
CALL CRLF
LEA DX,M2
CALL PROMPT
MOV BUFS[SI],'$'
LEA DX,BUFS
CALL PROMPT
MOV BX,TOTAL
MOV YE,BL
CALL PUTOUTDECTop
2 楼TB804()回复于 2006-03-07 06:20:58 得分 0
DTop




