第六章课外练习题
(2008-12-19 21:56:31)
标签:
汇编语言杂谈 |
分类: 汇编语言 |
一、单项选择题:
1.JMP
(A)SI的内容
(C)SI+IP的内容
2.JMP
(A)BX的内容
(C)IP+
[BX]之和
3.当A≥B时转移的条件转移指令为(A,B为带符号数)( D )。
(A)JA
4.已知X,Y为带符号数,两个数比较后,欲判断X≤Y发生转移,应使用( C )指令。
(A)JBE
5.假定AX和BX寄存器中存放的是有符号整数,如果AX>BX则转移到LABEL,应采用下面哪一条指令序列?(
D )。
(A)
JC
(C)
JA
6.已知AX=8078H, BX=5610H,指令CMP
(A)0,0
7.在汇编下列条件转移指令中,两条指令功能不一样的是( D )。
(A)JZ
8.循环指令LOOPNZ终止循环的条件是( B )。
(A)CX=0,且ZF=0
(C)CX<>0,且ZF=0
9.在循环次数已知的情况下,采用哪种方法控制循环程序最方便( A )。
(A)计数法
10.循环控制指令隐含指定哪个寄存器作为循环计数器( B )。
(A)CL
二、判断题(判断每题正误,对的在题后括号内划 “√”,错的划“×”):
1.两个数相等时进行转移可用JZ指令
2.当PF=1时发生转移的条件转移指令为JPO
3.当X<Y(X,Y为无符号数)时发生转移的条件转移指令有JB和JC
4.满足指令JS
5.JS
6.JMP
三、填空题
1.当两个数不相等时,发生转移的条件转移指令有JNE和( JNZ )。
2.当PF=0时,发生转移的条件转移指令为JNP和( JPO )。
3.当A≥B(A,B为无符号数)时,发生转移的条件转移指令有( JAE )( JNB )。
4.设有下列程序段:
ADD
JNO
JNC
SUB
JNC
JNO
JMP
如果AX和BX的内容如习题4图形,则该程序分别执行后,程序转向哪里?
AX |
BX |
程序转向 |
14C6H |
80DCH |
L1 |
B568H |
54B5H |
L1 |
42C8H |
608DH |
L2 |
D023H |
9FD0H |
L5 |
9FD0H |
D023H |
L5 |
习题4示意图 |
四、程序分析题
1.阅读如下程序,回答所提出的问题,假定X1,X2,...Xn为无符号数。
.MODEL
.STACK
.DATA
BLOK
COUNT
RESULT
.CODE
.STARTUP
GOON:
NEXT:
.EXIT
END
程序执行完,回答下述问题:
RESULT+2字存储单元的内容=MAX(X1,X2,..,Xn)
程序循环次数=( COUNT )
[BX]=( Xn )
2.下列程序完成的是什么功能?(SUMn=|BUF1n|+|BUF2n|。两个数组BUF1和BUF2对应位绝对值之和存入SUM对应位)
LEA
LEA
LEA
MOV
AGAIN:
MOV
CMP
JGE
NEG
K1:
MOV
CMP
JGE
NEG
K2:
ADD
MOV
ADD
ADD
ADD
LOOP
3.下列程序完成的是什么功能?(DATX1数组中后100个数送DATX2数组中)
DATX1
DATX2
┆
MOV
MOV
MOV
MOV
NEXT:
MOV
MOV
INC
INC
LOOP
4.假设X和X+2单元的内容为双字数据P,Y和Y+2单元的内容为双字数据Q(X单元与Y单元为低位字),说明下列程序段完成什么工作?()
L1:
L2:
5.指出以下程序执行后ANS的内容是什么?(在三个带符号数中求最大数。即ANS=1240H)
DSEG
D1
D2
D3
ANS
DSEG
CSEG
ASSUME
START:
MOV
MOV
MOV
CMP
JG
MOV
CMP
JG
D3G:
JMP
CMP13:
JL
OK:
MOV
INT
CSEG
END
6.下述程序段运行后,S9开始的10个字节存储单元内容是什么?(1,0,3,2,5,4,7,6,9,8)
DATA
S9
DATA
LOP:
7.指出下列程序段执行后AL内容是什么?
①
|
②
|
③
|
④
|
请在能引起转移到L1单元的条件转移指令下面划“√”,
|
AX |
BX |
JB |
JNB |
JBE |
JNBE |
JL |
JNL |
JLE |
JNLE |
① |
1F52H |
1F52H |
|
√ |
√ |
|
|
|
√ |
|
② |
88C9H |
88C9H |
|
√ |
√ |
|
|
|
√ |
|
③ |
FF82H |
007EH |
√ |
|
√ |
|
√ |
|
√ |
|
④ |
58BAH |
020EH |
|
√ |
|
√ |
|
√ |
|
√ |
⑤ |
FFC5H |
FF8BH |
|
√ |
|
√ |
|
√ |
|
√ |
⑥ |
09A0H |
1E97H |
√ |
|
√ |
|
|
√ |
|
√ |
⑦ |
8AEAH |
FC29H |
√ |
|
√ |
|
√ |
|
√ |
|
⑧ |
D367H |
32A6H |
|
√ |
|
√ |
√ |
|
√ |
|
1.将AX寄存器中的16位数分成4组,每组4位,然后把这4组数分别放在AL、BL、CL和DL中的最低4位。
MOV
MOV
AND
MOV
AND
ROL
AND
MOV
AND
2.将BUF有符号双字节数据区中的最大数及最小数分别送MAX及MIN存储单元。
.数据段
BUF
COUNT
MAX
MIN
.代码段
MOV
DEC
OUTLP:
LEA
INLP:
CMP
JL
XCHG
MOV
NEXT:
DEC
JNZ
LOOP
MOV
MOV
MOV
MOV
3.已知一多字节数据存放在内存DATA开始的连续单元中,数据长度在LEN单元,编制程序计算其绝对值并存入原单元。
MOV
MOV
MOV
CMP
JGE
CLC
AGAIN:
MOV
SBB
MOV
INC
LOOP
QUIT0:
4.编制程序,将一个包含有20个数据的数组M分成两个数组:正数组P和负数组N。
MOV
MOV
MOV
MOV
AGAIN:MOV
CMP
JL
MOV
INC
JMP
FS:
INC
OK:
LOOP
5.在首地址为DATA的数组中,存放了100H个16位补码数。求出它们的平均值放在AX寄存器中,并求出数组中有多少个数小于此平均值,将结果放在BX寄存器中。
MOV
MOV
MOV
AGAIN:ADD
ADD
LOOP
MOV
MOV
IDIV
MOV
MOV
MOV
AGA:
JGE
INC
NEXT:
LOOP
6.编写程序,求出首地址为DATA的100字无符号数组中的最小偶数,并把它存放AX中。
MOV
MOV
MOV
AGAIN:MOV
TEST
JNZ
CMP
JB
MOV
NEXT:
LOOP