[20120101]汇了个编
STACKS SEGMENT STACK
DW 128 DUP(?)
STACKS ENDS
DATAS SEGMENT
D1 DB 3
DB ?
DB 3 DUP(?) ;存放输入的两位数
D2 DB 'JAN$','FEB$','MAR$','APR$','MAY$','JUN$','JUL$','AUG$','SEP$','OCT$','NOV$','DEC$' ;对应缩写
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START: MOV AX,DATAS
MOV DS,AX
LEA DX,D1
MOV AH,0AH
INT 21H ;键盘输入两位数
LEA SI,D1
INC SI
INC SI
XOR DX,DX
XOR AX,AX
MOV AL,BYTE PTR[SI] ;此时AL存放高位
CMP AL,31H
JNZ NEXT
MOV DL,28H
NEXT: MOV AL,BYTE PTR[SI+1] ;此时AL存放低位
SUB AL,30H ;将低位ASCII码转为10进制
DEC AL
SHL AL,1
SHL AL,1 ;4*(AL-1)
ADD DL,AL ;把输入的两位数 高位*40 低位*4相加
MOV AL,DL ;结果存入AL
LEA DX,D2
ADD DX,AX
MOV SI,DX ;SI指向要输出的字符串
MOV DX,SI
MOV AH,09H
INT 21H
JMP START ;循环执行
MOV AX,4C00H ;退出程序
INT 21H
CODES ENDS
END START
看看百度能排成什么样
果然左对齐了么
还差输入的时候的错误判断
评:虽然看不懂了,不过复习一小时差不多能懂吧?