ASSUME CS:CODE, DS:DATA
;---------------------------------
DATA SEGMENT ;数据段
STRING01 DB 13, 10, 'January $'
CHANG EQU $ - STRING01
STRING02 DB 13, 10, 'February $'
STRING03 DB 13, 10, 'March $'
STRING04 DB 13, 10, 'April $'
STRING05 DB 13, 10, 'May $'
STRING06 DB 13, 10, 'June $'
STRING07 DB 13, 10, 'July $'
STRING08 DB 13, 10, 'August $'
STRING09 DB 13, 10, 'September $'
STRING10 DB 13, 10, 'October $'
STRING11 DB 13, 10, 'November $'
STRING12 DB 13, 10, 'December $'
X DB ?
TEMP DB ?
DATA ENDS
;---------------------------------
CODE SEGMENT ;代码段
START:
MOV AX, DATA
MOV DS, AX
;--------------------------------
IN_LOOP:
MOV X, 0 ;数据清零.
MOV CX, 2 ;输入2位
_INX:
MOV AH, 1 ;输入单个字符.
INT 21H
;--------------------------------
CMP AL, 13
JE EXIT_IN
CMP AL, '0'
JB _IN_ERR ;小于'0',不是数字.
CMP AL, '9'
JA _IN_ERR
SUB AL, '0' ;还原为数字
MOV TEMP, AL ;暂存
MOV AL, x
MOV BL, 10 ;老数据乘以10
MUL BL
ADD AL, TEMP ;加上新数据.
MOV x, AL ;保存.
LOOP _INX ;继续输入.
JMP EXIT_IN
;--------------------------------
_IN_ERR:
MOV DL, 8
MOV AH, 2
INT 21H
POP CX
JMP _INX
;--------------------------------
EXIT_IN:
;--------------------------------
MOV AL, x ;
CMP AL, 0
JE EXIT
CMP AL, 12
JA EXIT
DEC AL
LEA DX, STRING01
MOV BL, CHANG
MUL BL
ADD DX, AX
MOV AH, 9
INT 21H
EXIT:
MOV AH, 4CH ;结束程序
INT 21H
CODE ENDS
END START
;---------------------------------
不想输入就输入<回车>,结束程序。
追问这个能不能有个循环,就是想结束程序是输入E或者e,你写的这个好像只能执行一次吧。有循环但不能够执行。
追答继续回答,有字数限制。
提交不上去。
发表在百度空间了:
http://hi.baidu.com/do_sermon/item/b2f369f1387dc3e91b111fbd
追问能做成txt文件上传上来吗
追答这里,写不上很多字。
看上面的链接,即可。
已经进行了修改,执行后,显示如下:
C:\MASM>M1
Input num (1~12, Others EXIT): 4
April
Input num (1~12, Others EXIT): 3
March
Input num (1~12, Others EXIT): 12
December
Input num (1~12, Others EXIT):
C:\MASM>