8086学习(四)中断

 

为什么要用IO接口?

答:四个不匹配:速平格时,就这样记了,没法记的。针对这几个不匹配,用不同的方法,例如设置缓冲以匹配速度,设置电平转换电路,设置格式转换电路,设置时序控制电路等

缓冲器与锁存器各用在什么地方?

很显然了,缓冲器用于总线上,起到缓冲作用,提高总线驱动能力(电平匹配)

锁存器具有暂存数据的能力,

缓存器74L245的工作原理大致是就好像仅仅给总线设置了一个开关,当然,他有提高电平(总线驱动能力的作用)

大致就是如此了。1G和2G各分一半,三态门被描述为三态缓冲单元。这是74L244,74L245支持双态传送:

问:什么是IO端口?

答:传送信息时,要传送三大信息:数据信息,状态信息和控制信息,会送入不同寄存器中,通常叫这些寄存器和它们的控制电路统称为I/O端口。这就是IO,主要就是寄存器。一般接口电路可设置数据端口,状态端口,命令端口,这些都是端口。

两种编址方法:存储器影像寻址方式,在8086CPU中一般采用I/O单独编址方式。

总线的知识点比较少,CPU与外设的传输方式主要有三种:程序控制方式,中断方式,DMA方式。

这是锁存器示意图:

问:什么是总线?

将各个部件之间传送信息的公共通路称为总线。总线分三类:片级总线(由芯片脚引出的总线),系统总线(各个板卡之间的插槽,线),外部总线(通信总线,例如USB线)。

简要介绍一下各总线吧,

PC总线,最开始的总线,也是超多的接口不必说,ISA总线,PC升级兼容线,ISA总线传输率仍然也就是4G水平,PCI总线来了,5G水准,拉线够长。

问:给中断一个简单定义吧,一直没有什么定义。

答:由于微处理器内部事件或外部请求,引起CPU暂停正在运行的程序,转而执行请求中断的外设(或内部

的中断服务子程序,中断服务程序执行完毕,再返回被中止的程序,这一过程称为中断。

可屏蔽中断有INTR引入,在未响应之前一直处于高电平。可由INTA#屏蔽。

不可屏蔽中断由NMI引入,上升沿之后维持两个时钟周期的高电平有效。

CLI,清除中断标志位,STI,设置中断标志位

INT n,立即触发中断类型号代表的指令。

对于外部硬件可屏蔽中断而言CPU在每条指令的最后一个T周期去检测INTR引脚。

中断入口地址也就是程序地址,中断向量就是中断序号,内存中专门开辟的一个区域。

CPU相应中断有三个条件:外设提出中断申请,本中断位未屏蔽,中断允许。

可屏蔽中断处理过程可分为以下:

中断请求,中断响应,保护现场,转入执行中断服务子程序,恢复现场中断返回。

CPU在响应外部中断,到转入中断服务子程序这一过程中先从数据总线上读取中断类型号,存入内部暂存器,将标志寄存器PSW入栈并清空if,屏蔽其他中断,保护断点,入栈IP和CS,找到中断向量表,执行程序,这里它没有保护普通寄存器。需要自己存入普通寄存器,其实当参数用的话,根本不用存。中断服务结束后,弹出PSW,IP和CS,继续主程序的执行。

这里有一个问题是,进入中断后,CPU自动屏蔽中断,如果实现中断嵌套,就要自己开中断STI。

8086中断源分为中断和异常,外部叫中断(外中断,硬中断),内部叫异常(内中断,软中断),中断是由硬件引起的。

中断分为可屏蔽中断和不可屏蔽中断

异常分为故障(除0),陷阱(INT n),中止(严重故障,多编程出错)

INTR类型码从20H到0FFH,内中断是从0开始的一部分。

8086在主存最低段存有1K字节的中断向量表,保持256个中断服务入口地址。

门描述符是用来描述控制转移的入口点,任务内特权级的改变和任务间的切换都是通过门描述符实现的。

任务门用于任务之间切换,中断门和陷阱门是用来描述中断和异常的入口。门描述符用于高阶CPU了,8086直接获得地址。

IDT中获取对应的门描述符,看来是存在IDT中。保护模式中断的话,也是一样的。。。

中断表每个类型号占4字节,高2字节存放中断入口地址的段地址,低2字节存放段内偏移地址。

建立中断向量表

PUSH ES

MOV AX, 0

MOV ES, AX 

MOV DI, 54H ;15*4

MOV AX, OFFSET POUT15

CLD

STOSW ;把AX存储的东西存入DI的地址中

MOV AX, SEG ROUT15 ; 哇真巧

STOSW 

POP ES

不可屏蔽中断自动获得中断类型号2

除0获得0,溢出获得4

单步中断获得1,断点中断获得3

可屏蔽中断是数据总线往里边送。当然了,CPU先发出两个INTA#信号。

收到第二个信号后,才通过数据线开送。

 

每天一个小知识点:

LOOP汇编指令由CX指定循环多少次。

IN AL,21H;表示从21H端口读取一字节数据到AL

JZ表示零标志为1就跳转

Test命令将两个操作数进行逻辑与运算,并根据运算结果设置相关的标志位。但是,Test命令的两个操作数不会被改变。运算结果在设置过相关标记位后会被丢弃。

INC 指令功能 目标操作数+1 INC指令只有1个操作数,它将指定的操作数的内容加1,再将结果送回到该操作数。INC指令将影响SF,AF,ZF,PF,OF标志

cld相对应的指令是std,二者均是用来操作方向标志位DF(Direction Flag)。cld使DF 复位,即是让DF=0,std使DF置位,即DF=1.这两个指令用于串操作指令中。通过执行cld或std指令可以控制方向标志DF,决定内存地址是增大(DF=0,向高地址增加)还是减小(DF=1,向地地址减小)。

STOSB、STOSW和STOSD指令:把AL/AX/EAX的内容存储到EDI指向的内存单元中

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值