微机原理练习题 下载本文

微机原理练习题

前三章练习题

一、填空题

1、一个16位二进制数用补码方式表示的有符号数的范围是 -32768~+32767 。 2、在8086系统中,若CS为A000H,则代码段可寻址的物理空间范围为A0000H ~ ( AFFFFH )。 3、指令MOV SI,[2100H]的源操作数寻址方式是( 直接寻址 ),目的操作数寻址方式是( 寄存器寻址 )。

4、8086/8088 CPU复位后,指令从FFFF:0000H(逻辑地址)处开始执行。

5、若AL=B2H,BL=03H,则执行MUL BL指令后,相乘的结果在寄存器( AX )中,结果为( 0216H );执行IMUL BL指令后,结果为( FF16H )。

6、在8086CPU中,由于BIU和EU分开,所以___取指令__ 和___执行指令_____ 可以重叠操作,提高了CPU的利用率

7、8086CPU的MN/MX引脚的作用是 控制CPU工作于最小/最大工作方式

8、8086CPU中典型总线周期由_4___个时钟周期组成,其中T1期间,CPU输出__地址____信息;如有必要时,可以在__T3与T4___两个时钟周期之间插入1个或多个TW等待周期。

9、REPE/REPZ是相等/为零时重复操作,其退出条件是:CX= 0 或ZF= 1 。

10、用OUT指令输出数据到端口时,若端口号>255,须先将端口地址放在寄存器 DX 中。 11、若BL=27H,CL=5,则执行指令ROR BL,CL后,BL的值为( 39H ),CF=( 0 )。 二、选择题

1、下列指令中,不影响进位的指令是:( C )

A. ADD AX,BX B. MUL BL C. INC BX AL,BH 2、当对两个组合(压缩)BCD数(字节)相加后,应使用指令( B )调整。

A. AAA B. DAA C. AAS D. DAS

3、 若CX=3,AX=1,执行完SHL AX,CL指令后,AX=( D )。 A. 1 B. 2 D. 8

左移1次,相当于乘2。左移2次,相当于乘4。左移3次,相当于乘8.以此类推。同理,逻辑右移相当于无符号

数除2操作。算术右移SAL指令相当于有符号数除2操作。

4、若CF=1,DL=A3H,CL=3,则执行指令RCR DL,CL后,寄存器DL的值为( C )。 A. 14H B. A0H D. D4H

5、 8086中( D )的源操作数和目的操作数可同时为存储器操作数。 A、数据传送指令 B、算术、逻辑运算指令 C、控制转移指令 D、串操作指令

6、下列指令中隐含使用寄存器SI的是:( B ) A. HLT B. CMPSB C. XLAT D. NOT 7、下列指令中,有语法错误的指令是( D )

A. MOV AX,[BX][SI] B. LEA DI,[2000H] C. OUT DX,AL D. SHL

BX,2

8、 将AL中带符号数乘10送AL,正确的程序段是( A )。 A. SAL AL,1 B. ADD AL,AL MOV BL,AL MOV BL,AL SAL AL,1 ADD AL,AL SAL AL,1 ADD AL,AL ADD AL,BL ADD AL,AL

C. MOV CL,4 D. ADD AL,AL MOV BL,AL ADD AL,AL SAL AL,CL ADD AL,AL ADD AL,BL ADD AL,AL ADD AL,AL

9、假定SS=2000H,SP=0100H,AX=2107H,执行指令PUSH AX后,存放数据21H的物理地址是( D )。

A、20102H B、20101H C、200FEH D、200FFH

10、在串传送指令MOVSB中,源串操作数和目的串操作数使用的数据段和偏移地址指针寄存器为 A 。 A. DS和SI; ES和DI B. DS和DI; ES和SI C. ES和SI; DS和DI D. DS和SI; DS和DI; 11、 寻址方式( A )的段超越前缀不可省略。

A. DS:[BP] B. DS:[SI] C. DS:[DI] D. SS:

[BP]

段超越:不在默认段内寻址,而在其它段内寻址,就称为段超越。

通常取指令时,默认在代码段内寻址,即物理地址由CS:IP给出。取数据时,在数据段内寻址,物理地址由DS:

