第五章分支程序设计.docx
《第五章分支程序设计.docx》由会员分享,可在线阅读,更多相关《第五章分支程序设计.docx(31页珍藏版)》请在冰豆网上搜索。
![第五章分支程序设计.docx](https://file1.bdocx.com/fileroot1/2023-2/4/b2c9115d-0209-476b-8ce0-1cfd171b2ea7/b2c9115d-0209-476b-8ce0-1cfd171b2ea71.gif)
第五章分支程序设计
第五章分支程序设计
练习题
5.4.1单项选择题
1.双分支程序设计中实现分支的指令是()指令
A•条件转移B•无条件转移C.移位D•算术运算
2.条件判断转移是根据标志寄存器中的标志位来判断的,用来实现条件判断转移标志位共有()位。
A.4B.5C.6D.9
3.条件转移指令的转移范围是()。
A.0〜65535B.〜32768〜32767C.0〜255D.—128〜1274.用一条条件转移指令一次可实现()个分支。
A.2B.3C.4D.多5.下列指令会影响标志位的指令是()。
A.JMPLB.JCLC.MOVAL,LD.SHLAL,1
6.当两个无符号数进行相加时,执行“JCL”指令表示()转移。
A.结果溢出B.结果为0C.结果为奇D.结果为负
7.当两个无符号数进行比较时,执行“JAL”指令表示()转移。
A.CF=0且ZF=0B.CF=0且ZF=1
C.CF=1且ZF=0D.CF=1且ZF=1
&当“CMPAX,BX”比较时,执行“JGL指令后转移列L,则表明()
0101H单元存放条件转移指令的相对位移量
A.AX>BXB.AX=BXC.AXVBXD.AX>BX
9如果0100H单元存放条件转移指令的操作码,
13H,那么转移后的指令的偏移地址为()
10下列叙述不正确的是()。
A.有符号数比较后的条件转移指令可采用JG、JL、JGE和JLE指令。
B.无符号数比较后的条件转移指令可采用JA、JB、JNE和JBE指令。
C.有符号数比较后判断溢出用JO和JNO指令。
D.无符号数比较后判断溢出用JS和JNS指令。
542多项选择题
1分支程序结构的形式有()。
A单分支结构B双分支结构C多分支结构D无分支结构
2在分支结构的程序中,分支程序的流程一般有()。
A判断转移框B循环框C产生条件框D分支程序段框
3在下列的选项中,可以用来产生条件的选项有()。
A数据传送指令B算术运算指令C逻辑运算指令D转移指令
4在多分支程序设计中,常用的方法有()。
A地址表法B计数法C转移表法D逻辑分解法
5执行完指令“CMPAX,100”后,如果要实现AX寄存器中的无符号数高于100则转移到L,应该使用的指令有()。
AJNSLBJNCLCJALDJNBEL
6.执行完指令“CMPAX,0”后,如果要实现AX寄存器中的内容为正数则转移到L,应该使用
的指令有()。
AJAELBJGELCJNSLDJNCL
7.如果用“JSP'指令实现AX寄存器中的内容为负数转移,产生条件的指令可用()。
AANDAX,8000HBCMPAX,8000H
C.TESTAX,8000HD.CMPAX,0
&如果用要判断AX寄存器中的内容为100H则转移到P,如下的选项有(
A.CMPAX,100HB.SUBAX,100H
JZPJEP
C.ANDAX,100HD.XORAX,100H
JZPJZP
9.
100H则转移到
设AX寄存器中的内容为有符号数,如果用要判断AX寄存器中的内容小于
P,如下的选项有(
)。
A.CMP
AX,
100H
B
.SUB
AX,
100H
JL
P
JNG
P
C.CMP
AX
100H
D.
SUN
AX,
100H
JNGE
P
JNAE
P
10.如果在TAB字单元中存放的是某程序的入口地址,要转移到该程序的的选项有()
A.LEABX,TABB.MOVBX,0
JMPBXJMPTAB[BX]
C.JMPTABD.JMPDWORDPTR[TAB]
5.4.3填空题
1.当两个有符号数相减后,若要判断大于等于则转、需用、或—指令。
2.在分支程序的结构中,其流程图一般由、、定向和四个部分组成。
3.转移表法分支程序设计中,其程序转移表中存放的是。
4.地址表法分支程序设计中,其地址表中存放的是。
5.逻辑分解法程序设计一般是利用多条指令实现多分支程序设计的。
6.条件转移指令是分支程序设计中最常用的指令之一,这类指令大体上可以分为三种,它们是条件转移,条件转移和条件转移指令。
7.条件转移指令的执行,是当条件时则转移。
8.在执行条件转移指令前,必须要执行产生条件码的指令,然后才能进行条件判断转移,而一般的数据传送指令影响条件码(标志位)。
9.当两个数进行比较后,执行指令表示结果为零转L。
10.为了实现程序的多路分支,通常使用、和三种方法的分支程序设计方法
5.4.4程序分析题
1.现有程序如下:
DATA
SEGMENT
X
FLAG
DATA
DB0ABH
DB0
ENDS
CODE
SEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATAMOVDS,AX
MOVAL,X
CMPAL,0
JGEL
MOVFLAG,0
JMPEXIT
L:
MOVFLAG,1
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
(2)程序执行完后FLAG中的内容是多少?
2.现有程序如下:
DATASEGMENT
BUFDB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAH,1
INT
21H
CMP
AL,61H
JBN
CMP
AL,7AH
JAN
SUB
AL,20H
N:
MOV
BUF,AL
MOV
AH,4CH
INT
21H
CODE
ENDS
END
START
请回答:
(
1)该程序完成什么功能?
(2)如果要将“CMPAL,7AH”改为“CMPAL,7BH”,则相应的指令“JAN”应改为什么指令?
3.现有程序如下:
DATASEGMENT
ADB23
BDB0F0H
CDB0
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,A
CMPAL,B
JZL
JGM
MOVC,-1
JMPEXIT
L:
MOVC,0
JMPEXIT
M:
MOVC,1
EXIT:
MOVAH,4CH
INT21H
CODE
ENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
(2)程序运行后,C中的内容是什么?
4.现有程序如下:
DATA
X
SEGMENT
DW7000H
Y
DATA
CODE
DW9000H
ENDS
SEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATAMOVDS,AXMOVAX,XSUBAX,YJOL
MOVDL,‘N'JMPEXIT
L:
MOVDL,‘Y'
EXIT:
MOVAH,2
INT21H
MOVAH,4CH
INT21H
CODE
ENDS
ENDSTART
请回答:
(1)请程序完成什么功能?
(2)程序执行完后,显示输出的结果如何?
5.现有程序如下:
DATA
SEGMENT
BUF1
C1
DB‘ABCDAC'
=$—BUF1
BUF2
BUF3
DATA
DB‘C'
DW0ENDS
CODE
SEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATAMOVDS,AXMOVES,AXLEADI,BUF1MOVCX,C1MOVAL,BUF2CLD
REPNESCASB
JNZN
MOVDL,‘Y'
MOVAH,2
INT21H
START:
MOVAX,DATA
MOV
DS,AX
LEA
SI,BUF
MOV
AL,[SI]
MOV
BL,[SI+1]
MOV
CL,[SI+2]
CMP
AL,BL
JAE
N1
XCHG
AL,BL
N1:
CMP
AL,CL
JAEN2
XCHG
AL,CL
N2:
CMP
BL,CL
JAE
N3
XCHG
BL,CL
N3:
MOV
[SI],AL
MOV
[SI+1],BL
MOV
[SI+2],CL
MOV
AH,4CH
INT
21H
CODE
ENDS
END
START
请回答:
(1)
该程序完成什么功能?
(2)程序运行后BUF中的内容依次是什么?
7.现有程序如下:
DATASEGMENT
XDB4FH
BUFDB2DUP(0)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATASTART:
MOVAX,DATA
MOV
DS,AX
MOV
AL,X
MOV
CL,4
SHR
AL,CL
CMP
AL,9
JBE
L
ADD
AL,7
L:
ADD
AL,30H
MOV
BUF,AL
MOV
AL,X
AND
AL,0FH
CMP
AL,10
JB
M
ADD
AL,7
M:
ADD
AL,30H
MOV
BUF+1,AL
MOV
AH,4CH
INT
21H
CODE
ENDS
END
START
请回答:
(
1)该程序完成什么功能?
(2)
程序运行后
BUF中的内容依次是什么?
8.现有程序如下:
DATA
SEGMENT
A
DW
1234H
B
DW
5678H
S
DB‘
NOSWAP!
$'
DATA
ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOV
AX,
DATA
MOV
DS,
AX
MOV
AH,
1
INT
21H
CMP
AL,
‘Y'
JNZ
M
CMP
AL,
‘y'
JNZM
MOVAX,A
XCHGAX,B
MOVA
,AX
JMP
N
M:
MOV
AH,
9
LEA
DX,
S
INT
21H
N:
MOV
AH,
4CH
INT
21H
CODE
ENDS
END
START
请回答:
(1)该程序完成什么功能?
(2)若鍵盘输入“Y”时,A,B中的值各为多少?
9.现有程序如下:
请回答:
(
Z
DW0
DATA
ENDS
CODE
SEGMENT
ASSUMECS
:
CODE,DS
START:
MOV
AX,DATA
MOV
DS,AX
MOV
AL,X
CMP
AL,0
JGEL
ADD
AL,Y
MOV
AH,0
ADC
AH,0
MOV
Z,AX
JMP
EXIT
L:
SUBAL,Y
MOVAH,
0
SBBAH,
0
EXIT:
MOVAH
,4CH
INT21H
CODE
ENDS
ENDSTART
该程序计算的表达式是什么?
1)
:
DATA
(2)程序运行后,Z中的内容是什么?
10.现有程序如下:
DATA
SEGMENT
BUF
DB
0F3H
S
DB
0
DATA
ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,BUFTESTAL,80HJZLNEGALL:
MOVS,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
(2)程序运行后S中的内容是什么?
11.现有程序如下:
DATASEGMENTSTRDB‘ABCDEFGMABC'
C=$—STR
X=5
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVES,AX
CLD
LEA
SI,STR
ADD
SI,X
MOV
DI,SI
INC
SI
MOV
CX,C
SUB
CX,X
DEC
CX
CMP
CX,0
JBE
EXIT
REP
MOVSB
EXIT:
MOVAH
,4CH
INT
21H
CODE
ENDS
END
START
请回答:
(
1)该程序完成什么功能?
(2)程序运行后STR中的内容是什么?
12.现有程序如下:
DATASEGMENTXDB96H
YDB0A2H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOV
AX,DATA
MOVDS
,AX
MOV
AL,X
CMP
AL,Y
JG
L
XCHG
AL,Y
L:
MOVBL
,AL
MOV
CL,4
SHR
AL,CL
CMP
AL,9
JBE
M
ADD
AL,7
M:
ADDAL
,30H
MOV
DL,AL
MOV
AH,2
INT
21H
AND
BL,0FH
CMP
BL,9
JBE
N
ADD
BL,7
N:
ADDBL
,30H
MOV
AH,2
MOV
DL,BL
INT
21H
MOV
DL,‘H'
MOV
AH,2
INT
21H
MOV
AH,4CH
INT
21H
CODEENDS
ENDSTART
请回答:
(1)该程序完成什么功能?
(2)程序运行后显示的内容是什么?
13.现有程序如下:
DATA
SEGMENT
D0
DB
‘DATA
0$'
D1
DB
‘DATA
1$'
D2
DB
‘DATA
2$'
D3
DB
‘DATA
3$'
X
DB
02H
TAB
DW
DIS0,
DIS1,DIS2,DIS3
DATA
ENDS
CODESEGMENT
MOV
DS,AX
LEA
BX,TAB
MOV
AL,X
AND
AL,3
MOV
AH,0
SHL
AX,1
ADD
BX,AX
JMP
WORDPTR[BX]
DIS0:
LEA
DX,D0
JMP
EXIT
DIS1:
LEA
DX,D1
JMP
EXIT
DIS2:
LEA
DX,D2
JMP
EXIT
DIS3:
LEA
DX,D3
EXIT:
MOV
AH,9
INT
21H
MOV
AH,4CH
INT
21H
CODE
ENDS
END
START
START:
MOVAX,DATA
请回答:
(1)该程序完成什么功能?
2)程序运行后显示输出的是什么?
14.现有程序如下:
DATA
SEGMENT
X
DB
3
Y
DB
45H
W
DB
0
DATA
ENDS
CODE
SEGMENT
ASSUMECS:
CODE,
DS:
START:
MOVAX,DATA
MOV
DS,AX
MOV
BX,OFFSET
TAB
MOV
AL,X
MOV
AH,0
AND
AL,3
SHL
AX,1
ADD
BX,AX
JMP
BX
EXIT:
MOV
AH,4CH
INT
21H
TAB:
JMP
SHORTM0
DATA
(2)程序运行后W中的内容是什么?
15,现有程序如下:
DATA
SEGMENT
W
DB
?
X
DB
25
Y
DW
0
DATA
ENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOV
DS,AX
MOV
AL,X
MOV
BL,W
CMP
BL,0
JZ
L1
CMP
BL,1
JZ
L2
CMP
BL,2
JZ
L3
MOV
BL,AL
MUL
AL
JMP
EXIT
L1:
ADD
AL,100
L:
MOV
AH,0
ADC
AH,0
JMP
EXIT
L2:
ADD
AL,200
L3:
JMP
SUB
L
AL,100
MOV
SBB
AH,0
AH,0
EXIT:
MOV
Y,AX
INT
21H
CODE
ENDS
END
START
1)
请回答:
(
(2)若W中的内容为5,程序运行后Y中的内容是多少?
5.4.5程序填空题。
下列程序是判断BUF元清0,否则就将其置
MOV
(1)
(2)
MOVFLAG,
L3
MOVFLAG,
该程序完成什么功能?
字缓冲区中有符号数的大小,当其数值大于一1。
请在程序的空格处填上适当的指令。
AX,
100时,就将FLAG字节单
BUF
M:
MOV
AH,4CH
INT
21H
下列程序是判断
X和
Y有符号字数据的大小,当
1,当X中的数
据小于
Y中的数据时就将Z送一
的指令。
MOV
AX,X
(1)
(2)
JG
M
MOV
Z,—1
JMP
EXIT
L:
MOV
Z,0
JMP
EXIT
M:
(3)
EXIT:
MOV
AH,4CH
L:
1
2.
X中的数据大于
1,否则将Z清0,
INT21H
Y中的数据时,就将Z置请在程序的空格处填上适当
—X,当
iX=Y时执行
X+Y,其运算后的结果存放在W中。
请在程序的空格处填上适当的指
令。
MOV
AX,X
MOV
BX,Y
CMP
AX,BX
(1)
JB
M
ADD
AX,BX
3•下列程序是判断两个无符号字数据X、Y的大小,当X>Y时执行X—Y,当XVY时执行Y
JMP
EXIT
M:
XCHG
AX,BX
SUB
AX,BX
EXIT:
MOV
W,AX
Y时,
若为字
MOV
AX,X+2
MOV
BX,X
CMP
AX,Y+2
JB
L1
(1)
CMP
BX,Y
(2)
L1:
(3)
JMP
EXIT
L2:
MOV
F,1
EXIT:
MOV
AH,4CH
INT
21H
下列程序是将
BUF字节缓冲区中的两位十六进制数转换成两位十六进制数
ASCII码,
换结果存放在
Y单元中的程序。
请在程序的空白处填上的适当的指令。
MOV
AL,BUF
(1)
SHR
AL,CL
(2)
JBE
L
ADD
AL,7
L:
ADD
AL,30H
MOV
Y,AL
MOV
AL,BUF
(3)
CMP
AL,10
(4)
ADD
AL,7
M:
ADD
AL,30H
MOV
Y+1,AL
MOV
AH,4CH
INT
21H
MOVAH,4CH
INT21H
4•设X、Y是双精度32位无符号数变量,下列程序是完成2个数大小的判断,当X大于
将字节变量F置1,否则将字节变量F清0,请在程序的