上一页 1 2 3 4 5 6 ··· 9 下一页
摘要: 在了解 IO输人输出及中断处理的同时,还希望大家记住另外一个机制,这就是 DMA ( Direct Memory Access )。DMA 是指在不通过 CPU 的情况下,外围设备直接和主内存进行数据传送。磁盘等都用到了这个 DMA机制。通过利用 DMA,大量数据就可以在短时间内转送到主内存。之所以 阅读全文
posted @ 2023-02-08 09:07 嘎嘎鸭~ 阅读(70) 评论(0) 推荐(0)
摘要: 在主程序运行的过程中,中断发生的频率有多大呢?实际上,大部分的外围设备,都会频繁地发出中断请求。其原因就是为了实时处理从外围设备输人的数据。虽然不利用中断也可以从外围设备输入数据。但那种情况下,主程序就必须要持续不断地检测外围设备是否有数据输人。 由于外围设备有很多个,因此就有必要按照顺序来调查。按 阅读全文
posted @ 2023-02-08 09:05 嘎嘎鸭~ 阅读(37) 评论(0) 推荐(0)
摘要: 让我们再来看一下图 11-4。在“I/O 范围”下面有一个“IRQ”项目,对应的值是 0x00000006 ( 06)。IRQ(Iterrupt Request) 是中断请求的意思。那么,IQ 主要是用来做什么的呢? IRQ 是用来暂停当前正在运行的程序,并跳转到其他程序运行的必要机制。该机制称为中 阅读全文
posted @ 2023-02-08 09:04 嘎嘎鸭~ 阅读(89) 评论(0) 推荐(0)
摘要: 首先让我们利用 IN 指令和 OUT 指令,来进行一个直接控制硬件的试验。假设该试验的目的是让计算机内配置的蜂鸣器(小喇叭)发音。虽然蜂鸣器内置在计算机内部,但其本身也是外围设备的一种因为就算是把蜂鸣器取出,对计算机主机也不会有什么影响。 由于用汇编语言编写程序比较麻烦,因此这里我们采取在 C 语言 阅读全文
posted @ 2023-02-08 08:59 嘎嘎鸭~ 阅读(100) 评论(0) 推荐(0)
摘要: Window 控制硬件时借助的是输入输出指令。其中具有代表性的两个输入输出指令就是IN 和 OUT。这些指令也是汇编语言的助记符IN 指令和 OUT 指令的语法如图 11-2 所示。这是 Pentium 等x86系列 CPU用的IN指令和 OUT 指令的语法。IN 指令通过指定端口号的端口输人数据, 阅读全文
posted @ 2023-02-07 20:56 嘎嘎鸭~ 阅读(1828) 评论(0) 推荐(0)
摘要: 在用C语言等高级编程语言开发的 Windows 应用中,大家很少能接触到直接控制硬件的指令。这是因为硬件的控制是由 Windows 全权负责的。 不过,Windows 提供了通过应用来间接控制硬件的方法。利用操作系统提供的系统调用功能就可以实现对硬件的控制。在 Windows 中,系统调用称为API 阅读全文
posted @ 2023-02-07 20:52 嘎嘎鸭~ 阅读(61) 评论(0) 推荐(0)
摘要: 通过对 C语言源代码和汇编语言源代码进行比较,想必大家对程序是怎样跑起来的”又有了更深的理解。而且,从汇编语言源代码中获得的知识,在某些情况下对查找 bug 的原因也是有帮助的。 让我们来看个示例。代码清单 10-13 是更新全局变量 counter 的值的C语言程序。MyFunc1 函数和MyFu 阅读全文
posted @ 2023-02-07 20:48 嘎嘎鸭~ 阅读(32) 评论(0) 推荐(0)
摘要: 下面让我们来看一下条件分支的实现方法。条件分支的实现方法同循环处理的实现方法类似,使用的也是 cmmp 指令和跳转指令,这一点估计大家也预料到了。 没错,条件分支就是利用这些指令来实现的。不过,为了以防万我们来确认一下。代码清单 10-11 是,根据变量 a 的值来调用不同函数(MySubl 函数、 阅读全文
posted @ 2023-02-07 20:42 嘎嘎鸭~ 阅读(98) 评论(0) 推荐(0)
摘要: 接下来,让我们继续解析汇编语言的源代码,看一下 for 循环及 if条件分支等 C 语言程序的流程控制是如何实现的 。代码清单 10-8 是将局部变量i作为循环计数器“连续进行 10 次循环的 C 语言源代码。在for 语句中,调用了不做任何处理的 MySub 函数。这里我们把代码清单10-8 转换 阅读全文
posted @ 2023-02-07 20:40 嘎嘎鸭~ 阅读(137) 评论(0) 推荐(0)
摘要: 为什么局部变量只能在定义该变量的函数内进行参阅呢?这是因为,局部变量是临时保存在寄存器和栈中的。正如本章前半部分讲的那样,函数内部利用的栈,在函数处理完毕后会恢复到初始状态,因此局部变量的值也就被销毁了,而寄存器也可能会被用于其他目的。因此,局部变量只是在函数处理运行期间临时存储在寄存器和栈上。 在 阅读全文
posted @ 2023-02-07 20:22 嘎嘎鸭~ 阅读(70) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 ··· 9 下一页