微机原理期末考试试题及答案 下载本文

1.8086的数据线为 16 位,地址线为 20 位,I/O口使用 16 位地址线。 2.在某进制的运算中 7×3=33,则7×5=_55。

3.用8位二进制数表示整数时,十进制数(-128)的补码为_10000000_。原码为 无 ,反码为 无 。

3.8086内部寄存器长度为 16 位,通用寄存器有 8 个,段寄存器有 4 个。 4.8086偶存储体的选片信号是 A0 ,奇存储体的选片信号是 BHE 。 5.MOV AX,[BX+SI]的源操作数是 基址变址 寻址方式,目的操作数是 寄存器 寻址方式。

6.8086可以指向堆栈的指针寄存器有 bp 和 sp 。

7.程序中段定义结束的伪指令是 ENDS ,子程序定义结束的伪指令是 ENDP 。 8.EEPROM的擦除方法为 点擦除 .

9.下列指令段经汇编后,DATA所代表的偏移地址为_100 CH__。 ORG 1000H

STROE DB 12 DUP(?)

DATA DB 05H,06H,07H,08H

1. 8086/8088在不考虑段跨越情况下,DI寄存器给出的偏移地址位于_C__。 A. 仅DS段 B. DS或SS段 C. DS或ES段 D. DS或CS段 2. 下列指令中格式错误的是___A___。

A. SHL AL,CX B. XCHG AL,BL C. MOV BX,[SI] D. AND AX,BX

3. 设(20010H)=3FH,(20011H)=B2H,执行下列指令段后,BX=____B__。 MOV AX,2000H MOV DS,AX

MOV BX,[0010H]

A. B2B2H B. B23FH C. 3F3FH D. 3FB2H

4. 若SP=0124H,SS=3300H,在执行INT 60H这条指令后,堆栈栈顶的物理地址为___D___。 A. 3311CH B. 33120H C. 33122H D. 3311EH 5. 下列指令中格式错误的是_C__。

A. MOV AX,357AH[BX][DI] B. OUT DX,AL C. LEA AX,50H[BX][BP] D. RCR BX,1 6. 下列指令中允许寻址范围最大的是_D__。 A. JNZ NEXT B. LOOP NEXT

C. JMP SHORT PTR NEXT D. CALL NEAR PTR NEXT 7. 8086/8088不属于BIU部分的寄存器是__D____。 A. IP B. ES C. DS D. SP

8.8086/8088最大模式比最小模式在结构上至少应增加___B_。 A. 中断优先级控制器 B. 总线控制器 C. 数据驱动器 D. 地址锁存器 9. 8086在存取存贮器中以偶地址为起始地址的字时,M/IO、BHE、A0的状态 分别是____D__。 A. 0,0,1 B. 1,0,1 C. 1,1,0 D. 1,0,0

10. 一个半导体存贮芯片的引脚有 A13~A0,D3~D0,WE,OE,CS,VCC,GND等,该芯片存贮容量为____C__。

A. 8K×8 B. 8K×4 C. 16K×4 D. 16K×8 1.写出8086CPU所含14个寄存器的英文标识及中文名称。CS16位代码段寄存器 DS 16位数

据段寄存器SS16位堆栈段寄存器 ES16位附加段寄存器 AX 累加寄存器 BX基址寄存器 CX计数寄存器DX数据寄存器 SP堆栈指针寄存器 BP基址指针寄存器 SI DI 2.写出8086的7种寻址方式。

3.在8086系统中,设DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H,BP=0100H,VAR的偏移量0060H,指出下列指令的目标操作数的寻址方式,若目标操作数为存储数操作数,计算它们的物理地址。 MOV [BX] [SI],AX MOV ES:[SI],AX MOV VAR,8 MOV BX,12

MOV 6[BP+SI],AX

4.给定(SP)=0008H,(SS)=0300H,在段地址为1000H及偏移地址为0005H的单元中有一条双字节CALL指令近调用某个子程序,试问执行CALL指令后,SP,SS的内容是什么?画出堆栈的内容并标出地址。

