计算机组成原理逻辑运算

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

组成原理课程设计说明书

计算机组成原理算法实现(三)

专业计算机科学与技术

学生姓名

班级

学号

指导教师

完成日期

1 课程设计目的

本课程设计是在学完本课程教学大纲规定的全部内容、完成所有实践环节的基础上,旨在深化学生学习的计算机组成原理课程基本知识,进一步领会计算机组成原理的一些算法,并进行具体实现,提高分析问题、解决问题的综合应用能力。

2 课程设计内容与要求

内容:计算机组成原理算法实现(五)

要求:课题③能够实现逻辑运算(逻辑非、逻辑加、逻辑乘、逻辑异)、定点整数的单符号位补码加减运算、定点整数的原码一位乘法运算和浮点数的加减运算。

3 功能模块详细设计

3.1 主窗体设计

系统进入(主)窗体的设计:菜单需要在输入口令正确后方可激活使用。口令输入错误时要给出重新输入口令的提示,三次口令输入错误应该禁止使用。具体现实如下:

窗体由visual studio 2017 中c#窗体设计中的各种UI插件完成,如label、button、textbox、messagebox等插件组合完成,在插件的使用中还可以改变字体背景大小颜色,例如我插入了图片,label背景颜色为透明。插件还可以输入口令后直接回车进入

在进入此页面后,未显示任何菜单栏选项,只有正确输入口令后方可进入菜单窗体进行能使用,三次失败后便立即退出,此处用到了if(equal())语句,只有密码相等才可以效果图如下:

这些弹窗均由messagebox插件完成。

3.2菜单窗体

这些便是这次实验设计的所完成的主要功能,包括逻辑运算、定点整数的补码加减,定点整数的原码乘法,浮点数的加减运算.此外,窗体的交替由 hide()和show()方法表示。

3.3 逻辑运算窗体设计

逻辑运算分为逻辑加、逻辑非,逻辑乘和逻辑异,即上课所学的交非并异或四种逻辑运算,主要由textbox插件接收输入的数字,然后通过if语句判断进行结果输出,如非运算就是“1”→“0”,“0”→“1”,通过数组遍历,一个一个往后检查直至全部替换完毕,逻辑乘即是并,逻辑非关键代码如下所示:

if (a[i] == '0') d[i] = '1';

if (a[i] == '1') d[i] = '0';

}

c = new string(d);

通过实体化具体输出后进行数组遍历改变,同理其余的逻辑运算只需要加上if 语句条件,结果效果如下图所示:

另外,输入按钮由foucus()函数控制,点击输入后无论鼠标原来在哪,都会重新在第一行,返回依然是hide() 和show()函数,即隐藏此页面,显示菜单窗体。

3.4 定点整数的单符号位加减运算

加减运算通过求出原码反码补码然后利用补码进行加法运算,运用到了自定义函数,附于附录之中。首先定义原码函数,即将符号位换位0或1表示,接着运用if函数进行取反,最后判断最后一位求出补码。效果图如下

如果是减法的话,便是求出第二个数相反数的补码,再次相加,此时再自定义三个函数,唯一区别在于原码,即如果是“+”是“0”,而“-”是“1”,最后补码套用加法函数这样:

this.no4.Text=(AddBinary(BM(FM(YM(this.no1.Text))),BM(FM(JYM(this.no2.Te xt)))));效果图如下:

3.5 定点整数的原码乘法窗体设计

定点整数原码的乘法,是基于加法之上的,在进行每一次求积的过程时,都需要将乘积保存下来,按照我的设计思路,实现方法如下所述:

首先,创建BYM()函数,这个函数的目的是将带符号的定点整数化为原码进行此后的运算,然后开始一位一位的进行乘法运算,最后,乘法的关键,自定义了一个乘法函数YMYWmultip(),自己理解的位置的关系进行加法,最后,通过逻辑异或运算,即同号为0,保证结果的符号正确。

3.6 浮点数的加减运算窗体设计

浮点数的加减运算是上课时老师一步一步做的,在实现这个功能时,逻辑是与写题时相同的,首先将阶码和尾数变成原码,接着反码、补码。第一步,对阶,第一个数和第二个数进行对阶,产生偏移量改变阶码,第二步,尾数求和,尾数的补码相加,第三步,规格化,再次产生偏移量,改变阶码,继而进行尾数处理,最后,判断溢出。再次让补码变成原码输出。而减法不同的便是尾数求和这一步,原理与前面的单符号位加减运算相同,区别在于符号位由一位变为两位。以上均要判断正负溢出,具体在代码之中,效果图如下:

3.7 窗体的美观设计

在c#窗体设计中,有许多可以美观优化的地方,这些均可以使用插件的属性进行设计改变。如:

颜色,字体大小,名称,背景图片都可以在这一栏进行设计,比如,我在插件background中插入图片,其余插件为透明色,边框为粉红,窗体弹出设为居中,使窗体更美观简洁。

4 设计小结

这次计算机组成原理课设大大提升了我的c#编程能力,原先没有掌握的的数据类型转换,基本函数也在大脑中留下了记忆,在这次实验中,同学们积极讨论,使自己对于补码和浮点数的相关知识得到了夯实巩固,其原理得到了理解,感谢于同学的帮助,原先我们大部分是编程控制台代码,这一次,是窗体设计,受益良多,自身又得到了提高。

参考文献

[1] 白中英. 计算机组成原理(第五版)[M]. 北京: 科学出版社, 2010.

[1] 明日科技. c#从入门到精通(第三版)[M]. 北京: 清华大学出版社, 2010.

附录代码

主窗体代码

public partial class Form1 : Form

{

int n = 3;

public Form1()

{

InitializeComponent();

}

private void groupBox1_Enter(object sender, EventArgs e)

{

}

private void button1_Click(object sender, EventArgs e)

{

string kl = this.textBox1.Text;

if (kl.Equals(""))

{

n--;

MessageBox.Show("口令不能为空!你还有" + n + "次机会");

}

else

{

if (kl.Equals("111"))

{

MessageBox.Show("登录成功!");

new Form7().Show();

this.Hide(); }

else

{

n--;

MessageBox.Show("口令错误!你还有"+n+"次机会");

}

}

if (n < 1) { this.Close(); }

}

private void

textBox1_TextChanged(object sender, EventArgs e) {

}

private void Form1_Load(object sender, EventArgs e)

{

}

}

菜单代码:

public partial class Form7 : Form

{

public Form7()

{

InitializeComponent();

}

private void button1_Click(object sender, EventArgs e)

{

new Form2().Show();

this.Hide();

}

private void button2_Click(object sender, EventArgs e)

{

new Form3().Show();

this.Hide();

}

private void button3_Click(object sender, EventArgs e)

{

new Form4().Show();

this.Hide();

}

private void button4_Click(object sender, EventArgs e)

{

相关文档
最新文档