打字猴:1.7004141e+09
1700414100 00001110  11010011 00000011                   OUT        (3),A
1700414101
1700414102 00010000  11011011 00000000           LOOP:   IN         A,(0)
1700414103
1700414104 00010010  11010011 00000001                    OUT        (1),A
1700414105
1700414106 00010100  11000011 00010000 00000000           JP         LOOP
1700414107
1700414108
1700414109
1700414110
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
[ 上一页 ]  [ :1.7004141e+09 ]  [ 下一页 ]