大学计算机基础第3版参考课件-第13讲-TOY计算机模拟

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2018/10/8

今日目标

❑建模和模拟冯氏结构的机器执行指令◆一个名字叫TOY 的计算机

❑计算思维的本质是两个“A ”,抽象(Abstract )和自动化(Automatic )◆前者对应着建模,后者对应着模拟

什么是抽象?

⏹艺术中的抽象

☐绘画

2

w1

画家的职责不是借助具体形象反映现实,而

是以抽象的形象表达科学的真实

毕加索《牛》

幻灯片 3

w1 举几个抽象的例子

艺术:抽象画、音乐

北京上海地铁图

wang, 2011/10/11

什么是抽象?

⏹艺术中的抽象

☐绘画

⏹生活中的抽象

☐地铁图

4

5

The London Underground Map (1928)

Harry Beck

6

The London

Underground Map (1928)

The London

Underground Map (1933)

by Harry Beck

7

北京地铁图

8

w2

幻灯片 9

w2 举几个抽象的例子

艺术:抽象画、音乐

北京上海地铁图

wang, 2011/10/11

计算机组成结构的抽象(实体抽象)

控制器

运算器

输入设备输出设备

存储器

计算机组成结构的抽象(实体抽象)

14

计算的抽象(概念抽象)⏹什么是计算?

☐从一个符号串变换成另一个符号串☐Peter J. Denning :Computation is a sequence of representations .

⏹图灵机导致了计算的

形式概念

什么是模拟?(百度百科)

⏹模拟是对真实事物或者过程的虚拟。

☐场景游戏就是对现实世界的虚拟

⏹模拟要表现出选定的物理系统或抽象系统的关键特性。

16

今日目标

⏹建模和模拟一个名字叫TOY 的计算机☐冯氏结构

☐执行指令⏹

建模(抽象)已由冯诺依曼完成了⏹下面我们用Python 程序来虚拟实现这台机器的自动化执行指令的过程控制器运算器输入设备输出设备

存储器

Let’s GO!

18

☐主存单元(房间)

✓大小:一个字节(8bit)

(房间大小)

☐存储容量(房间数量)

☐主存地址:每个主存单元有一个编号(房间号)

✓编号从0开始,依次加1

✓地址码的长度决定系统

支持的最大主存容量内存

......00000001 (10110110)

⏹哪种数据结构适合用来模拟主存?☐主存↔列表

✓1000个元素↔1000个主存单元✓元素编号↔主存地址

✓元素类型:整数

20

mem = [0]*1000mem 用于模拟主存,共1000

个主存单元

⏹用哪种数据结构来模拟寄存器?☐通用寄存器组(R0,R1……R9)↔列表☐程序计数器↔变量pReg ☐指令计寄存器↔变量iReg ✓类型统一为整型,可根据需要转换21

= [0]*1000 mem = [0]*1000reg = [0]*10 pReg = 0

iReg = 0mem 用于模拟

主存,共1000

个主存单元CPU 寄存器

24

address = int(flds[0])= int(flds[1]) 如何将硬盘程序里指令加载入内存?

lin: ‘100031012'try:

[‘100', '031012']地址:100指令:031012flds = lin.split()address = int (flds[0])

instruc = int (flds[1]) mem[address] = instruc if first:

pReg = address

first = False except : pass

载入一条指令

TOY计算机之执行程序

请键入以下程序并运行

33

run('D:sum100.mml')mem def run('D:\\sum100.mml')print(mem[11])= [0]*1000; reg = [0]*10;pReg = 0; iReg = 0printMachineState ():def loadProgram (file):def cycle ():

def run (fileName):

‘prog1.mml')print(mem[105])

教材第142~144页

run(‘sum100.mml')

print(mem[11])

相关文档
最新文档