8086,8086最多有多少级中断?
8086系统的内存中,前1kB是默认用来存储中断处理程序地址的,每个程序的地址需要用4个字节来表示,因此1kB的空间能存放最多256个不同的中断类型对应的处理函数地址8086。这应该就是256个中断的来源。用8086的极大模式为例来考虑,这时主要用中断控制器8259A和8086配合处理中断问题。8259A有8条中断请求引脚(IR0~IR7),接收外来的中断类型码(就是前面256个中断中的1个)。因此单个的8259是8级中断处理器。
8086CPU的中断系统具有256个中断,每个中断用一个唯一的中断向量号标识。向量号也称为矢量号或类型号,它用一个字节表示:0~255,对应256个中断。8086的中断可以分成外部中断和内部中断两类。您也可以试试搭载了第六代智能英特尔酷睿处理器的产品,创新性的使用模式,如实感技术,姿势控制,语音识别,2D/3D影像,突破传统PC使用体验,无论办公学习、畅玩游戏或者观看超高清影像播放,均得心应手,引领产品创新。
1.分配地址编码
不管几位机,存储器永远给每个字节单元分配一个地址编码!!!
8086有20个地址线,共有2^20=1024×1024=1M个地址编码,所以,8086最大存储空间是1MByte。
8位机, 1Word=1Byte
16位机,1Word=2Byte
32位机,1Word=4Byte
所以8086,
1MByte/(2Byte/Word) =0.5MWord=512KWord
而不等于512KByte。
2.段地址和段内偏移地址
在段寄存器Rs(CS,DS,SS,ES)已经确定的情况下,段开始地址是16 x Rs,20位地址,这是1MByte存储器空间中任何16倍数开始的地址。
在指令中,
逻辑地址=Rs:16位段内偏移
物理地址=16 x Rs + 16位段内偏移
16位段内偏移,共有2^16个地址编码,所以段内最大范围是64KByte。(这是你问题的直接答案。)
8086内部都是16位寄存器,为了支持大于64KByte的储存空间,采用,利用地址加法器,把段寄存器Rs乘以16变成20位地址,之后加上16位段内偏移地址的地址生成方案。
IBM的老沃森曾经说“全球市场只需要5台计算机就够了”。所以,在40年前,Intel在设计8086时,以为20位地址就足够了,能支持1MByte存储空间,很大啊!
3.穿越后的super8086
如果让你穿越到1978年,你可能在不改变8086内部16位寄存器的情况下,只改变地址加法器,可能会设计出支持更大的存储空间的super8086,如设计出支持32MByte存储空间,有25条地址线的super8086。也可以更大!
只需要改变地址加法器,把段寄存器Rs左移9位!变成25位,之后加上16位偏移地址就行!
此时,在32MByte空间内,25位段开始地址永远是512的整数倍位置,而段内空间范围还是64KByte。
当然,现在大多数CPU或MCU方案是,32位机,采用32条地址方案,还不够?采用通过存储器管理软件的虚拟存储器空间管理方案,…。
新的声音,
到了云计算时代,世界上只需 5 片电脑云就够了!怎么可能?历史上这种模式的发声很多!