1700413771
1700413772
1700413774
计算机是怎样跑起来的 3.1 从程序员的角度看硬件
1700413775
1700413776
为了体验手工汇编,下面我们就为在第2章制作的微型计算机编写一个程序吧。因为程序的作用是驱动硬件工作,所以在编写程序之前必须要了解微型计算机的硬件信息。然而真正需要了解的硬件信息只有以下7种(如图3.1所示),所以没有必要在编程时还总是盯着详细的电路图
1700413777
1700413778
图3.1 编写程序之前需要了解的硬件信息
1700413779
1700413780
1700413781
1700413782
1700413783
[CPU(处理器)信息]
1700413784
1700413785
CPU的种类
1700413786
1700413787
时钟信号的频率
1700413788
1700413789
[内存信息]
1700413790
1700413791
地址空间
1700413792
1700413793
每个地址中可以存储多少比特的信息
1700413794
1700413795
[I/O信息]
1700413796
1700413797
I/O的种类
1700413798
1700413799
地址空间
1700413800
1700413801
连接着何种周边设备
1700413802
1700413803
可以使用哪种机器语言取决于CPU(也称处理器)的种类。所谓机器语言就是只用0和1两个二进制数书写的编程语言。即便是相同的机器语言,例如01010011,只要CPU的种类不同,对它的理解也就不同。有的CPU会把它解释成是执行加法运算,有的CPU会把它解释成是向I/O输出。这就好比同样是man这个词,有的人会理解成“人”,有的人会理解成“男人”
1700413804
1700413805
由于微型计算机上的CPU是Z80 CPU,所以就要使用适用于Z80 CPU的机器语言。顾名思义,机器语言就是处理器可以直接理解(与生俱来就能理解)的编程语言。机器语言有时也叫做原生代码(Native Code)
1700413806
1700413807
所谓时钟信号的频率,就是由时钟发生器发送给CPU的电信号的频率。表示时钟信号频率的单位是MHz(兆赫兹=100万回/秒)。我们的微型计算机使用的是2.5MHz的时钟信号,时钟信号是在0和1两个数之间反复变换的电信号,就像滴答滴答左右摆动的钟摆一样。通常把发出一次滴答的时间称为一个时钟周期
1700413808
1700413809
在机器语言中,指令执行时所需的时钟周期数取决于指令的类型。程序员不但可以通过累加时钟周期数估算程序执行的时间,还可以仅在特定的时间执行点亮LED(发光二极管)等操作
1700413810
1700413811
每个地址都标示着一个内存中的数据存储单元,而这些地址所构成的范围就是内存的地址空间。在我们的微型计算机中,地址空间为0-255,每一个地址中可以存储8比特(1字节)的指令或数据
1700413812
1700413813
连接着的I/O的类型,就是指连接着微型计算机和周边设备的I/O的种类。在微型计算机中,只安装了一个I/O,即上面带有4个8比特寄存器的Z80 PIO。只要用CPU控制I/O的寄存器,就可以设定I/O的功能,与周边设备进行数据的输入输出。
1700413814
1700413815
所谓I/O的地址空间,是指用于指定I/O寄存器的地址范围。在Z80 PIO上,地址空间为0-3,每一个地址对应一个寄存器
1700413816
1700413817
在内存中,每个地址的功能都一样,既可用于存储指令又可用于存储数据。而I/O不同,地址编号不同(即寄存器的类型不同),功能也就不同。在我们的微型计算机中,是这样分配Z80 PIO上的寄存器的:端口A数据寄存器对应0号地址,端口B数据寄存器对应1号地址,端口A控制寄存器对应2号地址,端口B控制寄存器对应3号地址。端口A数据寄存器和端口B数据寄存器存储的是与周边设备进行输入输出时所需的数据。其中,端口A连接用于输入数据的指拨开关,端口B连接用于输出数据的LED。而端口A控制寄存器和端口B控制寄存器则存储的是用于设定Z80 PIO功能的参数
1700413818
1700413819
1700413820
[
上一页 ]
[ :1.700413771e+09 ]
[
下一页 ]