打字猴:1.700414111e+09
1700414111 计算机是怎样跑起来的 [:1700412640]
1700414112 计算机是怎样跑起来的 3.5 尝试手工汇编
1700414113
1700414114 在CPU的资料中,明确写有所有可以使用的助记符,以及助记符转换成机器语言后的数值。只要查看这些资料,就可以把用汇编语言编写的程序手工转换成机器语言的程序,这样的工作称为“手工汇编”。进行手工汇编时,要一行一行地把用汇编语言编写的程序转换成机器语言。下面就实际动手试一试。表3.2列出了汇编语言中必要指令的助记符、助记符所对应的机器语言,以及执行这些机器语言所需的时钟周期数
1700414115
1700414116 表3.2 从助记符到机器语言的转换方法
1700414117
1700414118 助记符         机器语言           时钟周期数
1700414119
1700414120 LD A,num        00111110 num        7
1700414121
1700414122 OUT(num),A      11010011 num        11
1700414123
1700414124 IN A,(num)      11011011 num        11
1700414125
1700414126 JP num          11000011 num        10
1700414127
1700414128 下面就从汇编语言的第1行开始转换。第一行的LD A,207匹配LD A,num这个模式,所以可以先转换成00111110 num。然后把十进制数207转换成8比特的二进制数,用这个二进制数替换num。即LD A,207的机器语言为00111110 11001111。由于这条指令存储在内存最开始的部分(00000000号地址),所以要把这条指令和内存地址像下面这样并排写下来
1700414129
1700414130 地址       汇编语言         机器语言
1700414131
1700414132 00000000  LD A,207         00111110 11001111
1700414133
1700414134 第二条指令OUT(2),A匹配OUT(num),A这个模式,所以可以先转换成11010011 num,然后把num替换成00000010,即用8比特二进制数表示的十进制数2,最终得到机器语言11010011 00000010,因为内存中已经存储了2字节的机器语言,所以这条机器语言要从00000010号地址(用十进制表示就是2号地址)开始存储
1700414135
1700414136 地址       汇编语言         机器语言
1700414137
1700414138 00000010  OUT (2),A        11010011 00000010
1700414139
1700414140 这之后由于LD指令和OUT指令又以相同的模式出现了3次,所以用相同的步骤转换成机器语言。请注意,机器语言每条语句的字节是多少,内存地址就相应增加多少
1700414141
1700414142 地址       汇编语言         机器语言
1700414143
1700414144 00000100  LD A,255         00111110 11111111
1700414145
1700414146 00000110  OUT (2),A        11010011 00000010
1700414147
1700414148 00001000  LD A,207         00111110 11001111
1700414149
1700414150 00001010  OUT (3),A        11010011 00000011
1700414151
1700414152 00001100  LD A,0           00111110 00000000
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
[ 上一页 ]  [ :1.700414111e+09 ]  [ 下一页 ]