当前位置:网站首页 > R语言数据分析 > 正文

ldrb指令什么意思(ldrneb指令)



外部硬件中断

从处理器外部来的中断信号,外部硬件中断通过两根信号线引入处理器内部,8086处理器的信号线为NMI和INTR

  • 非屏蔽中断(NMI),不会被阻断和屏蔽的中断,intel处理器规定NMI中断信号从0跳变到1后必须维持4个以上时钟周期才有效。实模式下NMI的中断号为2
  • 可屏蔽中断,intel处理器允许256个中断,8259芯片(中断控制器)提供其中15个
    在这里插入图片描述

在8259内部有中断屏蔽寄存器IMR,对应8个引脚,决定了该引脚能够将中断信号传给处理器。中断能否被处理还要看标志寄存器的IF位,通过cli和sti设置

中断向量表(实模式)

实模式下,中断处理程序的入口点在内存物理地址的0x00000到0x003ff,共1KB空间,即中断向量表

每个中断在中断向量表中占双字
在这里插入图片描述
处理中断的过程:

  • 保护断点现场,将标志寄存器FLAGS压栈,清除IF(中断标志)和TF(陷阱标志),将CS和IP压栈
  • 执行中断程序,将得到的终端号乘4在中断向量表中,取出中断程序的偏移地址和段地址,传送CS和IP。此时由于IF标志被清除,因此在中断处理过程中,处理器将不再响应中断
  • 返回断点继续执行,中断处理程序的最后一条指令为iret,处理器依次出栈CS和IP,标志寄存区

中断随时可能会发生,因而中断向量表是BIOS在计算启动时完成的

实时时钟

外围设备控制芯片ICH中,集成了实时时钟电路RTC,和静态存储器CMOS RAM

日期和时间信息是保存在 CMOS RAM 中的,通常有 128 字节,而日期和时间信息只占了一小部分容量,其他空间则用于保存整机的配置信息,比如各种硬件的类型和工作参数、开机密码和辅助存储设备的启动顺序等。

RTC 芯片由一个振荡频率为 32.768kHz 的石英晶体振荡器(晶振)驱动,经分频后,用于对CMOS RAM 进行每秒一次的时间刷新在这里插入图片描述
CMOS RAM 的访问,需要通过两个端口来进行。 0x70 或者 0x74 是索引端口,用来指定 CMOS RAM 内的单元; 0x71 或者 0x75 是数据端口,用来读写相应单元里的内容

 

从很早的时候开始,端口 0x70 的最高位(bit 7)是控制 NMI 中断的开关,为 0 时,允许 NMI 中断到达处理器,为 1 时,则阻断所有的 NMI 信号,其他 7 个比特,即 0~6 位,
则实际上用于指定 CMOS RAM 单元的索引号,尽管端口 0x70 的位 7 不是中断信号,但它能控制与非门的输出,决定真正的NMI 中断信号是否能到达处理器。
在早期的系统中,计算机的制造成本很高,为了最大化地利用硬件资源,导致出现这种稀奇古怪的做法,
在这里插入图片描述

CMOS RAM 中保存的日期和时间,通常是以二进制编码的十进制数(Binary Coded Decimal,BCD)

单元 0x0A~0x0D 不是普通的存储单元,而被定义成 4 个寄存器的索引号,也是通过 0x70 和0x71 这两个端口访问的。这 4 个寄存器用于设置实时时钟电路的参数和工作状态
寄存器 A 和 B 用于对 RTC 的功能进行整体性的设置,具体参考P156
在这里插入图片描述
每次当中断实际发生时,可以在程序(中断处理过程)中读寄存器 C 的内容来检查中断的原因。该寄存器还有一个特点,就是每次读取它后,所有内容自动清零。而且,如果不读取它的话(换句话说,相应的位没有清零),同样的中断将不再产生。

程序目标:RTC芯片定时发出中断,执行代码读取CMOS RAM信息

用户程序

加载程序不变

注意:处理器在设计的时候就规定,当遇到修改段寄存器 SS 的指令时,在这条指令和下一条指令执行完毕期间,禁止中断,以此来保护堆栈

计算机启动后, RTC 芯片的中断号默认是 0x70

 

软中断是由 int 指令引起的中断处理

 

int3 是断点中断指令
int3 和 int 3 不是一回事
into 是溢出中断指令,当处理器执行这条指令时,如果标志寄存器的 OF 位是 1,那么,将产生 4 号中断。否则什么也不做

BIOS中断

  • 每个外部设备接口,包括各种板卡,如网卡、显卡、键盘接口电路、硬件控制器等,都有自己的只读存储器(Read Only Memory, ROM),类似于 BIOS 芯片,这些 ROM 中提供了它自己的功能调用例程,以及本设备的初始化代码。按照规范,前两个单元的内容是 0x55 和 0xAA,第三个单元是本 ROM 中以 512 字节为单位的代码长度;从第四个单元开始,就是实际的 ROM 代码。
  • 从内存物理地址 A0000 开始,到 FFFFF 结束,有相当一部分空间是留给外围设备的。如果设备存在,那么,它自带的 ROM 会映射到分配给它的地址范围内
  • BIOS 程序会以 2KB 为单位搜索内存地址 C0000~E0000 之间的区域。当发现某个区域的头两个字节是 0x55 和 0xAA 时,意味着该区域有 ROM 代码存在。接着,它对该区域做累加和检查,看结果是否和第三个单元相符。如果相符,就从第四个单元进入。这时,处理器执行的是硬件自带的程序指令,这些指令初始化外部设备的相关寄存器和工作状态,最后,填写相关的中断向量表,使它们指向自带的中断处理过程。

用户程序

到此这篇ldrb指令什么意思(ldrneb指令)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
                            

版权声明


相关文章:

  • ewma模型和garch(ewma模型和garch的区别)2025-03-12 22:27:10
  • fairseq教程(fairness)2025-03-12 22:27:10
  • 一级word一级二级三级标题是什么意思(word一级二级三级标题字号)二级word一级二级三级标题是什么意思(word一级二级三级标题字号)三级四级word一级二级三级标题是什么意思(word一级二级三级标题字号)字号(一级word一级二级三级标题是什么意思(word一级二级三级标题字号)二级word一级二级三级标题是什么意思(word一级二级三级标题字号)三级四级word一级2025-03-12 22:27:10
  • treeplan破解版(treeplan下载)2025-03-12 22:27:10
  • rang me up什么意思(rang me up的意思)2025-03-12 22:27:10
  • chrony服务端配置(chronyd配置)2025-03-12 22:27:10
  • redhat操作系统多少钱(redhat操作系统安装步骤)2025-03-12 22:27:10
  • rbac权限模型例子(rbac权限控制)2025-03-12 22:27:10
  • 批处理 ren(批处理ren命令)2025-03-12 22:27:10
  • vmwarepro密钥(vmwareworkstationpro15密钥)2025-03-12 22:27:10
  • 全屏图片