5.某8088系统的内存贮器的译码器采用了一片74LS138,实现全译码方式, 请分析四个输入端Y0~Y3所控制的地址范围是多少?它适合多大容量的存贮器芯片?该存贮器的总容量是多少?

★正数的反码与原码相同;

★负数的反码,是原码的符号位不变,其它各位求反。 x 0 ≤ x ≤ 2n-1 – 1 [x]反 =

2n–1 -|x| -( 2n-1 – 1)≤ x ≤ 0 3.补码

x 0 ≤ x < 2n-1 – 1 [x]补 =

2n + x - 2n-1 ≤ x < 0 ★ 正数的补码与原码相同

★ 负数的补码是:原码的符号位不变,其余各位求反加1。 补码简单求法

(1)符号位不变,数值部分从低位开始向高位逐位行进,在遇到第一个1以前,包括第一个1按原码照写;第一个1以后,逐位取反。 例:[x]原 = 1 0 0 1 1 0 1 0 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ [x]补 = 1 1 1 0 0 1 1 0 ↑ ↑ ↑ 不变 求反 不变

[-128]补=[-127-1]补=[-127]补+[-1]补=1000 0000 3. 补码运算溢出判别

运算结果,超出了计算机所能表示的数的范围称为溢出。

例:73 + 72 = 145 > 127

[x]补 =01001001 (+73) + [y]补 =01001000 (+72) 1 0 0 1 0 0 0 1

补码运算发生溢出情况: 1.同号数相加,可能溢出; 2.异号数相减,可能溢出。 2.1.1 计算机硬件基本结构

由运算器、控制器、存储器、输入设备和输出设备等五个基本部分组成。 微型计算机的分类 按用途分:

? 通用微型计算机 ? 嵌入式计算机

按微型计算机的组成和规模分:

? 多板机 ? 单板机 ? 单片机

? 微机的系统总线按功能分成三组:

? 数据总线DB: 地址总线AB: 控制总线CB:

8086是Intel系列的16位微处理器,有16根数据线和20根地址线。因为可用20位地址,所以可寻址的地址空间达220即1M字节单元。

总线接口部件(BIU):段寄存器、指令指针寄存器(IP)、地址加法器、内部暂存器、指令队列及I/O控制逻辑等部分组成。

执行部件EU:负责指令的执行,包括通用寄存器、专用寄存器、标志寄存器及ALU等部分组成。

CS:16位代码段寄存器 DS:16位数据段寄存器 SS:16位堆栈段寄存器 ES:16位附加段寄存器

AX:累加器 BX:基址(Base)寄存器 CX:计数(Count)寄存器 DX:数据(Data)寄存器

SP:堆栈指针寄存器 BP:基址指针寄存器 SI:源变址寄存器 DI:目的变址寄存器 Flag:状态标志寄存器 IP:指令指针寄存器

假设CS=8211H,IP=1234H,则该指令单元的20位物理地址为:PA= 8311H×10H+1234H=83110H+1234H=84344H

物理地址=段基址×10H+偏移地址 CS ×16+IP SS ×16+SP(BP) DS(ES) ×16+SI(DI) 1. 指令

指令是计算机能够识别和执行的指挥计算机进行操作的命令。计算机是通过执行指令序列来解决问题的。

指令系统是指微处理器能执行的各种指令的集合。不同的微处理器有不同的指令系统。

计算机指令码由操作码字段和操作数字段两部分组成。操作码字段指出所要执行的操作,而操作数字段指出指令操作过程中需要的操作数。

2. 操作数

操作数是指令的操作对象。8086/8088指令系统中的操作数分为两类:数据操作数、转移地址操作数。

(1) 数据操作数

按存储位置,数据操作数分为:立即数、寄存器操作数、内存操作数、I/O操作数。

1) 立即数:指令中直接给出操作数本身。

2) 寄存器操作数:即操作对象是寄存器中的内容。例上述指令中AL为寄存器操作数。

3) 内存操作数:也称为存储器操作数,操作对象是内存中的数。 4) I/O操作数:指令中要操作的数据来自或送到I/O端口。 (2) 转移地址操作数

