3.1 从程序员的角度看硬件
为了体验手工汇编,下面我们就为在第2章制作的微型计算机编写一个程序吧。因为程序的作用是驱动硬件工作,所以在编写程序之前必须要了解微型计算机的硬件信息。然而真正需要了解的硬件信息只有以下7种(如图3.1所示),所以没有必要在编程时还总是盯着详细的电路图
图3.1 编写程序之前需要了解的硬件信息
[CPU(处理器)信息]
CPU的种类
时钟信号的频率
[内存信息]
地址空间
每个地址中可以存储多少比特的信息
[I/O信息]
I/O的种类
地址空间
连接着何种周边设备
可以使用哪种机器语言取决于CPU(也称处理器)的种类。所谓机器语言就是只用0和1两个二进制数书写的编程语言。即便是相同的机器语言,例如01010011,只要CPU的种类不同,对它的理解也就不同。有的CPU会把它解释成是执行加法运算,有的CPU会把它解释成是向I/O输出。这就好比同样是man这个词,有的人会理解成“人”,有的人会理解成“男人”
由于微型计算机上的CPU是Z80 CPU,所以就要使用适用于Z80 CPU的机器语言。顾名思义,机器语言就是处理器可以直接理解(与生俱来就能理解)的编程语言。机器语言有时也叫做原生代码(Native Code)
所谓时钟信号的频率,就是由时钟发生器发送给CPU的电信号的频率。表示时钟信号频率的单位是MHz(兆赫兹=100万回/秒)。我们的微型计算机使用的是2.5MHz的时钟信号,时钟信号是在0和1两个数之间反复变换的电信号,就像滴答滴答左右摆动的钟摆一样。通常把发出一次滴答的时间称为一个时钟周期
在机器语言中,指令执行时所需的时钟周期数取决于指令的类型。程序员不但可以通过累加时钟周期数估算程序执行的时间,还可以仅在特定的时间执行点亮LED(发光二极管)等操作
每个地址都标示着一个内存中的数据存储单元,而这些地址所构成的范围就是内存的地址空间。在我们的微型计算机中,地址空间为0-255,每一个地址中可以存储8比特(1字节)的指令或数据
连接着的I/O的类型,就是指连接着微型计算机和周边设备的I/O的种类。在微型计算机中,只安装了一个I/O,即上面带有4个8比特寄存器的Z80 PIO。只要用CPU控制I/O的寄存器,就可以设定I/O的功能,与周边设备进行数据的输入输出。
所谓I/O的地址空间,是指用于指定I/O寄存器的地址范围。在Z80 PIO上,地址空间为0-3,每一个地址对应一个寄存器
在内存中,每个地址的功能都一样,既可用于存储指令又可用于存储数据。而I/O不同,地址编号不同(即寄存器的类型不同),功能也就不同。在我们的微型计算机中,是这样分配Z80 PIO上的寄存器的:端口A数据寄存器对应0号地址,端口B数据寄存器对应1号地址,端口A控制寄存器对应2号地址,端口B控制寄存器对应3号地址。端口A数据寄存器和端口B数据寄存器存储的是与周边设备进行输入输出时所需的数据。其中,端口A连接用于输入数据的指拨开关,端口B连接用于输出数据的LED。而端口A控制寄存器和端口B控制寄存器则存储的是用于设定Z80 PIO功能的参数
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论