加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

第六章课外练习题

(2008-12-19 21:56:31)
标签:

汇编语言

杂谈

分类: 汇编语言

一、单项选择题:
1.JMP SI的目标地址偏移量为( A )。
(A)SI的内容    (B)SI所指向的内存字单元之内容
(C)SI+IP的内容   (D)IP+ [SI]
2.JMP WORD PTR [BX]转移的目标地址是( D )。
(A)BX的内容    (B)SP+BX之和
(C)IP+ [BX]之和   (D)BX指出的内存单元之内容
3.当A≥B时转移的条件转移指令为(A,B为带符号数)( D )。
(A)JA    (B)JAE   (C)JG    (D)JGE
4.已知X,Y为带符号数,两个数比较后,欲判断X≤Y发生转移,应使用( C )指令。
(A)JBE   (B)JL    (C)JNG   (D)JNA
5.假定AX和BX寄存器中存放的是有符号整数,如果AX>BX则转移到LABEL,应采用下面哪一条指令序列?( D )。
(A) SUB  AX,BX  (B) SUB  AX, BX    
JC   LABEL        JNC  LABEL      
(C) CMP  AX, BX (D) CMP  AX, BX
JA   LABEL         JG   LABEL
6.已知AX=8078H, BX=5610H,指令CMP BL,AH执行后OF,CF的值为( D )
(A)0,0   (B)0,1   (C)1,0   (D)1,1
7.在汇编下列条件转移指令中,两条指令功能不一样的是( D )。
(A)JZ 与JE  (B)JC与JB  (C)JA与JNBE  (D)JP与JS
8.循环指令LOOPNZ终止循环的条件是( B )。
(A)CX=0,且ZF=0  (B)CX=0, 或ZF=1
(C)CX<>0,且ZF=0  (D)CX<>0, 或ZF=1
9.在循环次数已知的情况下,采用哪种方法控制循环程序最方便( A )。
(A)计数法   (B)条件控制法
10.循环控制指令隐含指定哪个寄存器作为循环计数器( B )。
(A)CL   (B)CX   (C)AL   (D)AX
二、判断题(判断每题正误,对的在题后括号内划 “√”,错的划“×”):
1.两个数相等时进行转移可用JZ指令          ( √ )
2.当PF=1时发生转移的条件转移指令为JPO       ( × )
3.当X<Y(X,Y为无符号数)时发生转移的条件转移指令有JB和JC  ( √ )
4.满足指令JS  LAB的执行条件,则表示上一条指令运算的结果为负数  ( √ )
5.JS [BX]               ( × )
6.JMP AL               ( × )
三、填空题
1.当两个数不相等时,发生转移的条件转移指令有JNE和( JNZ )。
2.当PF=0时,发生转移的条件转移指令为JNP和( JPO )。
3.当A≥B(A,B为无符号数)时,发生转移的条件转移指令有( JAE )( JNB )。
4.设有下列程序段:
ADD  AX, BX
JNO  L1
JNC  L2
SUB  AX, BX
JNC  L3
JNO  L4
JMP  SHORT L5
如果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  SMALL
.STACK
.DATA
BLOK       DW   X1,X2,..,Xn
COUNT     EQU  ($-BLOK)/2
RESULT     DW   COUNT,?
.CODE
.STARTUP
      LEA   BX,BLOK-2
      MOV  CX,RESULT
      XOR  AX,AX
GOON:
      ADD  BX,2
      CMP  AX,[BX]
      JAE  NEXT   
      MOV  AX,[BX]
NEXT: 
      LOOP  GOON
      MOV   RESULT+2,AX