这类操作数出现在程序跳转或程序调用指令中,指出程序要转移的目的地址。它也可以分为:立即数、寄存器操作数、存储器操作数,即要转移的目标地址包含在指令中或

存放在寄存器、内存储器中

1 立即寻址

MOV AX ,1234H ;AX ← 1234H 2 寄存器寻址

MOV DX ,AX ;DX ← AX 注意:

(1)当指令中的源操作数和目标操作数均为寄存器时,必须采用同样长度的寄存器; (2)两个操作数不能同时为段寄存器; (3)目标操作数不能是代码段寄存器(CS)。 除以上两种寻址方式外,下面5种寻址方式的操作数均在存储器中,统称为内存寻址方式。当采用内存操作数时,必须注意双操作数指令中的两个操作数不能同时为内存操作数。

3 直接寻址

(1) MOV AX,[2000H] ;AX ← (DS:2000H) (2) MOV [1200], BL ;(DS:1200H) ← BL (3) MOV ES:[0100], AL ;(ES:0100H) ← AL 说明:DS:2000表示内存单元地址;

(DS:2000)表示地址是DS:2000的内存单元内容。 4 寄存器间接寻址

8086/8088中可用于间接寻址的寄存器有基址寄存器BX、BP和变址寄存器SI、DI。为区别于寄存器寻址,寄存器名要用“[]”括起。

例:MOV AX,[SI] ;AX ← (DS:SI+1,DS:SI) 有效地址EA计算方法如下:

物理地址PA计算方法如下:

物理地址 = DS × 10H + SI 或 DI 或 BX 或

物理地址 = SS × 10H + BP

注意:不同的寄存器所隐含对应的段不同。采用SI、DI、BX寄存器,数据存于数据段中;采用BP寄存器,数据存于堆栈段中。

5 寄存器相对寻址 操作数的有效地址:

EA1 = SI/DI/BX + 8位disp/16位disp(disp代表偏移量) 或 EA2 = BP + 8位disp/16位disp 操作数的物理地址: PA1 = DS × 10H + EA1 或 PA2 = SS × 10H + EA2

(1)偏移量是有符号数,8位偏移量的取值范围为:00~FFH(即+127~-128);16位偏移量的取值范围为:0000~FFFFH(即+32765~-32768)。

(2)IBM PC汇编允许用三种形式表示相对寻址,它们的效果是一样的,如: MOV AX,[BX]+6 ;标准格式 MOV AX,6[BX] ;先写偏移值

MOV AX,[BX+6] ;偏移值写在括号内

6 基址变址寻址

操作数的有效地址为:

EA1 = BX + SI / DI

或 EA2 = BP + SI / DI

当基址寄存器选用BX时,数据隐含存于数据段中;当基址寄存器选用BP时,数据隐含存于堆栈段中,即操作数的物理地址为:

PA1 = DS × 10H + EA1 或 PA2 = SS × 10H + EA2 7 相对基址变址寻址 操作数的有效地址为:

EA1 = BX + SI/DI + 8位/16位 disp 或 EA2 = BP + SI/DI + 8位/16位 disp

当基址寄存器选用BX时,数据隐含存于数据段中;当基址寄存器选用BP时,数据隐含存于堆栈段中,即操作数的物理地址为:

PA1 = DS × 10H + EA1 或 PA2 = SS × 10H + EA2

8086/8088指令系统按其功能可分6类: 1. 数据传送指令 2. 算术运算指令 3. 逻辑指令 4. 串操作指令 5. 控制转移指令 6. 处理机控制指令 ①MOV指令传送数据的位数由寄存器或立即数决定,dst和src数据位数必须相同?下面的一些用法是错误的: MOV ES,AL; MOV CL,4321H?

②MOV指令中的dst和src两操作数中必有一个是寄存器,不允许用MOV实现两存储单元间的传送?若需要时,可借助一个通用寄存器为桥梁,即:

MOV AL,[SI]; 通过AL实现(SI)和(DI)所指的两存储单元间的数据传送 MOV [DI],AL?