EA给出。但若指令中用了寄存器BP作为地址寄存器时,默认在堆栈段内寻址,物理地址由SS:EA给出。 串操作时,源串默认在数据段内,目的串默认在附加段内。 堆栈操作时,默认在堆栈段内寻址,由SS:SP给出物理地址。

若编程时不想按默认规定进行,可用段超越,如BP用作地址寄存器时,若数据放在数据段内,编程时就必须用

段超越前缀指明,即DS:[BP],CPU就知道此时数据在数据段内,而不是默认的堆栈段内。 12、若要检查BX寄存器中的D12位是否为1,应该用指令( B )。 A. OR BX,1000H B. TEST BX,1000H

JNZ NO JNZ YES C. XOR BX,1000H D. AND BX,1000H

JZ YES JNZ YES 13、 用BP作基址变址寻址时,默认操作数所在的段是( C )。

A. 数据段 B. 代码段 C. 堆栈段 D. 附加段 14、执行下列指令后: MOV AX,1234H MOV CL,4 ROL AX,CL DEC AX MOV CX,4 MUL CX HLT

AX=( A )

A. 8D00H B. 9260H C. 8CAOH D. 0123H 15、下列程序:

NEXT: MOV AL,[SI]

MOV ES:[DI],AL INC SI INC DI LOOP NEXT 可用指令( D )来完成该功能。

A. REP LODSB B. REP STOSB C. REPE SCASB D. REP MOVSB

16、设AL=-68,BL=86,执行SUB AL,BL指令后,下列标志位中正确的是( C )。 A. CF=1 B. SF=1 C. OF=1 D. ZF=1 17、下列4条指令中,指令( A )需要使用DX寄存器。

A. MUL BX; B. DIV BL; C. IN AX,20H; D. OUT 20H,AL; 18、下列指令中,不影响CF标志位的指令是( D )。

A.SUB AX,BX B.ROR AL,1 C.AND AL,BL D.INC DL 19、下列指令经汇编后,机器指令代码最长的是( A )。

A.MOV AX,0 B.SUB AX,AX C.XOR AX,AX D.MUL BX

20、假设AX和BX寄存器中存放的是有符号整数,为了判断AX寄存器中的数据是否大于BX寄存器中的数据,应

采用指令序列( 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 21、循环指令LOOPNZ终止循环的条件是( B )。

A、CX=0,且ZF=0 B、CX=0,或ZF=1 C、CX=0,且ZF=0 D、CX=0,或ZF=1 22、对寄存器AX的内容乘以4的正确指令序列是( B )。 A、SHR AX,1 SHR AX,1 B、SHL AX,1 SHL AX,1

C、ROL AX,1 ROL AX,1 D、RCR AX,1 RCR AX,1

23、设DH=10H,执行NEG DH指令后,正确的结果是( D )。

A、DH=10H CF=1 B、DH=F0H CF=0 C、DH=10H CF=0 D、DH=F0H CF=1 24、下列传送指令中有语法错误的是( A )。

A、MOV CS,AX B、MOV DS,AX C、MOV SS,AX D、MOV ES,AX 25、下面指令执行后,改变AL寄存器值的指令是( D )。 A、TEST AL,02H B、OR AL,AL C、CMP AL,BL D、AND AL,BL 26、执行下面指令序列后,结果是( A )。 MOV AL,82H CBW

A、AX=FF82H B、AX=8082H C、AX=0082H D、AX=0F82H 27、 MOV SP,3210H PUSH AX

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

A、3211H B、320EH C、320FH D、3212H

28、AL和VAR字节单元中分别存放一个带符号数,执行CMP AL,VAR时,如AL>VAR,那么溢出标志位和符号标志位 的关系是( A ).

A、OF=SF B、OF≠SF C、OF=SF=1 D、OF=SF=0 29、检查BUF的内容是否为正偶数,如是正偶数,则将AL置为0,下面程序段正确的是( C )。

A、 MOV AL,BUF SHR AL,1 JNC K1 MOV AL,0 K1:…… C、 MOV AL,BUF TEST AL,81H

JNZ K3 MOV AL,0 K3:…… 三、程序分析题

B、 MOV AL,BUF

AND AL,1 JNZ K2 MOV AL,0 K2:……

D、 MOV AL,BUF TEST AL,80H

JNZ K4 MOV AL,0 K4:……