追踪程序的运行过程

用汇编语言编写的程序不能直接运行,必须先转换成机器语言。机器语言是CPU可以直接理解的唯一编程语言。汇编语言到机器语言的转换方法将在后面介绍。这里,我们看一下代码清单3.3,其中列出了预先转换的机器语言和对应的汇编语言。

一条汇编语言指令对应的机器语言由多个字节组成。而且,它也是汇编语言中的指令,有的指令对应1字节机器语言,有的指令对应多字节机器语言。转换后的机器语言中的字节数取决于汇编语言指令的类型和操作数的数量。

代码清单3.3中的第一个内存地址是00000000(地址0),下一个地址是00000010(地址2),中间有2个地址,也就是说如果一个2字节的机器从地址0存储语言,那么下一个机器语言将从地址2开始存储。我们看代码清单3.3并跟随CPU解释和执行机器语言程序。在这里,我们假设机器语言程序存储在内存中,如清单3.3所示。

一旦CPU复位后,PC寄存器中会自动存入00000000,也就是说CPU会从地址00000000读取程序。首先,CPU会从地址00000000读取指令00111110,判断这是一个指令由2个字节组成,所以它会从下一个地址(即00000001,地址1,在代码表3.3中没有标出)读取指令。地址本身)读取数据11001111,将两个数据组装在一起进行解释和执行。

执行的指令是将值207写入寄存器A,汇编语言为“LDA,207”。此时,由于刚从内存中读取了一条2字节的指令(占用2个内存地址),PC寄存器的值加2,然后从地址00000010读取指令,解释执行。接下来的过程与此类似。通过重复“读指令”、“解释并执行指令”、“更新PC寄存器值”这三个操作,程序就可以运行了。一旦执行了最后一行JPLOOP对应的机器语言,PC寄存器的值就会被设置为LOOP标签对应的地址00010000,这样就可以循环执行同样的操作了。请关注PC寄存器如何控制程序流程。

举报/反馈

兴雅评测

1854获赞 2644粉丝
欢迎大家多多来关注我们
数码领域创作者
关注
0
0
收藏
分享