③不能用CS和IP作目的操作数;

④不允许在段寄存器之间直接传送数据; ⑤不允许用立即数作目的操作数;

⑥不能向段寄存器送立即数,要对段寄存器初始化赋值,必须通过CPU的通用寄存器? 例如:

MOV AX,DATA; 将数据段地址DATA通过AX装入DS中 MOV DS,AX?

例:以下指令均为合法的传送指令,括号中为目标操作数与源操作数的寻址方式。 1) MOV AL,5 ;(寄存器,立即数) 2) MOV AX,BX ;(寄存器,寄存器) 3) MOV DS,AX ;(段寄存器,寄存器) 4) MOV AX,DS ;(寄存器,段寄存器)

5) MOV ES:VAR,12 ;(存储器,立即数) 6) MOV WORD PTR [BX],12 ;(存储器,立即数)

其中:VAR为符号地址;WORD PTR指明存储器的属性是字属性。 ) 进栈指令PUSH 格式: PUSH src

src可以是:r16、seg、m16

功能:堆栈指针减2,并将寄存器、段寄存器或存储器中的一个字数据压入堆栈。 即:① SP ← SP - 2

② (SP+1,SP) ← (src)

执行过程可描述为:先减后压 ) 出栈指令POP 格式: POP dest

dest可以是:r16(除CS外)、seg、m16

功能:将栈顶元素弹出送至某一寄存器、段寄存器(除CS外)或存储器,堆栈指针加2。 即: ① (dest) ← (SP+1,SP) ② SP ← SP + 2

执行过程可描述为:先弹后加

由于XCHG指令不允许同时对两个存储单元进行操作,因而必须借助于一个通用寄存器。①先把一个存储单元中的数据传送到通用寄存器;②再将通用寄存器中的内容与另一个存储单元内容进行交换;③把通用寄存器中的内容回传给第一个存储单元。 换码指令 XLAT 格式:XLAT

源操作数、目标操作数均隐含。

功能:把数据段中偏移地址为BX+AL的内存单元的内容传送到AL中,即:AL←(BX + AL)。

1) 对外设端口操作时,当端口地址在0~255范围内,寻址方式可选用直接寻址,也可选用间接寻址;当端口地址大于255时,只能选用间接寻址,并且地址寄存器只能用DX。 (2) 数据寄存器只能用AL(字节操作)或AX(字操作)。当使用AX时,对IN指令来说:是将port或DX所指向的端口数据读入AL,将port+1或DX+1所指向的端口数据读入AH;对OUT指令来说:是将AL寄存器内容送port或DX所指向的端口,将AH寄存器内容送port+1或DX+1所指向的端口。

数据传送指令除SAHF、POPF指令对标志位有影响外,其余指令对标志位无影响。

串操作指令共有5条,串传送指令MOVS、串装入指令LODS、串送存指令STOS、串比较指令CMPS、串扫描指令SCAS。

控制转移指令包括:转移指令、循环控制指令、过程调用指令和中断指令等4类。 (1) 中断调用指令 INT n 格式:INT n

功能:产生一个类型为n的软中断 操作:

① 标志寄存器入栈;

② 断点地址入栈,先CS入栈,后IP入栈;

③ 从中断向量表中获取中断服务程序入口地址,即: IP ← (0000:4n+1,0000:4n) CS ← (0000:4n+3,0000:4n+2) (2) 溢出中断指令 INTO 格式:INTO

功能:检测OF标志位,当OF=1时,产生中断类型为4的中断;当OF=0时,不起作用。 操作:

① 标志寄存器入栈;

② 断点地址入栈,先CS入栈,后IP入栈;

③ 从中断向量表中获取中断服务程序入口地址,即: IP ← (0000:0011H,0000:0010H) CS ← (0000:0013H,0000:0012H) ) 中断返回指令IRET 格式:IRET

功能:从中断服务程序返回断点处,继续执行原程序。IRET指令是中断服务程序执行的最后一条指令。 操作:

① 断点出栈,先IP出栈,后CS出栈; ② 标志寄存器出栈;