1700414153
1700414154
00001110 OUT (3),A 11010011 00000011
1700414155
1700414156
接下来是IN A,(0),匹配IN A,(num)模式,所以可以先转换成11011011 num,然后把num替换成00000000,即用8位比特二进制数表示的十进制数0,最终得到机器语言11011011 00000000.对于接下来的OUT (1),A,也可以按同样的方法转换
1700414157
1700414158
地址 汇编语言 机器语言
1700414159
1700414160
00010000 IN A,(0) 11011011 00000000
1700414161
1700414162
00010010 OUT (1),A 11010011 00000001
1700414163
1700414164
最后一句JP LOOP匹配模式JP num,所以可以先转换成11000011 num。请注意这里要用16比特的十进制数替代作为内存地址的num。在微型计算机中是以8比特的单位指定内存地址的,但在Z80 CPU中用于设定内存地址的引脚却有16个,所以在机器语言中也要用16比特的二进制数设定内存地址。JP指令跳转的目的地为00010000,即LOOP
:标签所标示的语句LD A,0对应的内存地址。把这个地址扩充为16比特就是00000000 00010000。要扩充到16位,只需要把高8位全部设为0就可以了
1700414165
1700414166
还有一点请注意,在将一个2字节的数据存储到内存时,存储顺序是低8位在前,高8位在后(也就是逆序存储)。这样的存储顺序叫做“小端序”(Little Endian),与此相反,将数据由高位到低位顺序存储到内存的存储顺序叫做“大端序”(Big Endian)。根据CPU种类的不同,有的CPU使用大端序,有的CPU使用小端序。Z80 CPU使用的是小端序,因此JP LOOP对应的机器语言是11000011 00010000 00000000
1700414167
1700414168
地址 汇编语言 机器语言
1700414169
1700414170
00010100 JP LOOP 11000011 00010000 00000000
1700414171
1700414172
1700414173
1700414174
1700414176
计算机是怎样跑起来的 3.6 尝试估算程序的执行时间
1700414177
1700414178
在本章最后,介绍一下如何通过时钟周期数估算程序的执行时间。请翻到表3.2,找出执行每条汇编语言指令所需的时钟周期,然后把代码清单3.2中所用到的每条指令的时钟周期累加起来。于是可以算出到LOOP标签为止的8条指令共需要7+11+7+11+7+11+7+11=72个时钟周期;LOOP标签之后的3条指令需要11+11+10=32个时钟周期,因为微型计算机采用的是2.5MHz的晶振,也就是1秒可产生250万个时钟周期,所以每个时钟周期是1秒/250万=0.4微秒。72个时钟周期就是72*0.4=28.8微秒,32个时钟周期就是12.8微秒,这段程序是用LED的亮或灭来表示指拨开关的开关状态,所以LOOP标签之后所执行的操作“输入、输出、跳转”每猜测可以反复执行1秒/12.8微秒/次=78125次,可见计算机的计算速度有多么惊人
1700414179
1700414180
比起C语言或BASIC等高级语言,汇编语言的语法简单,指令数少,说不定会更容易学习,可是今天还在使用汇编语言的人却凤毛麟角,使用汇编语言编程时,因为要事无巨细地列出计算机的行为,所以程序会变得冗长繁复,因此大家只需要在纸上体验汇编语言、机器语言以及手工汇编就足够了。只要具备了这些知识,即便是用C语言或BASIC语言等编程语言编程时,也一样能感受到计算机底层的工作方式,也就是说变得更加了解计算机了
1700414181
1700414182
在接下来的第4章中,将介绍条件分支和循环等“程序的流程”,还会稍微介绍一些有关“算法”的内容
1700414183
1700414184
1700414185
1700414186
1700414188
计算机是怎样跑起来的 第4章 程序像河水一样流动着
1700414189
1700414190
热身问答
1700414191
1700414192
在阅读本章内容前,让我们先回答下面的几个问题来热热身吧
1700414193
1700414194
初级问题:Flow Chart的中文意思是什么?
1700414195
1700414196
中级问题:说出自然界中河流的三种流动方式
1700414197
1700414198
高级问题:事件驱动是什么?
1700414199
1700414200
1700414201
1700414202
[
上一页 ]
[ :1.700414153e+09 ]
[
下一页 ]