- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验五 设计一条同值补码数符号扩展指令
计算机组成原理实验
实 验 报 告
实 验 人: 学 号: 日 期: 2010-6-10 院(系): 专业(班级): 软件工程(数字媒体) 实验题目: 设计一条同值补码数符号扩展指令
实验目的
进一步了解和掌握计算机各部分的组成及相互关系;
了解微指令的执行过程,掌握微程序的设计方法;
理解动态微程序设计的概念;
进一步认识和掌握计算机各指令的执行过程,搞清楚计算机的运行原理。
实验内容
设计一条指令,实现对存放在内存ADDR单元中低位字节的8位有符号补码数进行符号扩展(即将其变为16位的同值的补码数),结果保存在一通用寄存器中。
实验器材
TEC-2机一台
电脑一台
实验分析与设计
指令格式
指令格式:D4DRXADDR
指令功能
功能:先将内存ADDR单元中的数据暂存于目的操作数寄存器DR中,然后对其中低字节的8位有符号补码数通过移位操作进行符号位扩展,将其变为16位的同值补码数,结果保存在原寄存器中。
设计分析
根据指令的功能和指令格式,先读取地址单元ADDR的内容并将其暂存于目的操作数寄存器DR中,然后将操作数左移9次(设置循环次数为8),将标志C移到RAM0,此时将状态位C设为RAM15,再将操作数与标志位C循环右移9次,并保持C标志不变,最后将结果保存在原寄存器中。
微程序
100:PC→AR,PC+1→PC: 0000 0E00 A0B5 5402
101:MEM→AR: 0000 0E00 10F0 0002
102:MEM→DR: 0000 0E00 30F0 0008
103:左移一次并设置循环8次: 0001 C406 F0B0 0008
104:左移8次C值为RAM15的: 0000 0806 E0B0 0008
105:右移一次并设置循环8次: 0001 C400 D0B0 0108
106:右移8次C写入最高位: 0000 0800 D0B0 0108
107:CC#=0,3#: 0029 0300 9000 0000
加载到微控存程序段
说明:微码存放在900H(或某内存单元)开始的内存单元中
A800↙
0800:MOV R1,900↙ ;微码??内存中的首地址
0802:MOV R2,8↙ ;微指令条数
0804:MOV R3,100↙ ;微码在微控存中的首地址
0806:LDMC↙ ;加载微码指令,将微码指令加载到控存
0807:RET↙
0808:↙
G800 ↙ ;微码便装入起始地址为100H的微控存中
运行程序段
A820↙
0820:MOV R0,0099↙
0822:MOV [0830],R0↙
0824:NOP↙
0825:NOP↙
0826:RET↙
0827:↙
E824↙
然后输入以下内容:
D420 0830↙
运行结果
G820↙
在命令行提示符状态下输入:
R↙
屏幕显示结果:
R0=0099 R1=0920 R2=FF99 R3=0108……
实验心得
这一次微程序设计的实验,在寄存器的移位操作上花了较多的时间。一开始没有设置好循环次数,对下地址字段的内容也不是很理解,于是走了很多弯路。后来,与同学讨论,才发现了自己出现的问题。实验不难,但是仍有很多细节的地方需要注意,比如说循环、移位的时候,SB的值应设置为1:否则不能得到正确的结果。还有,当程序段运行完成时,总要加上条件转移指令,以确保所设计的程序可以顺利地返回来执行下一条指令,即CC#=0,3#。
有符号补码数**XX进行符号位扩展后:若为负数,则其补码数的形式为:FFXX;若为正数则00XX。如本次实验,若将操作数(R0初始化)改为0011,则其结果为:0011。
文档评论(0)