微机原理.docx
- 文档编号:18253359
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:21
- 大小:52.79KB
微机原理.docx
《微机原理.docx》由会员分享,可在线阅读,更多相关《微机原理.docx(21页珍藏版)》请在冰豆网上搜索。
微机原理
第2章微处理器的结构
1.8086/8088CPU由哪两大部分组成?
请分别叙述它们的功能。
解:
8086/8088CPU均由两个独立的逻辑单元组成,一个称为总线接口单元BIU(BusInterfaceUnit),另一个称为执行单元EU(ExecutionUnit)。
总线接口单元BIU取指令时,从存储器指定地址取出指令送入指令队列排队;执行指令时,根据EU命令对指定存储器单元或I/O端口存取数据。
执行单元EU任务是执行指令,进行全部算术逻辑运算、完全偏移地址的计算,向总线接口单元BIU提供指令执行结果的数据和偏移地址,并对通用寄存器和标志寄存器进行管理。
2.状态标志和控制标志有何不同?
8086/8088的状态标志和控制标志分别有哪些?
解:
8086/8088CPU设立了一个两字节的标志寄存器,共九个标志。
其中标志位O、S、Z、A、P、C是反映前一次涉及ALU操作结果的状态标志,D、I、T是控制CPU操作特征的控制标志。
3.8086/8088CPU寻址存储器时,什么是物理地址?
逻辑地址?
它们之间有何关系?
解:
8086/8088系统中每个存储单元都有一个物理地址,物理地址就是存储单元的实际地址编码。
在CPU与存贮器之间进行任何信息交换时,需利用物理地址来查找所需要的访问的存储单元。
逻辑地址由段地址和偏移地址两部分组成。
逻辑地址的表示格式为:
段地址:
偏移地址。
知道了逻辑地址,可以求出它对应的物理地址:
物理地址=段地址×10H+偏移地址。
4.段寄存器CS=1200H,指令指针寄存器IP=FF00H,此时,指令的物理地址为多少?
指向这一物理地址的CS值和IP值是唯一的吗?
解:
根据:
物理地址=段地址×10H+偏移地址,指令的物理地址为21F00H。
指向这一物理地址的CS值和IP值不唯一。
5.8086CPU中
信号和A0信号是通过怎样的组合解决存储器和外设端口的读/写的?
这种组合决定了8086系统中存储器偶地址体及奇地址体之间应该用什么信号区分?
怎样区分?
解:
若存取一个字节的数据,总是用一个总线周期来完成该操作;若存取一个字,则依该字是规则字还是不规则字需用一个或两个总线周期来完成。
对规则字,只用一个总线周期来完成16位数据的传送,而对于非规则字则用相邻两个总线周期来完成该字的存储操作,先取其奇地址字节(即数据的低位字节),然后存取偶地址字节。
在组成存储系统时,总是偶地址单元的数据通过AD0~AD7传送,而奇地址单元的数据通过AD8~AD15传送,即通过总线高字节传送。
信号和A0信号控制存储器读写见下表:
操作
A0
使用的数据总线
存取规则字
0
0
AD15~AD0
传送偶地址的一个字节
1
0
AD7~AD0
传送奇地址的一个字节
0
1
AD15~AD8
存取非规则字
0
1
AD15~AD8(第一个总线周期)
1
0
AD7~AD0(第二个总线周期)
1
1
为非法码
第3章80x86指令系统
1、指出下列指令中操作数的寻址方式(8086系统)。
(1)MOVAX,100
(2)MOVAX,[100]
(3)MOVDL,[BP+SI](4)MOV[BX],CX
(5)MOVDX,[SI](6)MOV1234H[BX],DS
(7)MOV[DI+5678H],AL(8)MOV12[BP][DI],BH
(9)POPCX(10)MOVAX,[BX+SI+10]
解:
目的操作数
源操作数
(1)MOVAX,100
寄存器寻址
立即数寻址
(2)MOVAX,[100]
寄存器寻址
直接寻址
(3)MOVDL,[BP+SI]
寄存器寻址
基址变址寻址
(4)MOV[BX],CX
寄存器间接寻址
寄存器寻址
(5)MOVDX,[SI]
寄存器寻址
寄存器间接寻址
(6)MOV1234H[BX],DS
寄存器相对寻址
寄存器寻址
(7)MOV[DI+5678H],AL
寄存器相对寻址
寄存器寻址
(8)MOV12[BP][DI],BH
相对基址变址寻址
寄存器寻址
(9)POPCX
寄存器寻址
隐含为堆栈
(10)MOVAX,[BX+SI+10]
寄存器寻址
相对基址变址寻址
3、指出以下指令中,哪些指令是非法的,并说明为什么(8086系统)。
(1)PUSH1234H
(2)MOVCS,AX
(3)INAX,300(4)MOVAX,[DX+12]
(5)MOVBX,[BX](6)MOVDS,1000H
(7)XCHGAL,AL(8)MOVAL,100H
(9)MOVDX,AL(10)LEABL,[BX+5]
(11)LEADX,BX(12)MOV[1000H],12H
(13)ADDAX,DS(14)SUB[0100H],BYTEPTR[0001]
(15)SHLBL,2(16)SHRCL,CL
(17)MULAL,BL(18)INT400
解:
(1)非法,8086系统不允许PUSH指令的操作数为立即数;
(2)非法,MOV指令中CS不能作为目的操作数;
(3)非法,端口号大于0FFH;
(4)非法,DX不能出现在中括号[]内;
(5)合法;
(6)非法,不能把立即数赋给段寄存器;
(7)合法;
(8)非法,源操作数大于0FFH,不能赋给8位寄存器AL;
(9)非法,源操作数是8位寄存器,目的操作数却是16位寄存器,不匹配;
(10)非法,LEA指令得到的是16位偏移量,但目的操作数是8位寄存器;
(11)非法,LEA指令的源操作数只能是存储器操作数;
(12)非法,指令存在歧义,无法确定传送的是字节还是字;
(13)非法,段寄存器不能参与算术运算;
(14)非法,源和目的寄存器不能同为存储器操作数;
(15)非法,在8086系统中,移位次数大于1时需要将移位次数存放到CL中;
(16)合法;
(17)非法,在8086系统中MUL指令没有双操作数的用法;
(18)非法,中断类型号大于0FFH。
5、假设(AX)=1234H,(BX)=5678H,(SP)=1000H,指出执行下面的程序段后,各相关寄存器及堆栈段中的内容。
PUSHAX;(AX)=?
,(BX)=?
,(SP)=?
,栈顶字节[SP]=?
,栈顶第二字节[SP+1]=?
PUSHBX;(AX)=?
,(BX)=?
,(SP)=?
,栈顶字节[SP]=?
,栈顶第二字节[SP+1]=?
POPAX;(AX)=?
,(BX)=?
,(SP)=?
,栈顶字节[SP]=?
,栈顶第二字节[SP+1]=?
解:
(AX)=1234H,(BX)=5678H,(SP)=0FFEH,栈顶字节[SP]=34H,栈顶第二字节[SP+1]=12H
(AX)=1234H,(BX)=5678H,(SP)=0FFCH,栈顶字节[SP]=78H,栈顶第二字节[SP+1]=56H
(AX)=5678H,(BX)=5678H,(SP)=0FFEH,栈顶字节[SP]=34H,栈顶第二字节[SP+1]=12H
6、假设A、B、C、D、X、Y为字节变量,AA、BB、YY为字变量,试利用算术运算指令编写程序段,完成以下各算术运算题。
(1)计算YY←A+B*C,其中A、B、C都是无符号数;
(2)计算(AA+BB)/(C-D),商赋给X,余数赋给Y,其中AA、BB、C、D都是带符号数;
(3)计算YY←(A-B)*C,其中A、B、C都是未组合BCD码。
解:
(1)MOVAL,B
MULC
ADDAL,A
ADCAH,0
MOVYY,AX
(2)MOVAX,AA
ADDAX,BB
MOVBL,C
SUBBL,D
IDIVBL
MOVX,AL
MOVY,AH
(3)MOVAL,A
SUBAL,B
AAS
MULC
AAM
MOVYY,AX。
9、在8086系统下,编写实现如下功能的程序段:
(1)从地址为80H的端口中读入一个字节;
(2)如果该字节最高位为“1”,则将字节0FFH送到地址为81H的端口中,并退出程序;
(3)如果该字节最高位为“0”,则转向第
(1)步,继续循环扫描。
解:
参考程序段:
AGAIN:
INAL,80H
TESTAL,80H
JZAGAIN
MOVAL,0FFH
OUT81H,AL
第4章汇编语言程序设计
1、指出以下数据定义伪指令所分配的字节数(8086系统)。
(1)DATA1DB10,?
,‘A’
(2)DATA2DW10DUP(2,3DUP(?
),1)
(3)DATA3DB‘HELLO,WORLD!
’,‘$’
(4)DATA4DWDATA4
解:
(1)3字节;
(2)100字节;(3)13字节;(4)2字节。
4、假设已定义数据段如下:
DATASEGMENT
ORG100H
DATA1DB10DUP(1,2,3)
DATA2DWDATA1,$
DATAENDS
且段寄存器DS已初始化为该数据段的段基址(假设段基址为1234H)。
请指出以下指令执行后,相应的寄存器中的内容。
(1)MOVAX,WORDPTRDATA1;(AX)=?
(2)MOVBX,DATA2;(BX)=?
(3)MOVCX,DATA2+2;(CX)=?
(4)MOVDX,OFFSETDATA2;(DX)=?
(5)MOVSI,SEGDATA1;(SI)=?
(6)MOVDI,LENGTHDATA1;(DI)=?
(7)MOVSP,TYPEDATA1;(SP)=?
(8)MOVBP,SIZEDATA2;(BP)=?
解:
(1)(AX)=0201H;
(2)(BX)=0100H;(3)(CX)=0120H;(4)(DX)=011EH;
(5)(SI)=1234H;(6)(DI)=000AH;(7)(SP)=0001H;(8)(BP)=0002H。
第5章微机总线技术
1.总线周期的含义是什么?
8088/8086基本总线周期由几个时钟周期组成?
解:
总线周期是指CPU从存储器或I/O端口存取一个字节所需的时间。
8088/8086基本总线周期由4个时钟周期组成。
2.
3.试说明8086/8088工作在最小方式下和最大方式下系统基本配置的差别。
在最大组态下,8086/8088的外围电路由哪些器件组成?
它们的作用是什么?
解:
8086/8088工作在最大方式下时,需要使用8288总线控制器,但是工作在最小方式下时不需要使用。
8086/8088工作在最大方式下时,外围电路包括8284时钟发生器、8286数据发送/接收器、8282地址锁存器以及8288总线控制器。
8284将晶体振荡器的振荡频率分频,向8086/8088以及计算机系统提供符合定时要求的时钟信号、准备好信号和系统复位信号。
8286数据发送/接收器增加数据总线的驱动能力。
8282地址锁存器用来锁存CPU地址信号,特别是地址-数据线、地址-状态线上出现的地址信号。
8288根据CPU要执行的指令提供的状态信号建立控制时序,输出读写控制命令。
4.8086/8088数据信号与地址信号是共用引脚的,怎样把这两种不同的信号分离出来?
解:
8086/8088工作时,对数据信号与地址信号的公用引脚进行分时复用,采用8282地址锁存器来分离数据与地址信号。
在T1状态时,CPU提供ALE地址锁存允许信号,将地址信号锁存到8282地址锁存器。
然后,在T2、T3、TW状态,用作传送数据信号。
5.在总线周期的T1、T2、T3、T4状态,CPU分别执行什么动作?
什么情况下需要插入等待状态TW?
TW在哪儿插入?
怎样插入?
解:
CPU在T1、T2、T3、T4这四个状态完成一个总线周期。
在T1状态,把地址信息从地址线A19~A16,A15~A8和AD7~AD0上输出,且立即发出地址锁存信号ALE,把在A19~A16上出现的高4位地址和在AD15~AD0(8088则是AD7~AD0)上出现的地址,在外部地址锁存器上锁存。
在T2状态,CPU发送读写等控制命令。
在T3、T4状态,CPU发送或接收数据,并在T4状态结束此总线周期。
当外部存储器或I/O端口的时序不能与CPU的时序相配合时,就需要插入TW周期。
因此,在CPU中设计了一条准备就绪READY输入线,即存储器或I/O端口输给CPU的状态线。
CPU在T3采样READY线,若为高电平,则在T3状态后进入T4状态。
若存储器或I/O端口来不及在T4状态的前沿把数据准备好,则当CPU在T3状态采样时应使READY线为低电平,并在T3状态后插入一个等待状态TW。
6.
7.在T1状态下,8088/8086CPU数据/地址线上是什么信息?
用哪个信号可将此信息锁存起来?
数据信息是什么时候送出的?
在最大组态下,怎样使系统地址总线和系统数据总线上同时分别存在地址信息和数据信息?
解:
在T1状态下,8088/8086CPU数据/地址线上是地址信息。
用ALE信号可将地址信息锁存起来。
数据信息在T2开始以后送出。
在最大组态下,AD15~AD0在8288发出的ALE下降沿控制下将地址信息锁存后送系统地址总线A15~A0(对8088则为AD7~AD0)。
A19/S6~A16/S3经ALE下降沿控制锁存后送系统地址总线A19~A16;CPU的AD0~AD7在8288发出的
(数据收发控制信号)和DEN(数据允许信号)信号控制下,经双向总线驱动器连接到系统数据总线D7~D0,这样,实现了地址和数据及状态信号的分离,使地址信号和数据信号同时分别出现在系统地址总线和数据总线上。
8.RESET信号来到后,8086/8088系统的CS和IP分别等于多少?
解:
CS=FFFFH,IP=0000H
9.在中断响应过程中,8086/8088往8259A发的两个
信号分别起什么作用?
解:
CPU在每一个中断响应地机器周期,都给出中断响应信号
。
在第一个机器周期,使AD0~AD7浮空。
在第二个机器周期,被响应地外设(或接口片子)应向数据线上输送一个字节的中断向量类型,CPU把它读入后,就可以在中断向量表上找到该设备的服务程序的入口地址,转入中断服务。
第7章输入/输出接口
1、请用74LS138译码器及其他门电路设计一个端口地址译码器,使CPU可以对一下地址范围寻址:
(1)740H~747H;
(2)750H~757H;
(3)758H~75FH;
(4)768H~76FH。
解:
各地址范围地址线的逻辑电平:
A10
A9
A8
A7
A6
A5
A4
A3
A2
A1
A0
(1)
1
1
1
0
1
0
0
0
×
×
×
(2)
1
1
1
0
1
0
1
0
×
×
×
(3)
1
1
1
0
1
0
1
1
×
×
×
(4)
1
1
1
0
1
1
0
1
×
×
×
2、图为7段显示器接口,显示器采用共阳极接法,试编写程序段,使AL中的一位十六进制数显示于显示器上。
输出锁存器地址为40H。
解:
TABLEDB3FH,06H,5BH,4FH
DB66H,6DH,7DH,07H
DB7FH,67H,77H,7CH,
DB39H,5EH,79H,71H
LEABX,TABLE
XLAT
OUT40H,AL
3、图为开关量检测与指示电路接口。
显示器采用7段LED显示器,它由BCD-7段译码、驱动器所驱动,并采用共阴极接法(只有阴极为低电平,显示器才会发亮),试编写一段程序来统计开关闭合的个数,并显示在LED显示器上。
输入缓冲器和输出数据锁存器地址为20H。
解:
INAL,20H
MOVBL,AL
MOVAL,00010000B
MOVCX,8
AGAIN:
SHRBL,1
JNCNEXT
INCAL
NEXT:
LOOPAGAIN
OUT20H,AL
4、已知(SP)=0100H,(SS)=0300H,(PSW)=0240H,以及00020H至00023H单元的内容分别是40H,00H,00H和01H,原来CS=0900,IP=00A2,求执行INT8指令并进入该指令响应的中断例程时,SP,SS,IP,CS,PSW和堆栈最上面三个字的内容。
解:
SS:
SP=0300:
00FAH,CS:
IP=0100:
0040H,PSW=0040H
堆栈最上面三个字的内容分别为:
00A2H,0900H,0240H。
5、试编写只有一块8259A的8088系统中的8259A的初始化程序,8259A的地址为02C0H和02C1H,要求:
(1)中断请求输入采用电平触发;
(2)IR7请求的中断类型是23;
(3)采用缓冲器方式;
(4)采用普通的EOI命令。
解:
INTA0EQU02C0H
INTA1EQU02C1H
MOVAL,1BH;00011011B
MOVDX,INTA0
OUTDX,AL
MOVAL,16H
MOVDX,INTA1
OUTDX,AL
MOVAL,0DH;00001101B
OUTDX,AL
6、试根据不同的假设分别编写一段使8259A的优先级顺序如下的程序:
IR4,IR5,IR6,IR7,IR0,IR1,IR2,IR3
假定CPU为8088,8259A的偶地址为20H。
假设1:
当前的最高优先级为IR0;假设2:
当前的最高优先级为IR3。
解:
(1)MOVAL,11000011B;将IR3设置为最低,IR4为最高
OUT20H,AL
(2)MOVAL,10x00000B;自动旋转将刚服务完的IR3优先权降为最低
OUT20H,AL
或:
同
(1)。
8、设在最大方式下,8086系统中有一块主8259A和一块从8259A,从8259A接至主8259A的IR1上,主、从8259A的偶地址分别是0200H和0210H。
主8259A的IR0中断类型码是30H,从8259A的IR0的中断类型码是38H。
所有请求都是边沿触发,用EOI命令清ISR位,两块8259A采用级联方式连接。
主、从8259A的IMR都清除,
用作输入。
试编写该中断系统的初始化程序。
解:
对于8086CPU,若主8259A的偶地址为0200H,则奇地址为0202H;若从8259A的偶地址为0210H,则奇地址为0212H。
;主8259A初始化程序:
INTA0EQU0200H;
INTA1EQU0202H
MOVAL,11H;00010001B
MOVDX,INTA0
OUTDX,AL;ICW1
MOVAL,30H
MOVDX,INTA1
OUTDX,AL;ICW2
MOVAL,02H;00000010B
OUTDX,AL;ICW3
MOVAL,11H;00010001B
OUTDX,AL;ICW4
;从8259A初始化程序:
INTA0EQU0210H
INTA1EQU0212H
MOVAL,11H
MOVDX,INTA0
OUTDX,AL;ICW1
MOVAL,38H
MOVDX,INTA1
OUTDX,AL;ICW2
MOVAL,01H
OUTDX,AL;ICW3
MOVAL,01H;00000001B
OUTDX,AL;ICW4
9、若一个中断系统有一块主8259A和三块从8259A,从8259A分别接在主8259A的IR2,IR3和IR6上,如主8259A的IMR置成01010000,各从8259A的IMR的所有位都清零。
除接在IR3上的那块8259A外,其他8259A都按全嵌套方式工作,而接在IR3上的那块8259A的最高优先级是IR5,试按优先级的顺序排列出各未被屏蔽的中断级,最高优先级在前。
解:
优先级顺序为:
主:
IR0、IR1
从2:
IR0、IR1、IR2、IR3、IR4、IR5、IR6、IR7
从3:
IR5、IR6、IR7、IR0、IR1、IR2、IR3、IR4
主:
IR5、IR7
第8章常用接口技术
1、设8253通道2工作于方式3,输入时钟频率为1MHz,OUT引脚输出周期为1ms的方波。
已知通道0的口地址为3F0H,试编写该8253芯片的初始化程序段。
解:
MOVAL,10110110B
MOVDX,3F3H
OUTDX,AL
MOVAX,555
MOVDX,3F2H
OUTDX,AL
MOVAL,AH
OUTDX,AL
MOVAL,10110111B
MOVDX,3F3H
OUTDX,AL
MOVAL,55H
MOVDX,3F2H
MOVAL,05H
OUTDX,AL
OUTDX,AL
2、假设有一片8253芯片,其端口地址为0FCH~0FFH,其CLK引脚输入的时钟信号周期为0.84µs。
现用该8253芯片的计数器1,工作在方式2,产生周期为2ms的信号,试写出该8253芯片的初始化程序。
解:
计算2ms对应的时间常数
N=2mS/0.84µs=2×1000/0.84=2381=094DH
初始化编程:
MOVAL,75H
OUT0FFH,AL
MOVAL,81H
OUT0FDH,AL
MOVAL,23H
OUT0FDH,AL
MOVAL,74H
OUT0FFH,AL
MOVAL,4DH
OUT0FDH,AL
MOVAL,09H
OUT0FDH,AL
MOVAL,74H
OUT0FFH,AL
MOVAX,200000/84
OUT0FDH,AL
MOVAL,AH
OUT0FDH,AL
MOVAL,74H
OUT0FFH,AL
MOVAX,2381
OUT0FDH,AL
MOVAL,AH
OUT0FDH,AL
3、假设8253各端口的地址分别为40H~43H,若计数器0,OUT引脚输出频率为1KHZ的连续方波信号;计数器1,每秒产生18.2次连续的方波信号;计数器2,每15.12µs输出一次连续的单脉冲信号。
CLK时钟脉冲的频率为1.19MHz。
请对以上计数器通道进行初始化编程。
解:
TC(计数周期)=1/1.19MHZ=0.84µs
计数器0:
N=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理
![提示](https://static.bdocx.com/images/bang_tan.gif)