模拟试题一答案



一、选择题(每空2分,共10分。)

1、设机器字长为8位,最高位是符号位。则十进制数–127所对应的原码为11111111B,补码为( A )。

A.10000001B

B.11111111B

C.01111111B

D.00000000 B

2、数据线和地址线是以 ( B ) 方式轮流使用的。

A.同时使用

B.分时复用

C.分频复用

D.投票决定

3、容量为256KB的存储器具有8条数据线,( C )条地址线。

A.10

B.8

C.18

D.20

4、若定义 A DB ‘abcd’,则(A+2)单元存放的字节数据是 ( C )。

A.61H

B.62H

C.63H

D.64H

5、状态标志位CF的作用是 (A )。

A.进位标志

B.符号位

C.奇偶校验位

D.溢出标志

二、简答题(每题10分,共50分。)

1、设堆栈指针SP的初值为1000H,AX=2000H,BX=3000H。

(1)执行指令PUSH AX及PUSH BX后,SP的值是多少?

(2)再执行POP BX及POP AX后,SP,AX和BX的值是多少?

答:

(1)SP=0FFCH

(2)SP=1000H AX=3000H BX=2000H

2、CPU和外设之间传送数据的方式有哪几种?各有何优缺点?

答:主要分3类:(1)程序控制传送方式,包括无条件(同步)传送、查询式传送、中断传送。无条件传送:硬件开销小,传送速度快;查询式传送(条件传送):硬件开销较小,但执行速度慢;(2)中断传送:硬件上要有中断控制器,但外设和CPU可以并行工作,速度快;(3)DMA传送:硬件上要有DMA控制器,硬件线路复杂,传送速度快,适用于大批量成块传送数据。

3、8086微处理器内部结构如下图所示,请指出AX、BX、CX、DX寄存器的作用。

答: 通用寄存器中的AX,BX,CX,DX通常用于存储数据,称数据寄存器。这些寄存器还可以每个拆成高端和低端两块分别访问,如AX寄存器可以分为高端AH和低端AL。对AX寄存器写操作,可以由AH和AL分别读出。对AH写操作,读AX寄存器时其高端部分被修改。

4、分别给出以下指令中目标操作数和源操作数的寻址方式。

(1) MOV AL,5 ;(寄存器,立即数)

(2) MOV AX,BX ;(寄存器,寄存器)

(3) MOV [300H],12 ;(存储器 直接寻址,立即数)

(4) MOV WORD PTR [BX],12 ;(存储器 寄存器间接寻址,立即数)

5、计算以下段地址:偏移地址所对应的物理地址,要求计算过程。数字均为十六进制。

(1)0700:0100

(2)0700:369A

答:

0700H*10H + 0100H = 07100H

0700H*10H + 369AH = 0A69AH

三、程序阅读题(每题10分,共40分。)

1、阅读下述代码,回答问题。

DATA SEGMENT

    " ADD YOUR DATA HERE!

    PKEY DB "PRESS ANY KEY...$"

ENDS

STACK SEGMENT

     DW 128 DUP(0)

ENDS

CODE SEGMENT

START:

; SET SEGMENT REGISTERS:

    MOV AX, DATA

    MOV DS, AX

    MOV ES, AX ①

    ; ADD YOUR CODE HERE

    MOV AX, 01 ②

    MOV BX, AX

    LEA DX, PKEY

    MOV AH, 9

    INT 21H ; OUTPUT STRING AT DS:DX③

    ; WAIT FOR ANY KEY....

    MOV AH, 1

    INT 21H

    MOV AX, 4C00H ; EXIT TO OPERATING SYSTEM.

    INT 21H

ENDS

END START ; SET ENTRY POINT AND STOP THE ASSEMBLER.

(1)代码执行①后,AX、DS、ES寄存器的值为0710,请解释代码的目的。

答:目的是把DS和ES置为DATA段。

(2)代码执行②后,AX寄存器的值会发生什么变化?

答:值变为01。

(3)代码执行③后,控制台将输出什么内容?

答:输出PKEY指向的字符串PRESS ANY KEY...。

2、阅读下述代码,回答问题。

DATA SEGMENT

AREA1 DB 100 DUP(11H)

AREA2 DB 100 DUP(22H)

DATA ENDS

CODE SEGMENT

    ASSUME CS:CODE,DS:DATA,ES:DATA

MAIN PROC FAR

START: PUSH DX

    XOR AX,AX ①

    PUSH AX

    MOV AX,DATA

    MOV DS,AX

    MOV ES,AX

    CLD

    MOV SI,OFFSET AREA1

    MOV DI,OFFSET AREA2

    MOV CX,100

REP MOVSB

    RET

MAIN ENDP

CODE ENDS

    END START

(1)代码执行①后,AX寄存器中的值是什么?

答:AX为0。

(2)在程序执行前,AREA1和AREA2两个数据块中的内容分别是什么?

答:分别100个11H和100个22H。

(3)在程序执行后,AREA1和AREA2两个数据块中的内容分别是什么?

答: 分别100个11H。

3、阅读下述代码,回答问题。

ORG 100H

MOV AX, 2018H ①

MOV [2010H], AX ②

MOV BX, [2010H] ③

RET

代码执行①以前,寄存器状态如下图所示

代码执行①以后,寄存器状态如下图所示

(1)执行①的前后,哪些寄存器发生了变化,为什么?

答:AX寄存器值变为2018H,因为MOV语句。IP发生变化,因为指令指针移动。

(2)执行②之后,0700:2011和0700:2010的内容分别是什么?

答: 0700:2010为18H,0700:2010为20H,低字节优先。

(3)执行③之后,BH和BL的内容分别是什么?

答:BH为20H,BL为18H。

4、阅读下述原理图及代码,回答问题。

.MODEL SMALL

.8086

.code

.startup

    mov bl,0fh

l: mov dx,20h

in al,dx

test al,1

jz N

not bl

N: mov al,bl

     mov dx,40h

out dx,al

    jmp l

.data

.stack

END

回答程序的功能,当开关K通或断时,LED的状态如何?

解读程序原理。

答:初始状态LED0~LED3熄灭,LED4~LED7点亮。程序循环扫描开关K,若开关K闭合,对应的发光二极管LEDi(i=0~7)不变,若开关K断开,LEDi闪烁。

开关断开时,244的A1为高电平,代码将执行 not bl,LED闪烁。开关闭合时,244的A1为低电平,代码将跳过 not bl,LED保持不变。