注册 登录
编程论坛 汇编论坛

输出年月日的问题

cabin0120 发布于 2007-11-18 15:12, 1036 次点击

要求输入年月日,并输出.若输入错误则提示错误信息
下面是我编的程序,但是调试不出来,望高手帮我看看,谢谢了
DATAS SEGMENT
DATA1 DB 'INPUTERORR','$';此处输入数据段代码
DATA2 DB 'YOU INPUT THE DATE IS ',13,10
DATA3 DB 4 DUP(?),'-'
DATA4 DB 2 DUP(?),'-'
DATA5 DB 2 DUP(?),'$'
A1 DB 'please input the year:',13,10,'$'
B1 db 'please input the month:',13,10,'$'
C1 db 'please input the data:',13,10,'$'
DATAS ENDS

STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV CX,0FFFH
XL:MOV DL,7
MOV AH,2
INT 21H
LOOP XL

LEA SI,DATA3
LEA DX,A1
MOV AH,9
INT 21H
Y: MOV CX,4
MOV AH,1
INT 21H
MOV [SI],AL
INC SI
LOOP Y

LEA DX,B1
MOV AH,9
INT 21H
LEA SI,DATA4
MOV CX,2
M: MOV AH,1
INT 21H
MOV [SI],AL
INC SI
LOOP M
LEA SI,DATA4
MOV AL,[SI]
CMP AL,'0'
JZ M1
CMP AL,'1'
JZ M2
JMP MISS
M1:INC SI
MOV AL,[SI]
CMP AL,'1'
JZ D1
CMP AL,'2'
JZ D3
CMP AL,'3'
JZ D1
CMP AL,'4'
JZ D2
CMP AL,'5'
JZ D1
CMP AL,'6'
JZ D2
CMP AL,'7'
JZ D1
CMP AL,'8'
JZ D1
CMP AL,'9'
JZ D2
JMP MISS
M2:INC SI
MOV AL,[SI]
CMP AL,'0'
JZ D1
CMP AL,'1'
JZ D2
CMP AL,'2'
JZ D1
JMP MISS

D1: LEA DX,C1
MOV AH,9
INT 21H
LEA SI,DATA5
MOV CX,2
DN:MOV AL,1
INT 21H
MOV [SI],AL
INC SI
LOOP DN
LEA SI,DATA5
MOV AL,[SI]
CMP AL,'0'
JZ Q1
CMP AL,'1'
JZ Q2
CMP AL,'2'
JZ Q2
CMP AL,'3'
JZ Q3
JMP MISS

D2:LEA DX,C1
MOV AH,9
INT 21H
LEA SI,DATA5
MOV CX,2
DN1:MOV AL,1
INT 21H
MOV [SI],AL
INC SI
LOOP DN1
LEA SI,DATA5
MOV AL,[SI]
CMP AL,'0'
JZ Q1
CMP AL,'1'
JZ Q2
CMP AL,'2'
JZ Q2
CMP AL,'3'
JZ Q4
JMP MISS

D3:LEA DX,C1
MOV AH,9
INT 21H
LEA SI,DATA5
MOV CX,2
DN2:MOV AL,1
INT 21H
MOV [SI],AL
INC SI
LOOP DN2
LEA SI,DATA5
MOV AL,[SI]
CMP AL,'0'
JZ Q1
CMP AL,'1'
JZ Q2
CMP AL,'2'
JZ Q5
JMP MISS



Q1:INC SI
MOV AL,[SI]
CMP AL,'1'
JB MISS
CMP AL,'9'
JA MISS
JMP WANC
Q2:INC SI
MOV AL,[SI]
CMP AL,'0'
JB MISS
CMP AL,'9'
JA MISS
JMP WANC
Q3:INC SI
MOV AL,[SI]
CMP AL,'0'
JB MISS
CMP AL,'1'
JA MISS
JMP WANC
Q4:INC SI
MOV AL,[SI]
CMP AL,'0'
JNZ MISS
JMP WANC
Q5:INC SI
MOV AL,[SI]
CMP AL,'0'
JB MISS
CMP AL,'8'
JA MISS
JMP WANC




WANC:LEA DX,DATA2
MOV AH,9
INT 21H
JMP JSH

MISS:LEA DX,DATA1
MOV AH,9
INT 21H
JMP XL

JSH:MOV AH,4CH
INT 21H
CODES ENDS
END START

2 回复
#2
永夜的极光2007-11-18 19:14
Y: MOV CX,4
MOV AH,1
INT 21H
MOV [SI],AL
INC SI
LOOP Y

标号位置错了,你这样死循环定了.

后面的还没看,如果还是不行你再说,还有我建议你写点注释吧,不然看起来比较累
#3
wubizao2007-11-26 08:56
我看的眼好花啊
还是比较喜欢看注释加小写地
1