全国2002年10月高等教育自学考试汇编语言程序设计试题

作者名:不详 来源:网友提供 06年6月8日

 

一、单项选择题 (本大题共20小题,每小题1分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。

1.设A=186,B=273Q,C=OBBH,它们之间的关系是( )

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

2.8086/8088的存储器组织是将存储器划分为段,可作为段的起始地址是。( )

A.185A2H B.00020H C.01004H D.0AB568H

3.堆栈中当前出栈的存储单元地址是( )

A.SS*10H+SP B.SS*10H+BP C.SS*10+SP D.SS*10+BP

4.设DL=55H,执行指令后能使DL中的数据为OAAH的指令是( )

A.TEST DL, OAAH B.OR DL, OAAH

C.NEG DL D.XOR DL, OFFH

5.当SS=9876H, SP=4328H,执行POPF指令后,堆栈顶部的物理地址是( )

A.9CA8AH B.9CA90H C.9CA86H D.0DB00H

6.DW 10H DUP (2 DUP(3),300H)

上述定义的数据单元中,能构成0303H字存储单元的个数是( )

A.10H B.20H C.1EH D.OFH

7.用一条指令实现将寄存器BX和SI的内容相加,结果并送入AX中,这条指令是( )

A.ADD AX,[BX][ST] B.MOV AX,[BX][ST]

C.AND AX, [BX][SI] D.LEA AX,[BX][SI]

8.设AX中有一带符号数8520H,执行SAR AX,1指令后,AX中的值是( )

A.4290H B.0A40H C.0C290H D.0C260H

9.下列中指令执行后,能影响标志位的指令是( )

A.PUSHF B.POPF C.JNLE OPR D.LOOPZ  LOP

10.循环控制指令LOOPNZ/LOOPNE继续执行循环的条件是( )

A.CX≠0且ZF=1 B.CX≠0且ZF=0

C.CX≠0或ZF=1 D.CX≠0或ZF=0

11.下面两个传送指令语句中源操作数寻址方式是( )

VAR1  DW 32H

VAR2  EQU 32H

MOV AX,VAR1

MOV BX,VAR2

A.都是立即数寻址

B.前一条指令是立即数寻址,后一条指令是直接寻址

C.前一条指令是直接寻址,后一条指令是立即数寻址

D. 都是直接寻址

12. ARRAY DW 6, 9, $+4, 10H, 1,$+4

MOV AX, ARRAY+4

设变量ARRAY的偏移量是0084H,上述指令执行后AX中的内容是( )

A.0009 B.008CH C.0090H D.0010H

13.设AX=0CCBBH, CF=1

AND AX, 7FFEH

RCR AX, 1

上述两条指令执行后,AX和CF中的内容分别是( )

A.AX=265DH,CF=0 B.AX=265DH,CF=1

C.AX=A65DH, CF=0 D.AX=A65DH, CF=1

14.DA_B EQU BYTE PTR DA_W

DA_W DW ‘AB' ‘CD',‘EF'',‘GH'

MOV BX,DA_W+3

MOV BH,DA_B+3

执行上述两条指令后,BX中的内容是( )

A.‘EF' B.‘FC' C.‘CC' D.‘FF'

15.指令语句中标号的错误定义是( )

A.在供码段中的名字项定义,后面紧跟冒号 B.用EQU伪指令定义

C.用LABEL伪指令定义 D.由“JMP标号”指令定义

16.设VAR1和VAR2是已定义的变量名,非法的表达式是( )

A.VAR1—VAR2 B.VAR2—VAR1[BX]

C.VAR1+VAR2 D.VAR1[BX]

17.为在一连续的存储单元中依次存放数据41H,42H,…48H,下面的数据定义语句中有语法错误的是( )

A.DB 41H,42H,43H,44H,45H,46H,47H,48H

B.DW 4142H,4344H,4546H,4748H

C.DB ‘ABCDEFGH'

D.DW ‘BA',‘DC',‘FE',‘HG'

18.设NUM=11011011B,指令“MOV AX,NUM SHL 3”执行后AX中的值是( )

A.11011011000B B.11011000B C.00011011B D.00011011011B

19. XOR AX,AX

MOV CX,5

NEXT:ADD AL,6

AAA

LOOP NEXT

上述程序段执行的结果是( )

A.AX=0030H B.AX=0300H C.AX=30 D.AX=001EH

20.如某循环程序是对两个数组进行某种运算处理,当数组处理完毕或运算处理的结果不为某一指定值时(每次循环时,对运算结果已进行了测试),就结束循环。如要求一定使用循环控制指令,这时应选用的指令是( )

A.LOOP B.LOOPE/LOOPZ C.LOOPNE/LOOPNZ D.JCXZ

二、填空题 (本大共5小题,每空1分,共5分)

1.假设某个字的值是1234H,其低位字节地址是20H,高位字节地址是21H,那么该字的字地址是________。

2.“SHL OPR,CNT”指令中OPR不允许使用立即数和______操作数。

3.“VAR DB 5 DUP(8,2 DUP(5))”语句汇编应分配______个字节单元。

4.指令“MOV AX,20H[SI]”中源操作数的物理地址表达式是______。

5.乘法指令语句“MUL CL”,16位的乘积存放在______中。

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

1.设DS=3A00H,ES=4A00H,在段地址:偏移地址=4A00H:9000H 字单元中有数据3C50H。请用一条指令将数据3C50H装入AX寄存器。(不得使用立即数)

2.设BX=0FFFFH,DI=20H,DS=2000H,CL=8,(20020H)=4567H,下列各条指令分别执行后BX中的内容各为多少?

① ROL BX,CL     ;BX=______

② MOV BX,[DI] ;BX=______

3.DAT1 DB 1,2,3,4

DAT2 DW 3412H,5678H

MOV AX,DAT1+1 ;将DAT1+1字单元内容送入AX中

MOV BL,DAT2+1 ;将DAT2+1字节单元内容送入BL中

已知上述两条MOV语句有语法错误,请根据注释字段的要求将其改正(分别用一条语句改正)。

四、程序分析题 (本大题共7小题,每小题5分,共35分)

1.DA1 DW 1F28H

DA2 DB ?

XOR BL,BL

MOV AX, DA1

LOP:AND AX,AX

JZ KK

SHL AX,1

JNC LOP

ADD BL,1

JMP LOP

KK: MOV DA2,BL

试问:①程序段执行后, DA2字节单元内容是什么?

②在程序段功能不变情况下,是否可用SHR指令代替SHL指令?

2.DA1 DB 87H

DA2 DB

MOV AH,0

MOV AL,DA1

MOV CL,4

SHR AL,CL

MOV DL,10

MUL DL

MOV BL,DA1

AND BL,OFH

ADD AL,BL

MOV DA2,AL

试回答:①程序段执行后, (DA2)=______;

②在程序段功能不变的情况下,是否可以用指令SAR替代指令SHR?

3.MOV AL,BL

NOT AL

XOR AL,BL

OR BL,AL

程序段执行后,AL=______,BL=______。

4.STC

MOV CX,0403H

MOV AX,0A433H

SAR AX,CL

XCHG CH,CL

SHL AX,CL

程序段执行后,AX=______,CF=______。

5.BYTE1 DB XX ;任意数

BYATE2 EQU OFEH

MOV DL,BYTE1

OR DL,BYTE2

程序段执行后,DL=______或______。

6. DA_B DB 0CH,9,8,OFH,0EH,0AH,2,3,7,4

XOR AX,AX

XOR CL,CL

XOR BX,BX

LOP: TEST DA_B[BX],01H

JE NEXT

ADD AL,DA_B[BX]

INC AH

NEXT:INC BX

INC CL

CMP CL,10

JNE LOP

上述程序段运行结束后,AH=______,AL=______。如果把”JE NEXT“指令改为“NE NEXT“指令,那么AH=______,AL=______。

7. VAR_B DB 10 DUP(3,5,7,9)

LEA BX,VAR_B

MOV CX,10

XOR AX,AX

LOP: ADD AL,[BX]

CMP AL,10

JB NEXT

INC AH

SUB AL,10

NEXT:INC BX

LOOP LOP

上述程序段运行结束后,AH=______,AL=______。

五、程序填空题 (本大题共2小题,每小题6分,共12分)

1.某程序段欲用单个字符显示的2号DOS功能调用去显示一字符串“STRING”。试在下面空白处填上适当的指令 (每一空白处仅填一条指令)。

STR1 DB ‘STRING',‘$'

MOV BX,OFFSET STR1

LOP:MOV DL,[BX]

MOV AH,02H

INT 21H

①______

②______

JNE LOP

2.程序段的功能是依次产生0~9的10个ASCII码,并存入BUF1数据区,请在空白处填上指令(每一空白处仅填一条指令)。

BUF1 DB 10 DUP(?)

LEA BX, BUF1

MOV CX,10

XOR AL, AL

LOP: MOV AH,AL

ADD AL,30H

①______

INC BX

②______

INC AL

LOOP LOP

六、编制程序题 (本大题共3小题,共22分)

1.(5分)把2个非压缩BCD码组合为一个压缩BCD码,并存入DA3中。

DA1 DB ×× ;高位非压缩BCD码

DA2 DB ×× ;低位非压缩BCD码

DA3 DB ?

2.(5分)已知DAT1字节单元有一个数据,试编制一程序段将该数据的低4位变为1010B,最高位(第7位)置1,其余3位不变,结果送DAT2字节单元。

3.(12分)在N1和N2两数据区中,分别有10H个带符号数。试编制一源程序,找出对应项中较小的数据,并将这些较小的数据存入N3数据区中(要求:对应项比较时必须用CMPS指令)。

DATA SEGMENT

N1 DB ××,××,××……

N2 DB ××,××,××……

N3 DB 10H DUP(0)

DATA ENDS