标志内存或I/O中存储单元的数字叫做“地址”。
CPU中的标志寄存器有什么作用?
用于在运算指令执行后,存储运算结果的某些状态。
从程序员的角度看硬件
CPU:种类,时钟信号的频率。可以使用哪种机器语言取决于CPU的种类。
内存信息:地址空间,每个地址中可以存储多少比特的信息。每个地址都标志着一个内存中的数据存储单元,而这些地址所构成的范围就是内存的地址空间。
I/O信息:I/O的种类,地址空间,连接着何种周边设备。只要用CPU控制I/O的寄存器,就可以设定I/O的功能,与周边设备进行数据的输入输出。
在内存中,每个地址的功能都一样,既可用于存储指令又可用于存储数据。而I/O则不同,地址编码不同(即寄存器类型不同),功能也就不用。
机器语言和汇编语言
汇编语言的语法十分简单,以至于只有一个语法,即把“标签”,“操作码(指令)”和“操作数(指令的对象)”并排写在一行上。
标签的作用是为该行代码对应的内存地址起一个名字。
操作码就是表示“做什么”指令。按功能这些指令可以分成运算、与内存的输入输出和与I/O的输入输出三类。
操作数表示的是指令执行的对象。CPU的寄存器、内存地址、I/O地址或者直接给出的数字。
汇编语言的语法和英语祈使句很像。构成机器语言的是二进制数;而在汇编语言中,用十进制数和十六进制数记录数据。
Z80 CPU的寄存器结构
与I/O的寄存器不同,CPU的寄存器不仅能存储数据,还具备对数据进行运算的能力。A、B、C、D等字母是寄存器的名字。寄存器的用途取决于它的类型,有的指令只能将特定的寄存器指定为操作数。
像A寄存器也叫做累加器,是运算的核心。F寄存器也叫做标志寄存器,用于存储运算结果的状态,比如是否发生了进位,数字大小的比较结果等。PC寄存器也叫做程序指针,存储着指向CPU接下来要执行的指令的地址。
操作数必须是已存储在CPU寄存器中的数字,这是汇编语言的规定。
追踪程序的运行过程
用汇编语言编写的程序是不能直接运行的,必须先转换成机器语言。机器语言是唯一一种CPU能直接理解的编程语言。
一旦重置了CPU,00000000就会被自动存储到PC寄存器中,这意味着接下来CPU将从00000000号地址读取程序,取出这个地址下的指令,如果判断为两个字节构成的指令,就会下一个地址00000001中读出数据,把这两个数据汇集到一起解释、执行。
由于刚刚从内存读出了一条2字节的指令,所以PC寄存器的值要增加2,并接着从00000010号地址读出指令,解释并执行。按此流程序,反复进行“读取指令”,“解释、执行指令”,“更新寄存器的值”三个操作。
重点是要观察PC寄存器是如何控制程序流程的。