摘要: 如何才能让计算机思考呢?我们一边用C语言制作《猜拳游戏》,一边来尝试各种思考方式。如果这个思考过程能直接用程序来表现的话,那么就能实现让计算机思考了(图12-2)。 该思考过程用程序来表示的话,就如代码清单2-1所示。 用随机数决定出拳的方式,同随意而定的思考方式是相同的。表12-1是该程序运行10 阅读全文
posted @ 2023-02-15 21:20 原魏薯片 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 程序就如同是由计算机执行的各种指令罗列起来的文章。计算机内部的CPU,通过对该文章的内容进行解析和运行,来控制连接到计算机的各种外围设备。具体来说,控制就是指CPU和各种设备之间配合进行数据的输入输出处理。 程序的使用目的大体可以划分为两类。一类是大家作为工具使用的程序。另外一个使用母的是用程序来代 阅读全文
posted @ 2023-02-15 21:04 原魏薯片 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 如果用一句话来简单地概括该机制,那就是显示器中显示的信息一直存储在某内存中。该内存称为VRAM(Video RAM)。在程序中,只要往VRAM中写入数据,该数据就会在显示器中显示出来。实现该功能的程序,是由操作系统或BIOS提供,并借助中断来进行处理的。 在MS-DOS时代,对大部分计算机来说,VR 阅读全文
posted @ 2023-02-15 20:56 原魏薯片 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 在了解 I/O 输入输出及中断处理的同时,还希望大家记住另外一个机制,这就是 DMA(Direct Memory Access )。DMA 是指在不通过 CPU 的情况下,外围设备直接和主内存进行数据传送。磁盘等都用到了这个 DMA机制。通过利用 DMA,大量数据就可以在短时间内转送到主内存。之所以 阅读全文
posted @ 2023-02-15 20:50 原魏薯片 阅读(16) 评论(0) 推荐(0) 编辑
摘要: 由于外围设备有很多个,因此就有必要按照顺序来调查。按照顺序调查多个外围设备的状态称为轮询。对几乎不产生中断的系统来说,轮询是比较合适的处理。不过,对计算机来说就不适合了。举例来说,假如主程序正在调查是否有鼠标输人,这时如果发生了键盘输人的话,该如何处理呢?结果势必会导致键盘输入的文字无法实时地显示在 阅读全文
posted @ 2023-02-15 20:33 原魏薯片 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 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) 编辑