谁能帮我用汇编语言写一个简单的程序

从键盘输入1,2,3,4,5,6.....12,输出相对应的月份的英文名,eg,输入5,则输出may。不想输入就输入e或者E,结束程序。
要求:输入前有提示语。若输入的是大于12或者小于0或者是字母,则输出 输入错误
最好每一行都有注释,因为这是期末大作业,老师会提问。谢谢。

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>

温馨提示:答案为网友推荐,仅供参考