模拟器及汇编程序.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
模拟器和汇编程序(Simulator and Assembler) 本题目在美国CMU大学的C语言作业《Simulator and Assembler》基础上进行了修改和完善,将简单计算机的指令由16条扩充到32条,另外设计了两条伪指令,同时增加了四个专用寄存器:CS、DS、SS和ES。为了避免重复,本文只重点介绍了扩充部分的内容,因此,对任务要求的完整理解需要参阅原题及编程思路(《C语言实验与课程设计》附录8,p245,和第四章4.4节,p157)。 1 简单计算机的结构模型 模拟器所模拟的简单计算机其结构模型可以用图1来表示,整体结构分为三块:处理器(Processor)、存储器(Memory)和端口(Port)。 图1 简单计算机的结构模型 1) 处理器 处理器中包括一个算术与逻辑单元(Arithmetic and Logic Unit,ALU)和一系列寄存器(Registers)。寄存器包括一组通用寄存器(general purpose registers)和七个专用寄存器:代码段寄存器(Code Segment,CS)、数据段寄存器(Data Segment,DS)、堆栈段寄存器(Stock Segment,SS)、附加段寄存器(Extra Segment,ES)、程序计数器(program counter,PC)、指令寄存器(instruction register,IR)和程序状态字(Program Status Word,PSW)。 算术与逻辑单元是处理器的核心部分,用于执行大部分指令。在此计算机中,算术与逻辑单元实际模拟了32条指令的执行。 寄存器是在处理器中构建的一种特殊存储器,读写速度高但数量有限。寄存器主要用于存放算术与逻辑单元执行指令所需要的数据和运算结果。处理器所处理的数据大多数取自于寄存器,而不是内存;因此,内存中的数据首先要加载(load)到寄存器,接下来处理器从寄存器取数据进行运算,然后将运算结果放回寄存器,最后,再存储到内存中。 通用寄存器有8个,分别记为A、B、C、D、E、F、G和Z。其中寄存器Z用作零寄存器,所存放的值保持为0,用来“清洗”其他寄存器(即将其他寄存器中的值置为0)。寄存器A~G可存放任何数据,其中寄存器G还用于间接寻址,在后面描述指令功能时会进一步介绍。在一条指令在执行时,对同一个寄存器既可以读数据又可以写数据。这8个通用寄存器的编号见表1。 表1 通用寄存器编号表 寄存器 编号(二进制) Z 000 A 001 B 010 C 011 D 100 E 101 F 110 G 111 本简单计算机对内存进行分段管理,内存被划分为四个段,分别为代码段、数据段、堆栈段和附加段,用CS、DS、SS和ES来表示。代码段存放程序执行指令,数据段存放程序运行所需要的数据,堆栈段存放程序运行期间产生的中间数据,包括子程序调用时所传递的参数和子程序所返回的结果,附加段用于在调用子程序时存放寄存器中的数据。SS和ES被设计成栈式存储结构。 目标程序在执行之前必须先载入到内存。程序计数器专门用来存放内存中将要执行的指令地址。由于每条指令占4字节,因此一般情况下每经过一个指令周期,程序计数器中的地址自动向前移动4字节,而转移指令可以修改程序计数器中的地址值,从而改变指令的执行次序。 处理器的每个指令周期包括三步:取指、译码和执行。指令寄存器专门用来存放从程序计数器所指示的内存单元取到的指令内容,以供下一步对其译码。 程序状态字专门存放目标程序执行的状态。该简单计算机用两个标志来表示程序执行时两个方面的状态:溢出标志(overflow flag)用来表示算术运算(ADD和SUB等)时的溢出状态,1表示发生溢出,0表示未溢出;比较标志(compare flag)用来表示逻辑运算(EQU、LT、LTE和NOTC)的结果,1表示逻辑为真,0表示逻辑为假。程序状态字中的前两个bit分别用来表示这两个标志。 程序计数器、指令寄存器和程序状态字作为三个专用寄存器,不能用来存放其他数据,否则不能保证目标代码正确执行。 另外,简单计算机的机器字长为2个字节。所以,通用寄存器、立即数和程序状态字用一个机器字(2字节)来表示,程序计数器和指令寄存器用两个机器字(4字节)来表示。 2) 存储器 系统的内存单元按字节进行编址。换句话说,内存中每个字节的存储单元都有一个区分于其他字节的地址编号。此简单计算机的内存空间为224个字节,地址编号从0到224-1。 3) 端口 处理器在进行输入输出时通过端口来访问外围设备。Port #0表示终端输入设备控制台,Port #15表示终端输出设备控制台。端口号用一个机器字长(2字节)来表示。 2 指令集 简单计算机的指令集见表2,共32条指令和两条伪指令。32

文档评论(0)

xiaofei2001128 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档