上一页 1 2 3 4 5 6 ··· 9 下一页
摘要: IRQ是用来暂停当前正在运行的程序,并跳转到其他程序运行的必要机制。该机制称为中断处理。中断处理在硬件控制中担当着重要角色。因为如果没有中断处理,就有可能出现无法顺畅进行的情况。 从中断处理开始到请求中断的程序(中断处理程序)运行结束之前,被中断的程序(主程序)的处理是停止的。这种情况就类似于在处理 阅读全文
posted @ 2023-02-15 20:20 原魏薯片 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 由于用汇编语言编写程序比较麻烦,因此这里我们采取再C语言源代码中插入助记符的方式来实现。在大部分C语言的处理(编译器的种类)中,只要使用_asm{和}括起来,就可以在其中记述助记符。也就是说,这样可以编写C语言和汇编语言混合的源代码。这里我们使用微软的VisualC++来作成应用。 在 AT 兼容机 阅读全文
posted @ 2023-02-15 20:04 原魏薯片 阅读(31) 评论(0) 推荐(0) 编辑
摘要: Windows控制硬件时借助的是输入输出指令。其中具有代表性的两个输入输出指令就是IN和OUT。这些指令也是汇编语言的助记符。 IN指令和OUT指令的语法如图11-2所示。这是Pentium等x86系列CPU用的IN指令的语法。IN指令通过指定端口号的端口输入数据,并将其存储在CPU内部的寄存器中。 阅读全文
posted @ 2023-02-15 19:49 原魏薯片 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 在C语言等高级编程语言开发的Windows应用中,大家很少能接触到直接控制硬件的指令。这是因为硬件的控制是由Windows全权负责的。 不过,Windows提供了通过应用来间接控制硬件的方法。利用操作系统提供的系统调用功能就可以实现对硬件的控制。在Windows中,系统调用称为API(图11-1). 阅读全文
posted @ 2023-02-15 19:30 原魏薯片 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 在多线程处理中,用汇编语言记述的代码每运行1行,处理都有可能切换到其他线程(函数)中。因而,设 MyFuncl 函数在读出counter 的数值 100 后,还未来得及将它的2倍值 200写人 counter时,正巧 MyFunc2 函数读出了 counter的数值 100,那么结果就会导致 cou 阅读全文
posted @ 2023-02-14 21:40 原魏薯片 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 条件分支的实现方法同循环处理的实现方法类似,使用的也是cmp指令和跳转指令。 条件分支就是利用这些指令来实现的。代码清单10-11是,根据变量a的值来调用不同函数(MySub3函数)的从语言源代码。结果如代码清单10-12所示。 代码清单 10-12 中用到了三种跳转指令,分别是比较结果小时跳转的 阅读全文
posted @ 2023-02-14 21:33 原魏薯片 阅读(49) 评论(0) 推荐(0) 编辑
摘要: C语言程序的流程控制,代码清单10-8。 C语言的for语句是通过括号中指定循环计数器的初始值(i=0)、循环的继续条件(i<10)、循环计数器的更新(i++)这3种形式来进行循环处理的。与此同对,在汇编语言的源代码中,循环通过比较指令(cmp)和跳转指令(jl来实现)。 代码清单10-10是按照代 阅读全文
posted @ 2023-02-14 21:12 原魏薯片 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 在代码清单10-6中定义了10个局部变量。这是为了表示存储局部变量的不仅仅是栈,还是寄存器。为了确保c1~c10所需的领域,寄存器空闲时就使用寄存器,寄存器空间不足就使用栈。 x86 系列 CPU拥有的寄存器中,程序可以操作的有十几个。其中空闲的,最多也只有几个。因而,局部变量数目很多的时候,可分配 阅读全文
posted @ 2023-02-14 21:01 原魏薯片 阅读(15) 评论(0) 推荐(0) 编辑
摘要: C语言中,在函数外部定义的变量 称为全局变量,在函数内部定义的变量称为局部变量。 代码清单10-6的C语言源代码中定义了初始化(设定了初始值)的a1~a5这5个全局变量,以及没有初始化(没有设定初始值)的b1~b5这5个全局变量,此外还定义了c1~c10这10个局部变量,且分别给 各变量赋了值。 将 阅读全文
posted @ 2023-02-14 20:53 原魏薯片 阅读(16) 评论(0) 推荐(0) 编辑
摘要: ebp 寄存器的值在(1)中人栈,在(5)中出栈。这主要是为了把函数中用到的 ebp 寄存器的内容,恢复到函数调用前的状态。在进入函数处理之前,无法确定 ebp 寄存器用到了什么地方,但由于函数内部也会用到 ebp 寄存器,所以就暂时将该值保存了起来。CPU 拥有的寄存器是有数量限制的。在函数调用前 阅读全文
posted @ 2023-02-14 20:41 原魏薯片 阅读(13) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 9 下一页