设计一多分支程序,要求从键盘输入数字‘0’~‘9’,以决定转向哪一分支。
【正确答案】:①CODE1 SEGMENT
ASSUME CS:CODE2
START:MOV AH,1
INT 21H
CMP AL,30H
JE PROC 0
CMP AL,31H
JE PROC 1
CMP AL,32H
JE PROC 2
.
.
.
PROC0:……
.
.
.
PROC1:……
.
.
.
PROC2:……
.
.
.
MOV AH,4CH
INT 21H
CODE1 ENDS
END START
②CODE2 SEGMENT
ASSUME CS:CODE2
START:MOV AH,1
INT 21H
CMP AL,30H
JB START
CMP AL,39H
JA START
SUB AL,30H
MOV AH,0
LEA BX,TAB
ADD BX,AX
JMP BX
.
.
.
TAB: JMP SHORT PROC0
JMP SHORT PROC1
JMP SHORT PROC2
.
.
.
MOV AH,4CH
INT 21H
CODE2 ENDS
END START
【题目解析】:第一种方法是普通的比较转移判断;第二种方法是转移表法。从键盘输入的字符都是ASCII码形式,第一种方法:首先让输入的字符与30H相比,如果相等(即如果从键盘输入的是‘0’),就到过程0处,如果不相等,就与31H相比,如果相等(即如果从键盘输入的是‘1’),就到过程1处,如果不相等,就与32H相比,如果相等(即如果从键盘输入的是‘2’),就到过程2处,等等,直到与39H比完。第二种方法:从键盘输入一个字符,如果比30H小,则重新输入,如果比39H大,则重新输入。如果是30H到39H之间的字符,继续往下执行,让这个字符减去30H,得到纯数字,把AH清零。取地址表的首地址存入BX,让BX与AX相加,得到偏移地址,跳到对应的过程处执行。
设计一多分支程序,要求从键盘输入数字‘0’~‘9’,以决定转向哪一分支。
- 2024-09-08 13:24:37
- 汇编语言程序设计(02321)