admin管理员组

文章数量:1530846

2024年2月15日发(作者:)

一、单项选择题(本大题共20小题,每小题1分,共20分)

1.设A=0.4H,B=0.8H,C=0.4,D=0.4Q,它们之间的关系是( )

A. C+D=B B. A+D=B

C. B=D D. A>C>D

2.标志寄存器中属于控制标志位的是( )

,OF,SF ,IF,TF

,CF,PF ,OF,SF

3.8088/8086存储器分段,每个段不超过( )

A.64K个字 B.32K个字节

C.1兆个字节 D.64K个字节

4.设AL中已有压缩型BCD码,为实现对AL的减1操作,可选用的指令序列是(

AL AL,0

AAS DAS

AL,1 AL,1

AAS DAS

5.要输入端口1234H中的8位数据,其指令应是( )

DX,1234H DX,1234H

OUT DX,AL 1N AL,DX

C.1N AX,1234H DX,1234H

6.若AX=-15要得到AX=15应执行的指令是( )

AX AX

AX AX

7.8086/8088系统执行传送指令MOV时( )

A.不影响标志位 B.影响DF方向标志

C.影响SF符号标志 D.影响CF进位标志

8.MOV AL,79

ADD AL,0B1H

上面指令执行后,设置的标志位CF和OF的值是( )

=0,OF=1 =1,OF=1

=0,OF=0 =1,OF=0

9.已知AX,BX中均为带符号数,当进行字相除时,下面指令或指令序列正确的是(

BX

IDIV BX

DX,DX

DIV BX IDIV BX

10.下列指令中操作数在代码段中的是( )

AL,42H AL,BL

[BX],DI D.1NC [DI]

11.用REPE SCASB指令对字符串进行扫描,如CX0时,扫描结束,那么表示(A.在字符串中遇上第一个AL中指定的字符

B.在字符串中有一个AL中指定的字符

) ) )

C.在字符串中有一个不是AL中指定的字符

D.在字符串中遇上第一个不是AL中指令的字符

12.下列指令执行后对源和目的操作数均无影响的是( )

[BX+2],AX

[SI],BX

AX,2467H

AX,BX

4567H

ˋCDˊ

13.表示过程定义结束的伪指令是( )

14.下列有语法错误的语句是( )

12H

ˋBCDˊ

15.DB1 DB 8 DUP(2 DUP(3),3 DUP(2))

MOV AX,WORD PTR DB1 [04H]

上面指令执行后,AX的内容是( )

A.0302H B.0203H

C.0202H D.0303H

16.BUF1 DB 3 DUP(0,2 DUP (1,2),3)

COUNT EQU $ -BUF1

符号COUNT等价的值是( )

A.6

C.16

B.18

D.8

17.DA1 DW 2A05H

DA2 DB 0FAH

MOV AL,BYTE PTR DA1

SUB DA2,AL

上述指令执行后,DA2中的内容是( )

A.0DAH

C.0F5H

B.0FAH

D.0D0H

18.设(SS)=338AH,(SP)=450H,执行PUSH BX,和PUSHF两条指令后,堆栈顶部的物理地址是( )

A.33CECH

C.33CF4H

A.0036H

C.0030H

B.33CF2H

D.33CE8H

B.0022H

D.0020H

B. CF=0 AND ZF=1

D. CF=1 AND ZF=1

19.设(SP)=0028H,执行段内返回指令RET 6后,SP的内容是( )

20.条件转移指令JNBE产生转移的条件是( )

A. CF=0 AND ZF=0

C. CF=1 AND ZF=0

21.与MOV BX,0FFSET VAR指令完全等效的指令是( )。

①MOV BX,VAR ②LDS BX,VAR ③LES BX,VAR ④LEA BX,VAR

22.在段定义时,如果定位类型用户未选择,就表示是隐含类型,其隐含类型是( ).

①WORD ②PAGE ③BYTE ④PARA

23.在汇编语言程序的开发过程中使用宏功能的顺序是( )。

①宏定义,宏调用 ②宏定义,宏展开

③宏定义,宏调用,宏展开 ④宏定义,宏展开,宏调用

24.汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省

略的项是( )。

①名字项 ②操作项 ③操作数项 ④注释项13. MOV SP,3210H

PUSH AX

