| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2174 人关注过本帖
标题:T.P版.模拟cpu什么意思阿。这题.....
只看楼主 加入收藏
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:40 
T.P版.模拟cpu什么意思阿。这题.....
程序代码:
r1 r2 r3

0001         复制操作
00011110       复制r1到r2
00010110       复制r2到r1
0010            加法
00100110     将r1与r2相加,结果存放在r1
00101101     将r1与r3相加,结果存放在r3
0011         减法
00110110     用r1减去r2,结果存放在r1
00111110     将r1减去r2,结果存放在r2
0100         移动到register
01000110     将r2中存放的地址的数据放到r1中
01001110     将r1中存放的地址的数据放到r2中
01000010 00001000    数字8放到r2中(00001000的值是7)
0101         移动到memory   

01010110     将r1中存放的数据放到r2所指的内存地址中去
01011110     将r2中存放的数据放到r1所指的内存地址中去
0110         为零跳转
01100101     如果r1的值为零,则跳转到r3所指的代码处
01101101     如果r3的值为零,则跳转到r1所指的代码处
0111         不为零跳转
01110101     如果r1的值不为零,则跳转到r3所指的代码处
01111101     如果r3的值不为零,则跳转到r1所指的代码处
1000         打印
10000100     打印r1所指向的内存地址的数字
10001001     打印r3所指向的内存地址的字符串,字符串以0结尾
11110000     程序结束

要求:
输入这段 01000001 00000011 01000010 00000010 00100011 01000100 00000000 01011110 10000100 111100003 + 2 的结果求出并打印出来

分析:

01000001 00000011  r3 = 3
01000010 00000010  r2 = 2
00100011           r2 = r3 + r2
01000100 00000000  r1 = 0
01011110           r2 -> memory(0)
10000100           print r1 -> memory(0)
11110000           end

要求2:
输入这段 01000001 00000001 10000001 11110000 00000000 01001000 01100101 01101100 01101100 01101111 00101100 00100000 01110111 01101111 01110010 01101100 01100100 00100001 00000000 打印 Hello, world!

分析:
01000001 00000001  r3 = 1
10000001           print r3->memory(1)
11110000           end
00000000           not used
01001000 01100101 01101100 01101100 01101111 00101100 00100000 01110111 01101111 01110010 01101100 01100100 00100001    Hello, world
00000000           end of string

我看到快吐了...什么意思阿...能告诉下这题意思吗...主要思路之类的....


要模拟cpu阿。。。



[ 本帖最后由 clcqifeng 于 2012-3-9 17:36 编辑 ]
搜索更多相关主题的帖子: cpu 
2012-03-09 14:31
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
从给出的资料中把CPU基本指令(二进制形式)找出来,然后用它们写程序。这是模拟汇编,如果你把找出来的机器指令写成汇编符号,就看到那相当于汇编代码。学过汇编的,比较容易做这题。你让熟悉汇编的人教你吧。

授人以渔,不授人以鱼。
2012-03-09 14:41
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 2楼 TonyDeng
阿。看到好晕..从何入手...阿...我不行了.
2012-03-09 14:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
这是让你自己摸索规律的练习,盯着材料看两天再说。

授人以渔,不授人以鱼。
2012-03-09 14:49
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 4楼 TonyDeng
看什么材料阿。.我只看过The C Programming Language  第二版......而且不熟呢...
2012-03-09 14:55
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
就是1楼那些材料,全部材料都在那了。加法、减法、判断等的二进制指令都告诉你了,把他们整理出来(自己填个表),附上自己容易理解的标识符,然后用这些指令写要求的程序,最后把代码还原为用二进制表示。以前穿孔编程时代就是这个做法,你什么公司做到这么古老的训练?偏硬件设计的?

授人以渔,不授人以鱼。
2012-03-09 14:59
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 6楼 TonyDeng
0001         复制操作
00011110       复制r1到r2
00010110       复制r2到r3

                                                          前四位控制
意思是让我把二进制    0001  0000    8个字节一个字符....然后  0001         0              000       最后三位表示r1 r2 r3。。。
                                                                     中间位表示存哪

....问题是如何修改成这样....
2012-03-09 15:08
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 6楼 TonyDeng
我是做java web的..现在貌似在打基础....
2012-03-09 15:09
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你重点看那两个示例。比如3+2那个,先看右边,摸索机器执行3+2是怎么操作的(留意寄存器r1、r2、r3的使用及其代号),然后对照左边的指令,找出规律,与最前面的介绍对比。两个示例,对照着看,找出统一规律。然后整理最前面的那些东西(我怀疑有些地方你抄错了)。弄好后,就可以仿照两个示例那样写出类似的程序了。

授人以渔,不授人以鱼。
2012-03-09 15:16
clcqifeng
Rank: 2
等 级:论坛游民
帖 子:101
专家分:17
注 册:2012-2-16
收藏
得分:0 
回复 9楼 TonyDeng
不是阿...那些二进制本身不是那个意思的..
举例2:打印 Hello, world!
01000001 00000001 10000001 11110000 00000000 01001000 01100101 01101100 01101100 01101111 00101100 00100000 01110111 01101111 01110010 01101100 01100100 00100001 00000000


这个不是举例阿....是我头头要求我做一个程序...输入这些01000001 00000001 10000001 11110000 00000000 01001000 01100101 01101100 01101100 01101111 00101100 00100000 01110111 01101111 01110010 01101100 01100100 00100001 00000000二进制码后出现hello, world这样的效果。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
2012-03-09 15:23
快速回复:T.P版.模拟cpu什么意思阿。这题.....
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.029498 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved