计算机的定时和计数

计算机的定时和计数通常是一回事。 提供定时和计数能力的芯片是 8253/8254 三个计数器结构相同,相互独立 CLK 外部时钟信号 Gate 门控制信号 Out 对外输出信号 CPU 通过数据总线控制总线和 8253 挂接。 $A_1$ $A_0$ 功能 0 0 Counter0 0 1 Counter1 1 0 Counter2 1 1 控制端 对 8253/8254 编程 写入方式字 写入初值 $D_7$ $D_6$ $D_5$ $D_4$ $D_3$ $D_2$ $D_1$ $D_0$ 计数器 读写格式 工作方式 数制 读写格式 00 锁存当前值 01 写低8位,高8位置0 10 写高8位,低8位置0 11 先写低8位,再写高8位 数制: 0 二进制 1 BCD 当初值为类似 2000 时,使用 BCD 有效提高写入速度(低8位为0,高8位为 0010 0000) 计算初值 $$ \text{定时时间} T_{out} = \text{计数初值}n \times 计数时钟周期 T_{CLK} $$ $$ \text{计数初值} n = \frac{T_{out}}{T_{CLK}} = \frac{f_{CLK}}{f_{out}} $$ 写入端口 使用 IN 和 OUT 命令进行编程...

2024/01/10 · updated 2024/01/10 · 166 words · Finley Ge

中断和8259A中断控制器

在之前学习计算机组成原理的时候就曾经研究过中断: TD-CMA下计算机组成实验:带中断的复杂模型机 | Finley’s Blog 今年学习了汇编和微机接口,这是一篇对中断机制和中断控制器 8259A 的总结性文章。 术语 中断:暂停当前程序,转去处理异常或外设请求程序 主程序 中断服务程序 ISR: Interrupt Service Routine 断点:中断时,主程序中被终止指令的下一条指令地址,被压入栈中进行保护。 中断源:引发中断的事件或设备。 内部中断: CPU执行程序错误,例如除法错 外部中断:CPU外部的中断,外设提出的中断,如电源故障 中断类型号:每个中断源分配一个编号,即中断类型号 中断接口:实现中断管理的逻辑电路被称为中断接口。8259A 可编程中断控制器 中断识别:CPU确定哪一个中断源发出中断请求的过程。找到中断源对应的中断服务程序的入口地址,转去进行处理 查询法: 软件查询,确定中断源 硬件法:硬件法,由可编程中断寄存器提供中断类型号 中断向量:中断服务程序的入口地址: CS:IP 中断向量表:将系统中的所有中断向量集中起来,按照中断类型号从小到大的顺序存放在内存某区域。(数据段0段中) 中断响应:收到中断请求,CPU满足响应条件则进入中断响应周期。接受响应的条件 CPU当前指令执行结束 没有更高级的中断请求正在执行 CPU处于开中断状态,(IF = 1) 改变 IF 的状态: STI 开中断 SeT Interrupt CLI 关中断 CLear Interrupt 中断响应周期需要完成的动作:(CPU 硬件自动完成) 清IF, TF标志 将 FLAGS、CS、IP 压桟保存 查找中断向量表,获得 ISR 入口地址,转而去执行 ISR 8086/8088 微机中断系统 8 位二进制数表示一个中断类型号 一共支持 256 个中断源, 放置在 0 数据段的 0 ~ 3FFH (1KB)...

2024/01/08 · updated 2024/01/10 · 417 words · Finley Ge

在Linux环境下的汇编语言测试环境的搭建

学汇编语言肯定还是要练习的,ZJUT 的汇编课程使用的汇编语言是微软的 MASM。 最理想的实验环境就是 DOS 系统。 Dos 模拟器 哥们的这篇文章中用的 dosbox 其实并不好用: 例如无法迅速调整界面字体大小,导致在高分辨环境下十分瞎眼。 笔者推荐使用 dosbox-staging. 在 Archlinux 下安装: 1 paru -S dosbox-staging-bin 开箱即用,十分方便。 配置 下载常用工具 (上述连接也是哥们的服务,笔者比较懒hhh) 解压到某一个文件夹中,例如笔者是 ~/Learn/asm/tools Dos模拟器需要手动挂载盘符,而且没有添加 PATH 变量的情况下十分甚至九分的难用。 在配置文件 ~/.copfig/dosbox-staging.conf 最后(autoexec块)后加上 1 2 3 MOUNT C: path/to/your/dir C: SET PATH=%PATH%;C:\TOOLS 上述命令假设你的工作目录下的tools目录中为masm.exe等 DOS 系统不区分大小写 除此之外 masm 在进行汇编以及 link 进行链接的时候还需要敲一堆回车,为了方便笔者编写了以下的 bat 批处理文件 1 2 3 4 5 echo compile and run %1 masm %1.asm %1.obj nul.lst nul.crf link %1.obj, %1.exe, , , , %1....

2023/12/04 · updated 2023/12/13 · 118 words · Finley Ge
晋ICP备2022008114