执行上述指令序列后,SP寄存器的值是( )。

①3211H ②320EH ③320FH ④3212H

DW 10H DUP(3 DUP(2,10H),3,5)

上述语句汇编后,为变量BUF分配的存储单元字节数是( )。

①80H ②100H ③124 ④192

二、简答题(本大题共3小题,每小题2分,共6分)

1.假设DS=2000H,COUNT=0100H,SI=0030H,指令MOV AX,COUNT[ST]

①写出源操作数的物理地址?

②该指令可否写成MOV AX,[COUNT+SI]?

2.下面指令有无错误?若有错,是什么错误?

①MOV AX,[SI][DI]

②CMP [SI],[BX]

3.条件转移指令的判断条件除标志位PF外还有哪几个标志位?

三、程序分析题(每小题6分,共36分)

l.已知 AX=0FF60H,CF=1

MOV DX,96

XOR DH,0FFH

SBB AX,DX

执行上述指令序列后,AX= ,CF=

2.设寄存器AL,BL,CL中内容均为76H,

XOR AL,0FH

AND BL,0FH

OR CL,0FH

执行上述指令序列后,AL= BL= CL=

3.已知AX=0A33AH,DX=0F0F0H

AND AH,DL

XOR AL,DH

NEC AH

NOT AL

执行上述指令序列后,AH= ,AL=

4. 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]

XCHC AL,[DI]

MOV [SI],AL

ADD SI,2

ADD DI,2

LOOP LOP

上述程序段运行后,S9开始的10个字节存储单元内容是什么?

5. MOV AL,38H

MOV BL,49H

CALL SUB0

INC AL

DEC CL

.........

SUB0 PROC

ADD AL,BL

MOV CL,AL

DAA

RET

SUB0 ENDP

上述程序段运行后,AL= CL=

6.ADR DW 1234H,5678H

LEA SI,ADR

LDS BX,ADR

设变量ADR的偏移地址是100H,上述两条指令执行后:SI= ,BX= 。

7.已知DS和ES指向同一个段,且当前数据段从0000H到00FFH单元内容分别为01,02,03,„,0FF,00H。问下列程序段执行后,0000~0009H的内容是些什么值。

MOV SI,0000H

MOV DI,0001H

MOV CX,0080H

CLD

REP MOVSW

8.STR1 DB ˋCOMPUTERNDPASCALˊ

SCA DB ˋNˊ

LEA DI,STR1

MOV AL,SCA

MOV CX,10H

CLD

REPNE SCASB

NEXT:„„

程序运行到NEXT时CX= ZF=

9.已知AX=0FFFFH,DX=0001H

MOV CX,2

LOP:SHL AX,1

RCL DX,1

LOOP LOP

上述程序段执行后,DX= AX=

10.已知DX=0A476H,CX=0302H,CF=1

OR DX,DX

RCR DX,CL

XCHG CH,CL

RCL DX,CL

上述程序段执行后,DX= CF=

11.MOV AX,10

SHL AX,1

SHL AX,1

MOV BX,AX

MOV CL,2

SHL AX,CL

ADD AX,BX

上述程序段执行后,BX= AX=

12.已知AX=78H,BX=0804H

SHR BX,1

AND BX,0F0FH

MOV CX,4

LOP:XCHG BH,BL

DIV BL

SAL AX,1

LOOP LOP

上述程序段执行后,AX= BX=

四.改错. 阅读下列数据传送程序段,改正使用不当的语句

A DB 35,47,2AH,'XYZ'

B DB N DUP(0)

N EQU $-A

MOV SI, A

MOV DI, B

MOV CX, LENGTH A

LP: MOV AX, [SI]

MOV [DI], AX

INC SI

INC DI

DEC CX

LOOP LP

五.程序填空题(每空3分,共18分)

1.下面是程序段是判断寄存器AH和AL中第3位是否相同,如相同,AH置0,否则AH置全1.试把空白处填上适当指令.

AND AH , 08H

MOV AH , 0FFH

JMP NEXT

ZERO: MOV AH, 0

NEXT : ........

2.有一个首址为A的字数组,完成从大到小的排序.

DATAREA SEGMENT

A DW N DUP(?)

DATAREA ENDS

PROGRAM SEGMENT

MAIN PROC FAR