.EXIT 0
END
程序执行完,回答下述问题:
RESULT+2字存储单元的内容=MAX(X1,X2,..,Xn)
程序循环次数=( COUNT
[BX]=( Xn
2.下列程序完成的是什么功能?(SUMn=|BUF1n|+|BUF2n|。两个数组BUF1和BUF2对应位绝对值之和存入SUM对应位)
LEA  SI,  BUF1
LEA  BX, BUF2
LEA  DI, SUM
MOV CX, 100
AGAIN:
MOV AX, [SI]
CMP AX, 0
JGE  K1
NEG AX
K1:
MOV DX, [BX]
CMP BX, 0
JGE  K2
NEG BX
K2:
ADD AX, DX
MOV [DI], AX
ADD SI,  2
ADD DI, 2
ADD BX, 2
LOOP AGAIN
3.下列程序完成的是什么功能?(DATX1数组中后100个数送DATX2数组中)
DATX1 DB  300 DUP(?)
DATX2 DB  100 DUP(?)

MOV SI,0
MOV DI,0
MOV BX,200
MOV CX,100
NEXT: 
MOV AL,DATX1 [BX][SI]
MOV DATX2 [DI],AL
INC  SI
INC  DI
LOOP NEXT
4.假设X和X+2单元的内容为双字数据P,Y和Y+2单元的内容为双字数据Q(X单元与Y单元为低位字),说明下列程序段完成什么工作?()
      MOV DX, X+2
      MOV AX, X
      ADD AX, X
      ADC DX, X+2
      CMP DX, Y+2
      JL  L2
      JG  L1
      CMP AX, Y
      JBE  L2
L1:  MOV AX, 1
      HLT
L2:  MOV AX, 2
      HLT

5.指出以下程序执行后ANS的内容是什么?(在三个带符号数中求最大数。即ANS=1240H)
DSEG SEGMENT
D1  DW  9CC0H
D2  DW  1240H
D3  DW  0620H
ANS DW  
DSEG ENDS
CSEG SEGMENT
ASSUME DS:DSEG,CS:CSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV AX,D1
CMP AX,D2
JG  CMP13
MOV AX,D2
CMP AX,D3
JG  OK
D3G:  MOV AX,D3
JMP  OK
CMP13: CMP AX,D3
JL  D3G
OK:  MOV ANS,AX
MOV AH,4CH
INT  21H
CSEG ENDS
END START
6.下述程序段运行后,S9开始的10个字节存储单元内容是什么?(1,0,3,2,5,4,7,6,9,8)
DATA  SEGMENT
S9    DB  0,1,2,3,4,5,6,7,8,9
DATA  ENDS
     
      LEA  SI,S9
      LEA  DI,S9+1
      MOV  CX,5
LOP: MOV  AL,[SI]
      XCHG  AL,[DI]
      MOV  [SI],AL
      ADD  SI,2
      ADD  DI,2
      DEC CX
      JNZ  LOP

7.指出下列程序段执行后AL内容是什么? 

①  ┆(60H

           MOV      AL, 60H

           CMP      AL, 0BBH

           JB       L2

       L1:MOV      AL, 0BBH

       L2:NOP       ;NOP为空操作

②  ┆(61H

           MOV    AL, 60H

           CMP    AL, 0BBH

           JL     L2

       L1:INC    AL

       L2:NOP       ;NOP为空操作

③  ┆(0FFH

           XOR       AL, AL

           MOV       BL, 98H

           ADD       BL, 88H

           JNC       L2

       L1:DEC       AL

       L2:NOP       ;NOP为空操作

④  ┆(0

           XOR      AL, AL

           MOV      BL, 98H

           ADD      BL, 88H

           JNO      L2

       L1:MOV      AL, 0

       L2:NOP       ;NOP为空操作

8.指令序列为:  CMP AX, BX
                 JX  L1
请在能引起转移到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 CL,4
MOV DL,AL
AND DL,0FH
MOV BL,AH
AND BL,0FH
ROL AX,CL
AND AL,0FH
MOV CL,AH
AND CL,0FH
2.将BUF有符号双字节数据区中的最大数及最小数分别送MAX及MIN存储单元。
.数据段
BUF DW 1010H,2030H,19H,5555H,3435H,0FFFFH
COUNT EQU ($-BUF)/2
MAX DW 
MIN DW 
.代码段
MOV CX, COUNT
DEC CX
OUTLP: MOV DX,CX
LEA BX,BUF
INLP: MOV AX,[BX]
CMP AX,[BX+2]
JL  NEXT
XCHG AX,[BX+2]
MOV [BX],AX
NEXT: ADD BX,2
DEC DX
JNZ  INLP
LOOP OUTLP
MOV AX,BUF[0]
MOV BX,BUF[COUNT+COUNT-2]
MOV MIN,AX
MOV MAX,BX
3.已知一多字节数据存放在内存DATA开始的连续单元中,数据长度在LEN单元,编制程序计算其绝对值并存入原单元。
MOV SI,0
MOV CX,LEN
MOV AL,DATA[LEN-1]
CMP AL,0
JGE  QUIT0
CLC
AGAIN:
MOV AL,0
SBB  AL,DATA[SI]
MOV DATA[SI],AL
INC  SI
LOOP AGAIN
QUIT0: NOP
4.编制程序,将一个包含有20个数据的数组M分成两个数组:正数组P和负数组N。
MOV BX,0
MOV SI,0
MOV DI,0
MOV CX,20
AGAIN:MOV AL,M[BX]
CMP AL,0
JL  FS
MOV P[DI],AL
INC  DI
JMP OK
FS:  MOV N[SI],AL
INC  SI
OK:  INC  BX
LOOP AGAIN
5.在首地址为DATA的数组中,存放了100H个16位补码数。求出它们的平均值放在AX寄存器中,并求出数组中有多少个数小于此平均值,将结果放在BX寄存器中。
MOV AX,0
MOV SI,0
MOV CX,100
AGAIN:ADD AX,DATA[SI]
ADD SI,2
LOOP AGAIN
MOV DX,0
MOV CX,100
IDIV CX    ;AX为平均数
MOV BX,0
MOV SI,0
MOV CX,100
AGA: CMP AX,DATA[SI]
JGE  NEXT
INC  BX    ;BX为小于AX的个数
NEXT: ADD SI,2
LOOP AGAIN1
6.编写程序,求出首地址为DATA的100字无符号数组中的最小偶数,并把它存放AX中。
MOV AX,0FFFFH   ;假设FFFFH是本数组中的最小偶数
MOV SI,0
MOV CX,100
AGAIN:MOV BX,DATA[SI]
TEST BX,1
JNZ  NEXT
CMP AX,BX
JB  NEXT
MOV AX,BX
NEXT: ADD SI,2
LOOP AGAIN

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有