刘臣奇主编-汇编语言程序设计-课外练习题参考答案 下载本文

MOV MOV ADC DAA MOV

CL,AL AL,BH AL,CH CH,AL

第六章课外练习题

一、单项选择题:

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指出的内存单元之内容

(D)JGE

3.当A≥B时转移的条件转移指令为(A,B为带符号数)( D )。 (A)JA (B)JAE (C)JG

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

(C)

JC

CMP JA

(B)

SUB JNC CMP JG

AX, BX LABEL AX, BX LABEL

LABEL AX, BX (D) LABEL

6.已知AX=8078H, BX=5610H,指令CMP

(A)0,0 (B)0,1 BL,AH执行后OF,CF的值为( D )

(C)1,0 (D)1,1

(D)JP与JS

7.在汇编下列条件转移指令中,两条指令功能不一样的是( D )。

(A)JZ 与JE (B)JC与JB (C)JA与JNBE 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 1.两个数相等时进行转移可用JZ指令 2.当PF=1时发生转移的条件转移指令为JPO

(D)AX

( √ ) ( × ) ( √ ) ( √ ) ( × ) ( × )

二、判断题(判断每题正误,对的在题后括号内划 “√”,错的划“×”):

3.当X

5.JS [BX] 6.JMP AL 三、填空题

1.当两个数不相等时,发生转移的条件转移指令有JNE和( JNZ )。

2.当PF=0时,发生转移的条件转移指令为JNP和( JPO )。

3.当A≥B(A,B为无符号数)时,发生转移的条件转移指令有( JAE )( JNB )。

4.设有下列程序段:

ADD

JNO JNC SUB JNC

L1

AX, BX

AX BX 程序转向 14C6H 80DCH L1 B568H 54B5H L1 42C8H 608DH L2 D023H 9FD0H L5 9FD0H D023H L5 L2

AX, BX L3

JNO L4

习题4示意图 JMP SHORT L5

如果AX和BX的内容如习题4图形,则该程序分别执行后,程序转向哪里? 四、程序分析题

1.阅读如下程序,回答所提出的问题,假定X1,X2,...Xn为无符号数。 .MODEL .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 CMP

BX,2 AX,[BX]

SMALL

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 LEA MOV

AGAIN:

BX, DI, CX,

BUF2 SUM 100

MOV CMP JGE NEG

K1:

MOV CMP JGE NEG

K2:

ADD MOV ADD ADD ADD LOOP

AX, AX, K1 AX DX, BX, K2 BX AX, [DI], SI, DI, BX, AGAIN

[SI] 0

[BX] 0

DX AX 2 2 2

3.下列程序完成的是什么功能?(DATX1数组中后100个数送DATX2数组中) DATX1 DB 300 DUP(?) DATX2 DB 100 DUP(?)

┆ MOV

MOV MOV MOV

NEXT:

MOV MOV INC

AL,DATX1 [BX][SI] DATX2 [DI],AL SI SI,0 DI,0 BX,200 CX,100

INC DI LOOP NEXT

4.假设X和X+2单元的内容为双字数据P,Y和Y+2单元的内容为双字数据Q(X单元与Y单元为低位字),说明下列程序段完成什么工作?()

MOV DX, X+2

如果2倍P的高16位>Q的高16位,则AX=1 MOV AX, X

如果2倍P的高16位

ADC CMP

JL JG CMP

L1:

JBE MOV HLT

DX, X+2 DX, Y+2 L2 L1

AX, Y L2

AX, 1

如果2倍P的高16位=Q的高16位,则判断 如果2倍P的低16位≤Q的低16位,则AX=2; 否则AX=1