START :

PUSH DS

SUB AX, AX

PUSH AX

MOV DS ,AX

MOV CX , N

LOOP1: MOV DI ,CX

MOV BX ,0

LOOP2: MOV AX ,A[BX]

CMP

JGE CONTINE

XCHG AX ,

MOV A[BX] , AX

CONTINE: ADD BX

LOOP LOOP2

LOOP LOOP1

RET

MAIN ENDP

END START

3.该程序段的功能是求出存放在DX、AX中的双精度数的绝对值,并将结果保存在A和A+2单元中,请在空白处填写指令。

[1]

JNS RESULT

NOT AX

NOT DX

INC AX

[2]

RESULT:

MOV A , AX

MOV A+2 , DX

4. 下面程序执行后,AL的内容为ARRAY数组中的最小数,请在空白处各填上一条指令。

ARRAY DB 3,5,-3,-2,4,5,-8,6

MOV CX,7

MOV DI,0

MOV AL,ARRAY

A1: INC DI

JLE A2

MOV AL,ARRAY [DI]

A2 ②

5.下面程序段是判断两个存储单元是否同为正数,如是,则AX置全0,否则AX置非0。试在空白处各填上适当的一条条件转移指令(两空白处要利用不同的标志位选用不同的条件转移指令)。

VAR1 DW ××××

VAR2 DW ××××

MOV AX,VAR1

MOV BX,VAR2

XOR AX,BX

TEST BX,8000H

MOV AX,0

NEXT:„„

6.以BUFF为首地址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中.

BUF DB 5,6,7,58H,62,45H,127,.......

COUNT EQU $-BUF

MAX DB ?

.

.

MOV BX ,OFFSET BUF

MOV CX ,COUNT -1

MOV AL ,[BX]

NXET: INC CX

JAE NEXT

MOV AL, [BX]

NEXT: DEC CX

MOV MAX , AL

六、编制程序题(第1小题8分共16分)

l.现有 data segment

array dw 64 dup(?)

dw 5 dup(?)

data ends

试编写一程序段,要求在array+8到array+10(两者都包括在内)单元中插入5个0.(提示:先把从array+8单元开始的数据后移5个单元,然后再在规定位置插入0)

2.从键盘上输入来宾的姓名Mr.×××或Mrs.×××,当按动任意键时,屏幕上显示出:

"Welcome Mr.×××".

3.定义宏指令并展开宏调用:

宏指令JOE把一串信息“MESSAGE NO.K”存入数据区XK中.

宏调用I=0

JOE TEXT , I

JOE TEXT ,I

JOE TEXT ,I

4.在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一个完整的源程序,求它们对应项的绝对值之和,并将和数存入以SUM为首的数据区中。

DATA SECMENT

BUF1 DW -56,24,54, -1,89, -8,„„

BUF2 DW 45, -23,124, 345, -265,„„

SUM DW 10 DUP(0)

DATA ENDS

5. 改错. 阅读下列数据传送程序段,改正使用不当的语句

A DB 35,47,2AH,'XYZ'

B DB N DUP(0)

N EQU $-A

MOV SI, A

MOV DI, B

MOV CX, LENGTH A

LP: MOV AX, [SI]

MOV [DI], AX

INC SI

INC DI

DEC CX

LOOP LP

6.内存中由SOURCE指示的个字节有符号数组成的数组分成正数和负数两个数组,并求这两个数 组的数据个数,结果存放在RESULT指示的内存区域。存放形式为正数个数在前,其后跟正数组元素,然后是负数个数及负数数组元素.

7从键盘输入一系列字符,以字符’$’为结束符,然后对其中的非数字字符计数,并显示出计数结果

8.在STRING到STRING+99单元中存放着一个字符串,并编写一个程序,测试该字符串中是否存在数字.如有数字则把DL的第5位置1,否则将该位置0

9.统计串中的空格个数和逗号的个数.

11. . 用地址表转移表实现下列C语句,其中变量A和B是有符号的整型变量:

switch(a%8)

{ case 0 :b=32 ; break;

case 1:

case2: b=b+43; break;

case3: b=b*a; break;

case4: b-- ; break;

case5:

case6:

case7: printf("Function 5_6_7 "); break;

}

}

本文标签: 指令程序段执行