微机原理与单片机(部分知识点)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.8086CPU 是16位微处理器,具有16根数据线和20根地址线可以和浮点计算器,I/O 处理器或其他处理器组成多处理系统。
2.总线接口单元的功能是负责完成CPU 与储存器或I/O 设备之间的数据传送。 总线接口单元内有4个16位段寄存器:代码段寄存器CS 、数据段寄存器DS 、堆栈段寄存器SS 、附加数据段寄存器ES,一个16位的指令指针寄存器IP ,一个20位地址加法器,6字节指令队列缓冲器,一个与EU 通信的内部寄存器以及总线控制电路等。
3.代码段寄存器(CS )用来存储程序当前使用的代码段和段地址。下一条要读取得指令在代码段中的偏移地址由指令指针寄存器IP 提供。数据段寄存器DS 用来存放程序当前使用的数据段地址。
4.每个源程序必须至少有一个代码段,而数据段,堆栈段和附加数据段则根据程序的需要决定是否设置。
5.由CS 和IP 的内容决定了程序的执行顺序。
6.段内偏移地址段地址物理地址+⨯=H 10。
7.执行单元EU 不与系统外部直接相连,功能:只是负责执行指令。执行的指令从BIU 的指令队列缓冲器中直接得到,执行指令时若需要从存储器或I/O 端口读取操作数,则由EU 向BIU 发出请求,再由BIU 对存储器或I/O 端口进行直接访问。 8.EU 组成:1)16位算数逻辑单元(ALU ),2)16位标志寄存器FLAGS ,3)数据暂存寄存器,4)通用寄存器,5)EU 控制电路
9.8086和8088的差异:1)外部数据总线不同,8086是16位,8088是8位,2)指令队列缓冲器大小不同,8086可容纳6个字节,8088只能容纳4个字节,3)部分引脚的功能定义有所区别
8086/8088CPU 中可供编程使用的有14个16位寄存器,按其用途可分为3类:通用寄存器、段寄存器、控制寄存器。
10.通用寄存器(累加器AX 、基址寄存器BX 、计数器CX 、数据寄存器DX )高8位AH 、BH 、CH 、DH ;底8位AL 、BL 、CL 、DL
作控制标志。
状态标志CF :进位标志,ZF :零标志位,SF :符号标志位,IF :中断允许标志位 12.8084A 位时钟发生器,8282为8位地址锁存器,8086为具有三态输出的8位数据总线收发器
13.INTA 引脚24,中断响应信号,作为输出;ALE 引脚25,地址锁存允许信号,作为输出;
14.8088与8086引脚不同:1)AD15—A8的定位不同;2)引脚34的定义不同;引脚28的有效电平高低定义不同
15.8086/8088CPU 有20条地址线,可直接对1M 个存储单元进行访问。每个存储单元放一个字节(8位)数据,一个“字”占两个字节即16位,每个存储单元都有一个20位的地址,这1M 个存储单元对应的地址为00000H —FFFFFH (0—
1220 )
16.堆栈操作(1)存放指令操作数(2)保护断点和现场;每进行一次进站操作,SP 值减2,每进行一次出栈操作,SP 加2;栈底(先存),栈顶(先取) 17.存储器/IO 读时序:1)T1,IO /M 信号:从存储器读还是从I/O 设备中读数据;ALE :地址锁存信号,以使地址/数据线分开。2)T2状态,RD 由高电平变为低电平,开始进行读数据操作。
18..8086/8088有20条地址线,可直接对1 M 个存储单元进行访问。每个存储单
元存放一个字节型数据(8位),一个字占两个字节即16位,存放在两个相邻的存储单元中,高字节存放在高地址单元,低字节存放在低地址单元。且每个存储单元都有一个20位的地址,这1 M 个存储单元对应的地址为00000H~FFFFFH
19.保护断点和现场。此为堆栈的主要功能。
…
(a) 堆栈空(b) 执行PUSH AX
PUSH BX
PUSH CX 指令后
(c) 执行 POP BX
POP CX 指令后
A
19
总线读周期的时序
存储器I/O 写周期的时序
ALE 地址锁存信号。
20. CPU 中BIU 单元的地址加法器根据指令中给出的段地址和段内偏移地址,通
过将段地址乘以10H(16),即左移4位,再与段内偏移量相加得到一个20位的物
理地址,该20位的物理地址加载到20位的地址总线上,即可实现对8086/8088系统1 M 个存储单元的访问。
21.数据传送指令MOV 。指令格式及操作: MOV dst ,src ;(dst)←(src)
指令格式中的dst 表示目的操作数,src 表示源操作数 进栈指令PUSH 。指令格式及操作:
PUSH src ;(SP)←(SP)−2,((SP)+1:(SP))←(src) 出栈指令POP 。指令格式及操作: POP dest ;(dest)←((SP)+1:(SP)),(SP)←(SP)+2
ADD 加法,ADC 带进位位加,SUB 减,SBB 带进位位减,CMP 数据比较
22.过程调用指令CALL(Call a procedure)
(1) 段内直接调用。指令格式及操作:
CALL near_proc ;(SP)←(SP)-2,((SP)+1:(SP))←(IP) ;(IP)←(IP)+disp
相对位移量disp 的范围为-32 768~+32 767,占2个字节,段内直接调用指令为3字节指令
(2)段内间接调用。指令格式及操作:
A 19
CALL reg16/mem16;(SP)←(SP)-2,((SP)+1:(SP))←(IP)
;(IP)←(reg16)/(mem16)
指令的操作数是一个16位的寄存器或存储器,其中的内容是一个近过程的入口地址。
(3) 段间直接调用。指令格式及操作:
CALL far_proc;(SP)←(SP)-2, ((SP)+1:(SP))←(CS)
;(CS)←SEG far_proc
;(SP)←(SP)-2, ((SP)+1:(SP))←(IP)
;(IP)←OFFSET far_proc
(4) 段间间接调用。指令格式及操作:
CALL mem32 ;(SP)←(SP)-2, ((SP)+1:(SP))←(CS)
;(CS)←(mem32+2)
;(SP)←(SP)-2, ((SP)+1:(SP))←(IP)
;(IP)←(mem32)
23.过程返回指令RET
指令格式及操作:
1)从近过程返回:
RET ;(IP)←((SP)+1:(SP)), (SP)←(SP)+2
RET pop_value ;(IP)←((SP)+1:(SP)), (SP)←(SP)+2
;(SP)←(SP)+pop_value
2)从远过程返回:
RET ;(IP)←((SP)+1:(SP)), (SP)←(SP)+2
;(CS)←((SP)+1:(SP)), (SP)←(SP)+2
RET pop_value;(IP)←((SP)+1:(SP)), (SP)←(SP)+2
;(CS)←((SP)+1:(SP)), (SP)←(SP)+2
;(SP)←(SP)+pop_value
RET指令还允许带一个弹出值(pop_value),这是一个范围为0~64 K的立即数,通