|
西交《汇编语言程序设计》考前模拟题
一、单项选择题
1.CPU要访问的某一存储单元的实际地址称( C )
A.段地址 B.偏移地址
C.物理地址 D.逻辑地址
2.某存储单元的物理地址是12345H,可以作为它的段地址有( D )
A.2345H B.12345H
C.12340H D.1234H
3. 将十六进制数(2AF)H用二进制表示为( B )
A、001010100111 B、001010101111
C、001010101011 D、001010101101
4.指令和程序是以( C )形式存放在程序存储器中
A、源程序 B、汇编程序 C、二进制编码 D、BCD码
5.与LEA BX,BUF指令完全等效的指令是( C )
A.MOV BX, BUF B.LDS BX,BUF
C.MOV BX,OFFSET BUF D.MOV BX,WOKD PTR BUF
6.下列指令执行后既能使AX=0同时又使CF=0,OF=0的是( A )
A.XOR AX,AX B.AND AX,AX
C.OR AX,AX D.TEST AX,0
7.无条件转移指令JMP实现段间间接转移,转移的目标地址在( B )
A.某个字存储单元中 B.某个双字存储单元中
C.某个16位通用寄存器中 D.两个16位通用寄存器中
8.设NUM1 EQU 100
NUM2= 64H
下面指令执行后,使BL中为全1的指令是( A )
A.MOV BL,NUM1 EQ NUM2 B.MOV BL,NUM1 LT NUM2
C.MOV BL,NUM1 NE NUM2 D.MOV BL,NUM1 GT NUM2
9.设非压缩BCD码(AL)=09H,(BL)=04H在执行SUB AL,BL指令后应选的校正指令是
( B )
A.DAA B.AAS
C.DAS D.AAA
10.设AX=9ABCH,DX=8765H
PUSH AX
PUSH DX
POP AX
POP DX
上述4条指令执行后,AX,DX中内容分别是( D )
A.AX=9ABCH DX=8765H B.AX=9ABCH DX=9ABCH
C.AX=8765H DX=8765H D.AX=8765H DX=9ABCH
11.设SP的初值为1000H,执行指令PUSH AX后SP的值是( C )
A.OFFFH B.1001H
C.0FFEH D.1002H
12.下列指令执行后既能使AX=0同时又使CF=0,OF=0的是( A )
A.XOR AX,AX B.AND AX,AX
C.OR AX,AX D.TEST AX,0
13.在指令的操作数字段中,允许出现表达式,若BUF1与BUF2均为变量名,下面指令中正确的是( D )
A.MOV DX,BUF1*BUF2 B.MOV DX,BUF1/BUF2
C.MOV DX,(BUF1*BUF2)-BUF1 D.MOV DX,BUF2-BUF1
14.汇编语言源程序,可以是( D )
A.可以直接由机器执行
B.必须由编译程序生成目标程序才能执行
C.必须由解释程序生成目标程序才能执行
D.必须由汇编程序汇编成目标程序才能执行
15.设CF=1,实现AL内容乘2的指令是( C )
A.RCL AL,1 B.SAR AL,1
C.SHL AL,1 D.ROR AL,1
16.算术右移指令SAR和逻辑右移指令SHR,两条指令执行结果完全相同的条件是( A )
A.目的操作数最高位为0 B.目的操作数最高位为1
C.目的操作数为任意情况 D.无论什么情况都不可能完全相同
17.没有语法错误的输入指令是( A )
A.IN AL,30H B.IN 30H,AL
C.IN DX,AL D.IN AL,[BX]
18.将高级语言的程序翻译成机器码程序的实用程序是( A )
A.编译程序 B.汇编程序
C.解释程序 D.目标程序
19.DEC BYTE PTR[BX]指令中的操作数的数据类型是( C )
A.字 B.双字 C.字节 D.四字
20.在下列语句中,BUFFER称为( B )
BUFFER DB 01H,0AH
A.符号 B.变量 C.助记符 D.标号
21.串操作指令中,源串操作数的段地址一定在( C )寄存器中。
A. CS B. SS C. DS D. ES
22.使计算机执行某种操作的命令是( B )
A.伪指令 B.指令 C.标号 D.助记符
23.将数据5618H存放在存储单元中的伪指令是( B )
A. DATA1 DW 1856H
B. DATA1 DB 18H,56H
C. DATA1 EQU 5618H
D. DATA1 DB 18H,00H,56H,00H
24.若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=( A )
A. 1400H B. 77F8H C. 0000H D. 0FFFFH
25.计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。目前,微机中普遍采用的是( C )码。
A. BCD码 B.二进制码 C.ASCII码 D.十六进制码
26.用指令的助记符、符号地址、标号和伪指令、宏指令以及规定的格式书写程序的语言称为( A )
A.汇编语言 B.高级语言 C.机器语言 D.低级语言
27.循环控制指令LoopNZ/LoopNE控制循环继续执行的条件是( B )
A.CX≠0且ZF=1 B.CX≠0且ZF=0
C.CX≠0或ZF=1 D.CX≠0或ZF=0
28.在执行DAA指令,当高四位BCD码校正时产生进位,如要把此进位值送入AH中,对这进位值的操作应是( C )
A.DAA校正指令的功能已自动加在AH中
B.进位值在AF中,校正后根据AF内容再加在AH中
C.进位值在CF中,校正后根据CF内容再加在AH中
D.进位值在AL最高位上,校正后根据AL最高位内容再加在AH中
29.AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是( C )
A.指令XOR AX,AX执行后,AX内容不变,但设置了标志位
B.指令OR DX,1000H执行后,将DX最高位置1,其余各位置0
C.指令AND AX,OFH执行后,分离出AL低四位
D.NOT AX,执行后,将AX清0
30.在执行下列指令时,需要使用段寄存器DS的指令是( D )
A.STOSW B.ADD AL,CL
C.NEG BX D.INC DA[BX]
31.无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指令是
( B )
A.ADD BH,01H B.OR BH,01H
C.XOR BH,01H D.TEST BH,01H
32.完成对CL寄存器的内容乘以4的正确操作是( C )
A.ROL CL,1 B.MUL 4
ROL CL,1
C.SHL CL,1 D.MOV CL,2
SHL CL,1 SHL CL,CL
33.下面各传送指令中,正确的是( C )
A.MOV [DI],[SI] B.MOV[DX+DI],AL
C.MOV WORD PTR [BX],0100H D.MOV AL,BX
34.汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法( B )
A.名字的第一个字符可以是大写英文字母及小写英文字母
B.名字的第一个字符可以是字母、数字及?、@、_
C.名字的有效长度≤31个字符
D.在名字中不允许出现$
35.要实现使BETA的值为56,应采用语句为( C )
A.BETA DB 56 B.BETA DB 56H
C.BETA EQU 56 D.BETA EQU 56H
36.REPZ CMPSW指令,重复执行的终止条件是( A )
A.CX=0或ZF=0 B.CX=0且ZF=0
C.CX=0或ZF=1 D.CX=0且ZF=1
37.下面程序段执行后,AL中的内容是( B )
MOV AX,8833H
ADD AL,AH
DAA
A.21 B.21H
C.0C1H D.0DDH
38.比较两个带符号的数A、B,当A=B时程序转移,测试的条件为( A )
A.ZF=1 B.ZF=0
C.SF=1 D.SF=0
39.检查二个无符号数的关系,若要实现AL≥BL时分支去LOP1处,那么在“CMP AL,BL”指令后应跟的分支指令是( C )
A.JNC LOP1 B.JA LOP1
C.JC LOP1 D.JGE LOP1
40.在下列串操作指令中,同时使用源串和目的串地址指针的指令是( D )
A.STOSW B.LODSW
C.SCASW D.CMPSW
41.DA1 DW‘AB’,‘CD’,‘EF’,‘GH’
MOV AX,DA1+3
指令执行后AX中的内容是( D )
A.‘EF’ B.‘CD’
C.‘BC’ D.‘FC’
42.使用DOS系统功能调用时,使用的软中断指令是( B )
A.INT 21 B.INT 10H
C.INT 16H D.INT 21H
43.串操作指令中,目的操作数的段地址一定在( D )寄存器中
A. CS B. SS C. DS D. ES
44.在下列语句中,AGAIN称为( C )
AGAIN: INC SI
A.符号 B.助记符 C.标号 D.变量
45.DOS系统功能调用中,显示单个字符的系统调用号是( B )H。
A. 01H B. 02H C. 08H D. 09H
二、填空题
1.假设BL=0C5H,CL=2,CF=1,确定下列各条指令独立执行后,BL和CF中的值,并填入括号中。
A. SHR BL,1;BL=( 62H ) CF=( 1 )
B. SAR BL,CL;BL=( 0F1H ) CF=( 0 )
C. ROR BL,1;BL=( 0E2H ) CF=( 1 )
D. RCL BL,CL;BL=( 17H ) CF=( 1 )
2.计算机处理问题中会碰到大量的字符、符号,对此必须采用统一的二进制编码。目前,微机中普遍采用的是______码,称为美国______码。(ASCII, 标准信息交换)
3.8086/8088CPU中,有二个变址寄存器,分别是______和______,二个指针寄存器,分别是______和______。(SI,DI,SP,BP)
4.十六进制数0FFF8H表示的十进制正数为________,表示的十进制负数为________。(+65528;-32760)
5.若DS=0F3EH,SI=2000H,COUNT=0A8H,指令MOV AX,(SI+COUNT)中,源操作数的有效地址EA为________,其物理地址为________。(20A8H;11488H)
6.当标志位________=1时表示无符号数运算产生溢出,而当标志位________=1是表示带符号数运算产生溢出。(CF;OF)
7.如JMP指令采用段间间接寻址,那么由4个相邻字节单元中存放有转移地址,其中前两个字节存放的是________,而后两个字节存放的是________。(IP;CS)
8.在串操作程序中,通常在重复前缀指令REPZ或REPNZ后,选用的串操作指令是________或________才有实际意义。(STOS;CMP)
9.8086/8088存储器分四个段,这四个段的段名所对应的段寄存器分别是________、________、________、________。(.CS DS ES SS)
10.现有AX=2000H, BX=1200H, DS=3000H, DI=0002H, (31200H)=50H, (31201H)=02H, (31202H)=40H,请写出下列各条指令独立执行完后有关寄存器及存储单元的内容,并指出标志位ZF、CF的值。
A.ADD AX,1200H;问AX=________H ZF=________
B.SUB AX,BX;问AX=________H ZF=________
C.MOV AX,[BX];问AX=________H CF=________
D.NEG WORD PTR[1200H];问(31200H)=________H CF=________
(A.3200H 0
B.0E00H 0
C.0250H 不影响
D.0B0H 1)
11.设DS=2200H,BX=1000H,SI=0100H,偏移量D=0A2B1H,
试计算出下列各种寻址方式下的有效地址,填入括号中。
A.使用D的直接寻址( )
B.使用BX的寄存器间接寻址( )
C.使用BX和D的寄存器相对寻址( )
D.使用BX、SI和D的相对基址变址寻址( )
E.使用BX、SI的基址变址寻址( )
(A.0A2B1H
B.1000H
C.0B2B1H
D.0B3B1H
E.1100H)
12.8086/8088存贮器地址分段时,每个段起始地址的特征是___________。(在16进制表示的地址中,最低位为0;或者二进制表示的地址中,最低4位为0)
13.执行带符号数字节相乘指令IMUL BL后,CF=1,OF=1意味着___________。(乘积的高八位不是低八位的符号位扩展)
14.ARRAY DB 0,2 DUP(1,2),0,3汇编时生成的数据依次是___________。(0,1,2,1,2,0,3)
15.CPU的标志寄存器中标志位,可以分为两大类,其中一类称为________标志位,另一类称为________标志位。(状态;控制)
三、简答题
1.在汇编源程序时,下面数据段共分配多少个字节存储单元?变量BUF的偏移地址是多少?
DATA SEGMENT
ORG $+20H
DA1 DB 10H DUP(2,3)
DA2 DW 10H DUP(2,3)
ORG $+20H
BUF DD DA1,DA2
DATA ENDS (共分配0A8H字节存储单元,BUF的偏移地址是0A0H)
2.设BX=0FFFFH,下面指令序列中,每条指令执行后,分别为0,1表示SF、ZF、CF的值,若对标志位无影响,用斜杠/表示
SF ZF CF
STC
XOR BX, BX ______________________
ADD BX,8001H ______________________
SAR BX,1 ______________________
(/ / 1
0 1 0
1 0 0
1 0 1)
3.如果执行NEG AL指令后AL中的内容仍保持不变,那么AL中的值是多少?执行后OF的值又是多少?
(AL = -128 或 80H;
OF = 1)
4.已知:BX=1357H,DI=2000H,DS=2000H,CS=4000H,分别指出下面各指令中存储器操作数的物理地址。
(1)MOV AL,[BX]
(2)MOV CS:[BX+DI],AH
(21357H;43357H)
5.0P1 DB 1,2
0P2 DW 3412H,5678H
MOV AX,OP1+1;字单元(OP1+1) AX
MOV BL,OP2+1;字节单元(OP2+1) BL
上述二条传送语句有语法错误,请根据注释字段的说明,将其改正。
(MOV AX,WORD PTR(OP1+1)
MOV BL,BYTE PTR(OP2+1))
6.下列语句在存储器中分别为变量分配多少字节?
(1)AD2 DW 10 DUP(?),
(2)AD3 DD 100 DUP(?)
(22,400)
7.简述下面两条指令分别是什么语法错误?
MOV [BX],[SI]
MOV AX,DL
(MOV指令不能在两个存储器操作数之间进行;
操作数类型不匹配)
8.请指出下列指令错误原因:
A. OR AX,[CX]
B. ADD [SI],[BX][DI]
C. JMP BYTE PTR LOOPS
D. SAR AX,4
E. RCL DX
(A.CX不能作为间接寻址寄存器
B.加法指令不能完成存储单元之间的加法运算
C.转移指令中,转向标号地址的属性说明错
D.移位指令格式错,当移位次数大于1时,需用CL给出
E.指令中应指出移位次数)
9. A.下面两个语句有何区别?
X1 EQU 1000H
X2=1000H
B.下面的程序段有错吗?若有,请指出错误。
CRAY PROC
PUSH AX
ADD AX,BX
RET
ENDP CRAY
(A.第一个语句中,X1不能多次赋值,而X2可以多次赋值
B.程序最后一行有错,应写成:
CRAY ENDP)
10.假设程序中的数据定义如下:
ARRAY1 DW ?
ARRAY2 DB 16 DUP(?)
ARRAY3 DD ?
PLENTH EQU $-ARRAY1
问PLENTH的值为多少?它表示什么意义?
(22它表示ARRAY1到ARRAY3所占存储单元的字节数)
11.试根据以下要求,分别写出相应的汇编语言指令。
A.把AX寄存器和BX寄存器的内容相加,结果存入AX中。
B.用BX和SI的基址变址寻址方式,把存储器中的一个字节与DL的内容相加,并把结果送回DL中。
C.把数OBEH与AH内容相加,结果送回AH中。
D.用SI和位移量0200H的寄存器相对寻址方式把存储器中的一个字与AX相加,并把结果送回存储单元中。
E.用位移量0860H的直接寻址方式把存储器中一个字与数2EA0H相加,结果回送存储器中。
(A. ADD AX,BX
B. ADD DL,[BX][SI]
C. ADD AH,OBEH
D. ADD [SI+0200H],AX
E. ADD [0860H],2EA0H )
12.程序在数据段中定义的数组如下:
ARRAY DB ‘YES IS’
DB 20
┇
DB ‘DO NOT’
请指出下列指令是否正确?若不正确,错在哪里?
A.MOV BX,OFFSET ARRAY
MOV AX,[BX+8]
B.MOV AX,ARRAY
C.MOV BX,2
MOV SI,3
MOV AX,ARRAY[BX][SI]
D.MOV BX,2*2
MOV SI,3
MOV AX,OFFSET ARRAY[BX][SI]
INC [AX]
(A.正确
B.数据类型不匹配错
C.前两条指令正确,第三条数据类型不匹配
D.前两条正确,后两条不正确,在汇编过程中,OFFSET操作将得到变量的偏移值,但对相对基址变址寻址方式形成的值在汇编指令时还是未知的,所以第三条指令不正确。第四条指令中,AX不能作为基址寄存器用。
)
13.如TABLE为数据段中0100单元的符号名,其中存放的内容为0FF00H,试问以下两条指令有什么区别?指令执行后,AX寄存器的内容是什么?(3分)
MOV AX,TABLE
MOV AX,OFFSET TABLE
(第一条指令传送的是0100H单元中的内容 AX=0FF00H
第二条指令传送的是地址0100H AX=0100H)
14.分别指出下列指令中源操作数的寻址方式:(5分)
A.MOV SI,100
B.MOV CX,DATA[SI]
C.MOV [SI],AX
D.ADD AX,[BX][DI]
E.POPHF
(.A.立即寻址
B.寄存器相对寻址
C.寄存器寻址
D.基址加变址寻址
E.寄存器寻址
)
四、程序设计题
1. 试编写出把DX、AX中的双字右移四位的程序段。
MOV CL,04
SHR AX,CL
MOV BL,DL
SHR DX,CL
SHL BL,CL
OR BL,AH
2.定义一个数据区,它包含有23H,24H,25H和26H四个字符数据,把这个数据区复制20次,并显示出复制结果。
2.DATA SEGMENT
PATTERN DB 23H,24H,25H,26H
DISPLAY DB 80 DUP(‘ ’),‘$’
DATE ENDS
CODE SEGMENT
CLD
LEA SI,PATTERN
LEA DI,DISPLAY
MOV CX,80
REP MOVSB
MOV AH,09H
LEA DX,DISPLAY
INT 21H
RET
CODE ENDS
3.试编写使AL寄存器中的无符号数乘20的程序段。
MOV AH,00
MOV BX,AX
MOV CL,02
SHL AX,CL
MOV DX,AX
MOV AX,BX
MOV CL,03
SHL AX,CL
ADD AX,AX
ADD AX,DX
4.编写程序将ELEMS中的100个字节数据的位置颠倒过来(即第一个字节和第100个字节的内容交换,第二个字节和第99个字节的内容交换……)。
MOV CX,50
LEA SI,ELEMS
LEA DI,ELEMS+99
REVERSE:MOV AL,[SI]
XCHG AL,[DI]
MOV [SI],AL
INC SI
INC DI
LOOP REVERSE
5.试编制一程序段,用串操作指令实现以DA_BY为首址的20H个字节单元中存放相同字符‘Y’(设DA_BY存储区已有ES指向)。
LEA DI,DA_BY
MOV CX,32
MOV AL,‘Y’
CLD
REP STOSB
6. 用字符串指令编制一程序段,把以DAT1为首址的数据区中的100个字节数据依次传送到以DAT2为首址的数据区中。要求:在程序中按地址递减方式进行数据传送。
STD
MOV CX, 100
LEA SI,DAT1
LEA DI,DAT2
ADD SI,CX
ADD DI,CX
DEC SI
DEC DI
REP MOVSB |
|