为什么要用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指向的内存单元中