21,500
社区成员
发帖
与我相关
我的任务
分享
;BY JUN
;************************************************************************************************
DATA SEGMENT
MSG DB 'please choose(1~9):','$' ;定义输出的字符串信息:选择前缀
CH1 DB 0DH,0AH,'Hello!',0DH,0AH,'$' ;定义输出的字符串信息:分支1的信息
CH2 DB 0DH,0AH,'Wang Linfang',0DH,0AH,'$' ;定义输出的字符串信息:分支2的信息
CH3 DB 0DH,0AH,'is',0DH,0AH,'$' ;定义输出的字符串信息:分支3的信息
CH4 DB 0DH,0AH,'a',0DH,0AH,'$' ;定义输出的字符串信息:分支4的信息
CH5 DB 0DH,0AH,'cute',0DH,0AH,'$' ;定义输出的字符串信息:分支5的信息
CH6 DB 0DH,0AH,'pig',0DH,0AH,'$' ;定义输出的字符串信息:分支6的信息
CH7 DB 0DH,0AH,'Wan Jun',0DH,0AH,'$' ;定义输出的字符串信息:分支7的信息
CH8 DB 0DH,0AH,'is',0DH,0AH,'$' ;定义输出的字符串信息:分支8的信息
CH9 DB 0DH,0AH,'a goodman',0DH,0AH,'$' ;定义输出的字符串信息:分支9的信息
ERRMSG DB 0DH,0AH,'CHOOSE ERROR! ',0DH,0AH,'$' ;定义输出的字符串信息:选择错误息
TABLE dw one
dw two
dw three
dw four
dw five
dw six
dw seven
dw eight
dw nine
DATA ENDS
;************************************************************************************************
CODE SEGMENT ;定义代码段
main proc far
ASSUME CS:CODE ,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA bx,TABLE
AGAIN:
LEA DX,MSG
CALL DISPCHS ;调用显示字符串子程序
MOV AH,01H
INT 21H
CMP AL,'1' ;输入的字符和1相比较
JB ERROR
CMP AL,'9' ;输入的字符和9相比较
JA ERROR
SUB AL,31H ;转数值
add AL,AL
mov AH,0H
MOV DI, AX
JMP [BX+DI]
ERROR:
LEA DX,ERRMSG ;输出选择错误信息
CALL DISPCHS ;调用显示字符串子程序
JMP EXIT
EXIT:
MOV AH,4CH ;4C号功能调用:终止当前程序并返回调用程序
INT 21H ;返回DOS
one:
LEA DX,CH1 ;输出1字符串的偏移地址
CALL DISPCHS
JMP AGAIN
two:
LEA DX,CH2
CALL DISPCHS
JMP AGAIN
three:
LEA DX,CH3
CALL DISPCHS
JMP AGAIN
four:
LEA DX,CH4
CALL DISPCHS
JMP AGAIN
five:
LEA DX,CH5
CALL DISPCHS
JMP AGAIN
six:
LEA DX,CH6
CALL DISPCHS
JMP AGAIN
seven:
LEA DX,CH7
CALL DISPCHS
JMP AGAIN
eight:
LEA DX,CH8
CALL DISPCHS
JMP AGAIN
nine:
LEA DX,CH9
CALL DISPCHS
JMP AGAIN
MAIN ENDP
DISPCHS PROC NEAR ;显示字符串子程序
MOV AH,09H ;9号功能调用:显示字符串
INT 21H ;完成输出显示
RET
DISPCHS ENDP
CODE ENDS
;************************************************************************************************
END START