上一页 1 2 3 4 5 6 ··· 9 下一页
摘要: 在主程序运行的过程中,中断发生的频率有多大呢?实际上,大部分的外围设备,都会频繁地发出中断请求。其原因就是为了实时处理从外围设备输入的数据。虽然不利用中断也可以从外围设备输入数据。但那种情况下,主程序就必须要持续不断地检测外围设备是否有数据输入。由于外围设备有很多个,因此就有必要按照顺序来调查。按照 阅读全文
posted @ 2023-02-08 10:04 濒临物种仙女 阅读(31) 评论(0) 推荐(0)
摘要: IRQ是用来暂停当前正在运行的程序,并跳转到其他程序运行的必要机制。该机制称为中断处理。中断处理在硬件控制中担当着重要角色。因为如果没有中断处理,就有可能出现处理无法顺畅进行的情况。从中断处理开始到请求中断的程序(中断处理程序)运行结束之前,被中断的程序(主程序)的处理是停止的。这种情况就类似于在处 阅读全文
posted @ 2023-02-08 10:03 濒临物种仙女 阅读(16) 评论(0) 推荐(0)
摘要: 在AT兼容机中,蜂鸣器的默认端口号是61H(末尾的H,表示的是十六进制数(Hexadecimal)的意思)。用IN指令通过该端口号输入数据,并将数据的低2位设定为ON,然后再通过该端口号用OUT指令输出数据,这时蜂鸣器就会响起来。采用同样的操作方法,将数据的低2位设定为OFF并输出后,蜂鸣器就停止了 阅读全文
posted @ 2023-02-08 09:59 濒临物种仙女 阅读(67) 评论(0) 推荐(0)
摘要: 上图是IN指令和OUT指令的语法 上图是数据传递 阅读全文
posted @ 2023-02-08 09:54 濒临物种仙女 阅读(63) 评论(0) 推荐(0)
摘要: 在用C语言等高级编程语言开发的Windows应用中,大家很少能接触到直接控制硬件的指令。这是因为硬件的控制是由Windows全权负责的。不过,Windows提供了通过应用来间接控制硬件的方法。 利用操作系统提供的系统调 用功能就可以实现对硬件的控制。在Windows中,系统调用称为API(图11-1 阅读全文
posted @ 2023-02-08 09:50 濒临物种仙女 阅读(23) 评论(0) 推荐(0)
摘要: 代码清单10-12中用到了三种跳转指令,分别是比较结果小时跳转的jle (jump on less or equal)、大时跳转的jge (jump on greater orequal)、不管结果怎样都无条件跳转的jmp。在这些跳转指令之前还有用来比较的cmp指令,比较结果被保存在了标志寄存器中。 阅读全文
posted @ 2023-02-08 09:42 濒临物种仙女 阅读(17) 评论(0) 推荐(0)
摘要: 接下来,让我们继续解析汇编语言的源代码,看一下for循环及if条件分支等C语言程序的流程控制是如何实现的。代码清单10-8是将局部变量i作为循环计数器 连续进行10次循环的C语言源代码。在for语句中,调用了不做任何处理的MySub函数。这里我们把代码清单10-8转换成汇编语言,然后仅把相当于for 阅读全文
posted @ 2023-02-08 09:40 濒临物种仙女 阅读(23) 评论(0) 推荐(0)
摘要: 函数内部利用的栈,在函数处理完毕后会恢复到初始状态,因此局部变量的值也就被销毁了,而寄存器也可能会被用于其他目的。因此,局部变量只是在函数处理运行期间临时存储在寄存器和栈上。在代码清单10-6中定义了10个局部变量。这是为了表示存储局部变量的不仅仅是栈,还有寄存器。为确保cl~c10所需的领域,寄存 阅读全文
posted @ 2023-02-08 09:36 濒临物种仙女 阅读(22) 评论(0) 推荐(0)
摘要: 在C语言中,在函数外部定义的变量称为全局变量,在函数内部定义的变量称为局部变量。全局变量可以参阅源代码的任意部分,而局部变量只能在定义该变量的函数内进行参阅。 阅读全文
posted @ 2023-02-08 09:34 濒临物种仙女 阅读(19) 评论(0) 推荐(0)
摘要: 接下来,让我们透过执行AddNum函数的源代码部分,来看一下参数的接收、返回值的返回等机制(代码清单10-5)。 ebp寄存器的值在(1)中入栈,在(5)中出栈。这主要是为了把函数中用到的ebp寄存器的内容,恢复到函数调用前的状态。在进入函数处理之前,无法确定ebp寄存器用到了什么地方,但由于函数内 阅读全文
posted @ 2023-02-08 09:30 濒临物种仙女 阅读(22) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 ··· 9 下一页