实验三_乘、除法运算器设计
实验报告_运算器实验
实验报告_运算器实验一、实验目的本次运算器实验的主要目的是深入了解运算器的工作原理和功能,通过实际操作和观察,掌握其基本运算逻辑和数据处理过程,培养对计算机硬件系统的理解和实践能力。
二、实验设备本次实验所使用的设备包括计算机一台、相关的实验软件以及连接线路等。
三、实验原理运算器是计算机的核心部件之一,它负责执行各种算术和逻辑运算。
其基本组成包括算术逻辑单元(ALU)、寄存器、数据总线等。
算术逻辑单元(ALU)是运算器的核心,能够进行加法、减法、乘法、除法等算术运算,以及与、或、非等逻辑运算。
寄存器用于暂时存储参与运算的数据和运算结果。
数据总线则用于在各个部件之间传输数据。
在运算过程中,数据从寄存器通过数据总线传输到ALU 进行运算,运算结果再通过数据总线存储回寄存器或传输到其他部件。
四、实验内容与步骤(一)实验内容1、进行简单的算术运算,如加法、减法、乘法和除法。
2、执行逻辑运算,包括与、或、非操作。
3、观察运算结果在寄存器和数据总线上的传输和存储过程。
(二)实验步骤1、打开实验软件,连接好实验设备。
2、选择要进行的运算类型,如加法运算。
3、在相应的输入框中输入两个操作数。
4、点击“计算”按钮,观察运算结果在寄存器中的显示。
5、重复上述步骤,进行其他类型的运算。
五、实验结果与分析(一)实验结果1、加法运算:当输入操作数分别为 5 和 3 时,运算结果为 8,准确无误。
2、减法运算:输入 8 和 3,结果为 5,符合预期。
3、乘法运算:输入 2 和 4,得到结果 8,正确。
4、除法运算:输入 10 和 2,结果为 5,无差错。
5、逻辑运算:与运算:输入 1010 和 1100,结果为 1000。
或运算:输入 0101 和 1010,结果为 1111。
非运算:输入 1010,结果为 0101。
(二)结果分析通过对实验结果的观察和分析,可以得出以下结论:1、运算器能够准确地执行各种算术和逻辑运算,结果符合预期。
算术逻辑运算实验总结
算术逻辑运算实验总结一、引言在现代社会中,算术逻辑运算是一项基本且必不可少的能力。
它们不仅在日常生活中起着重要作用,也广泛应用于各个领域的科学和工程。
为了提高算术逻辑运算的能力,我进行了几项实验,并总结了一些重要的经验和教训。
二、实验一:基本算术运算在这个实验中,我进行了一系列的基本算术运算,如加法、减法、乘法和除法。
通过这些运算,我更加熟悉了数字和运算的关系,并且提高了我的计算速度和准确性。
通过这个实验,我发现了一些有趣的现象。
首先,我发现加法和减法是最简单的运算,因为它们只涉及到数字的简单相加或相减。
而乘法和除法则需要更多的思考和推理,因为它们涉及到数字的相对大小和关系。
除此之外,在进行算术运算时,我还体会到了一些技巧和方法。
例如,在进行长数列的相加时,可以将它们分成多个小段,然后分别相加,最后再将结果相加。
这样可以降低错误的可能性,同时提高计算的效率。
三、实验二:逻辑运算逻辑运算是另一种重要的运算方式。
在这个实验中,我学习了逻辑运算的基本原理和方法,并进行了一些实际的应用。
首先,我学习了与运算、或运算和非运算的基本规则。
通过这些规则,我可以判断一个命题的真假,或者从若干个命题中得出一个新的结论。
这是在科学和工程中经常用到的一种思维方式。
其次,我了解了逻辑运算在算法设计和编程中的重要性。
在编写程序时,逻辑运算用于判断条件和控制程序的流程。
通过合理地使用逻辑运算,可以使程序更加高效和精确。
实验中,我发现了一些常见的逻辑谬误。
例如,德摩根定律的错误应用会导致逻辑矛盾和错误的结果。
因此,在进行逻辑运算时,我要特别注意各种规则和定律的正确使用。
四、实验三:复杂算术逻辑运算在这个实验中,我尝试了一些更加复杂的算术逻辑运算,如平方根运算、对数运算和三角函数运算。
通过这些运算,我更深入地了解了数学的奥秘和复杂性。
在进行这些运算时,我遇到了一些困难和挑战。
首先,一些运算需要使用特殊的方法和技巧,我要仔细学习和掌握这些技术。
基于51单片机的简易计算器设计
基于51单片机的简易计算器设计基于51单片机的简易计算器设计一、引言随着微电子技术和嵌入式技术的发展,越来越多的智能化设备被应用于日常生活中。
其中,基于51单片机的简易计算器设计具有广泛的应用价值。
本文将介绍如何使用51单片机设计一个简易计算器,实现加减乘除的基本运算功能。
二、设计方案1.硬件组成:本设计采用51单片机作为主控芯片,与键盘、显示器等外围设备相连。
键盘用于输入数字和运算符,显示器则用于显示运算结果。
2.软件设计:软件部分包括主程序和子程序。
主程序负责初始化硬件、读取键盘输入和显示运算结果。
子程序包括加减乘除的运算子程序,可根据输入的运算符和操作数进行相应的运算。
3.算法实现:在加减乘除的运算子程序中,采用基本的数学运算方法实现。
对于加法,直接将两个操作数相加;对于减法,将两个操作数相减;对于乘法,采用循环相乘的方法;对于除法,采用循环相除的方法。
三、实验结果在实验中,我们成功地使用51单片机设计了一个简易计算器,实现了加减乘除的基本运算功能。
在测试过程中,我们输入了不同的数字和运算符,得到了正确的运算结果。
同时,我们也测试了计算器的稳定性,发现其在连续运算时表现良好,没有出现明显的误差或故障。
四、结论基于51单片机的简易计算器设计具有简单易行、实用性强等优点。
通过实验测试,我们验证了其可行性和稳定性。
此外,该设计还可以根据需要进行扩展和优化,例如增加更多的运算功能、优化算法等。
未来,我们可以进一步研究如何提高计算器的运算速度和精度,以及如何将其应用于更多的实际应用场景中。
五、改进意见与展望1.增加更多的运算功能:例如实现括号、开方、指数等高级运算,满足更复杂的数学计算需求。
2.优化算法:针对现有的加减乘除运算算法进行优化,提高运算速度和精度。
例如采用更高效的除法算法,减少运算时间。
3.增加存储功能:在计算器中加入存储单元,使得用户可以在多个步骤之间进行数据传递和保存。
4.增强人机交互界面:优化显示器的显示效果,增加用户输入的便捷性,提高用户体验。
计算器-沪教版三年级数学下册教案
计算器-沪教版三年级数学下册教案
一、引入
在学习数学的过程中,计算器是一个重要的辅助工具。
本课将学习如何使用计算器及其基本操作。
二、教学目标
1.了解计算器的基本构造;
2.掌握计算器的基本操作。
三、教学重点
掌握计算器的基本操作。
四、教学难点
如何能更好的操作计算器。
五、教学过程
1.导入
教师介绍计算器,并问学生是否知道如何使用计算器。
2. 操作演示
教师在黑板上进行计算器的演示,从开机到基本的计算操作,包括加、减、乘、除等。
3. 练习
教师将不同的数学题目让学生用计算器进行计算。
例如:
1.23.45+1.23=?
2.56.3×
3.2=?
3.89.6-13.4=?
4.125÷5=?
4. 拓展
将计算器做成小组PK的形式,比较谁能用计算器迅速进行计算。
六、师生互动
教师提问,例如:“最高温度是多少?”“如何用计算器计算最高温度等于x-4?”让学生用计算器进行计算,然后交流讨论。
七、总结
本课时我们学习了如何使用计算器及其基本操作,掌握了计算器的加、减、乘、除等基本操作,并通过练习加深了对计算器的掌握。
通过PK的形式,也加深了学
生们的学习兴趣。
计算器黑盒测试实验报告
西实科技验报算告?实验名称计算器黑盒测试I实验地点____________________实验日期_______________指导教师__________________学生班级________________学生姓名__________________学生学号_________________提交日期软件教研室制一、测试目的设计测试用例、使用各种测试方法进行计算器的测试,并对测试结果进行分析二、测试内容1•软件说明:实现一个小的计算器程序,只需要完成加、减、乘、除运算,设计测试用例,并对测试结果进行分析,同时计算器运行稳定。
2、设计测试用例3、执行测试4、测试结果分析5、源代码三、测试步骤(一)、计算器界面2、设计测试用例(1)等价类测试:1、4个等价类测试用例的分析过程如下:2、对应测试的结果分析: 整型:1.加(55+50)2.减(78-24)3.乘(15*25)4.除(36/4)小数1.加(25.3+12.7)2.减(14.3-11.7)3.乘(25.6*12.8)4.除(50.2/20.7)负数6.加-20+-217.减(-15)-(-14)8.乘-12*-129.除-16/-5(其中算式写法错误导致正常运算错误)无效输入1.加(E1+t2):程序中无效数字无法正常输入,程序无法进行。
2.减(G4-k5)程序中无效数字无法正常输入,程序无法进行。
(同上)3.乘(I5*l6)程序中无效数字无法正常输入,程序无法进行。
(同上)4.除(Ff/se)程序中无效数字无法正常输入,程序无法进行。
(同上)简易计食器1、计算器4个标准等价类测试用例的分析过程如下:测试用例被加数加数预期输出Testi 0 10 正常运算Test2 1 10 正常运算Test3 40 10 正常运算Test4 55.5 10 正常运算Test5 -70 10 正常运算Test6 10 10 正常运算Test7 101 10 正常运算Test8 10 0 不能运算Test9 10 1 正常运算Test10 10 40 正常运算Testil 10 55.5 正常运算Test12 10 -78 正常运算Test13 10 100 正常运算2、对应测试与结果:测试结果运算均属正常,对应的部分的示图如下:Testi结果:Test2结果:Test3结果:Test4结果:Test5结果:Test6结果:减法:1、计算器4个标准等价类测试用例的分析过程如下:2、对应测试与结果:测试结果运算均属正常,对应的部分的示图如下:Testi结果:Test3结果:Test4结果:Test5结果:Test6结果:乘法1、计算器42、对应测试与结果:测试结果运算均属正常,对应的部分的示图如下:Testi结果:Test3结果:Test4结果:Test5结果:Test6结果:除法1、计算器4个标准等价类测试用例的分析过程如下:测试用例被除数除数预期输出Test2结果:Test3结果:Test8结果:附录:源代码CCalculateDlg::CCalculateDlg(CWnd* pParent /*=NULL*/):CDialog(CCalculateDlg::IDD, pParent){//{{AFX_DATA_INIT(CCalculateDlg)m_parameter = 0.0;//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);CalculatePara = 0;CalculateResult = 0;Ispoint = false;Sumpoint = 0;} void CCalculateDlg::DoDataExchange(CDataExchange* pDX)CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CCalculateDlg)DDX_Text(pDX, IDC_EDIT, m_parameter);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CCalculateDlg, CDialog)//{{AFX_MSG_MAP(CCalculateDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_clear, Onclear)ON_BN_CLICKED(IDC_calculate, Oncalculate)ON_BN_CLICKED(IDC_para1, Onpara1)ON_BN_CLICKED(IDC_para2, Onpara2)ON_BN_CLICKED(IDC_para3, Onpara3)ON_BN_CLICKED(IDC_para4, Onpara4)ON_BN_CLICKED(IDC_para5, Onpara5)ON_BN_CLICKED(IDC_para6, Onpara6)ON_BN_CLICKED(IDC_para7, Onpara7)ON_BN_CLICKED(IDC_para8, Onpara8)ON_BN_CLICKED(IDC_para9, Onpara9)ON_BN_CLICKED(IDC_para0, Onpara0)ON_BN_CLICKED(IDC_point, Onpoint)ON_BN_CLICKED(IDC_minus, Onminus)ON_BN_CLICKED(IDC_plus, Onplus)ON_BN_CLICKED(IDC_subtrack, Onsubtrack)ON_BN_CLICKED(IDC_multiply, Onmultiply)ON_BN_CLICKED(IDC_divide, Ondivide)//}}AFX_MSG_MAPEND_MESSAGE_MAP()///////////////////////////////////////////////////////////////////////////// // CCalculateDlg message handlersBOOL CCalculateDlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization herereturn TRUE; // return TRUE unless you set the focus to a control}void CCalculateDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below // to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework.void CCalculateDlg::OnPaint(){if (IsIconic())CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icon dc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}}// The system calls this to obtain the cursor to display while the user drags // the minimized window.HCURSOR CCalculateDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}void CCalculateDlg::Onclear(){UpdateData(true);m_parameter = 0;CalculatePara = 0;CalculateResult = 0;Ispoint = false;Sumpoint = 0;UpdateData(false);// TODO: Add your control notification handler code herevoid CCalculateDlg::Oncalculate(){UpdateData(true);CalculatePara = m_parameter;switch(CalculateExpre){case'+':CalculateResult += CalculatePara;m_parameter = CalculateResult;break;case,-':CalculateResult -= CalculatePara;m_parameter = CalculateResult;break;case,*,:CalculateResult *= CalculatePara;m_parameter = CalculateResult;break;case,/':if (CalculatePara){CalculateResult /= CalculatePara;m_parameter = CalculateResult;}else{m_parameter = 0;MessageBox(”除数不能为零!”);} break;}// TODO: Add your control notification handler code hereCalculatePara = 0;CalculateResult = 0;Ispoint = false;Sumpoint = 0;UpdateData(false);}void CCalculateDlg::Onpara1(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 1;}else{CalculatePara = m_parameter + 1/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara2(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 2;elseCalculatePara = m_parameter + 2/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara3(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 3;}else{CalculatePara = m_parameter + 3/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara4(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 4;}elseCalculatePara = m_parameter + 4/pow(10,Sumpoint);Sumpoint++;m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara5(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 5;}else{CalculatePara = m_parameter + 5/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara6(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 6;}else{CalculatePara = m_parameter + 6/pow(10,Sumpoint);Sumpoint++;m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara7(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 7;}else{CalculatePara = m_parameter + 7/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara8(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 8;}else{CalculatePara = m_parameter + 8/pow(10,Sumpoint);Sumpoint++;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara9(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 9;}else{CalculatePara = m_parameter + 9/pow(10,Sumpoint);Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onpara0(){UpdateData(true);if (!Ispoint){CalculatePara = m_parameter*10 + 0;}else{Sumpoint++;}m_parameter = CalculatePara;UpdateData(false);// TODO: Add your control notification handler code here void CCalculateDlg::Onpoint(){Ispoint = true;Sumpoint = 1;// TODO: Add your control notification handler code here}void CCalculateDlg::Onminus(){UpdateData(true);m_parameter = 0 - m_parameter;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onplus(){UpdateData(true);CalculateResult = m_parameter;CalculateExpre = '+';m_parameter = 0;Ispoint = false;Sumpoint = 0;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onsubtrack(){UpdateData(true);CalculateResult = m_parameter;CalculateExpre =m_parameter = 0;Ispoint = false;Sumpoint = 0;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Onmultiply(){UpdateData(true);CalculateResult = m_parameter;CalculateExpre = '*';m_parameter = 0;Ispoint = false;Sumpoint = 0;UpdateData(false);// TODO: Add your control notification handler code here }void CCalculateDlg::Ondivide(){UpdateData(true);CalculateResult = m_parameter;CalculateExpre = '/';m_parameter = 0;Ispoint = false;UpdateData(false);// TODO: Add your control notification handler code here。
实验三指导
实验三顺序结构程序设计一、实验目的(1) 掌握汇编程序的基本格式和结构(2) 掌握顺序结构程序的设计方法(3) 掌握ADD、ADC、SUB、SBC、MUL、IMUL、DIV、IDIV等算术运算指令。
(4) 掌握各种运算过程中各标志位的变化情况。
二、实验要求1、在数据段定义若干变量,计算由各变量组成的加减乘除混合多项式,结果送内存变量。
三、试验内容1、编程实现:首先将FIRST字变量与SECONFD字变量相加,结果存入THIRD1存储字中,然后将FIRST与SECOND 两个字变量相乘,结果存入THIRD2开始的两个字中。
提示:FIRST与SECOND都是字变量,因此存放和的THIRD1单元也必须是字变量。
而存放积的单元THIRD2必须是双字。
2、编写程序完成下式的计算,其中X、Y、Z和W均为存放32位无符号数的单元地址:W=Z-(X+6)-(Y-8)3、编程实现综合算术运算功能:(V-(X*Y+Z-540))/X其中,X、Y、Z、V均为16位带符号数,已分别装入X、Y、Z、V单元中,要求上式计算结果的商存入AX,余数存入DX寄存器。
4、编写一个32位无符号数除法的程序。
要求将存放在NUM1中的32位无符号数与存放在NUM2中的16位无符号数相除,结果存放在NUM3和NUM4中。
根据题目要求,应把存放在数据段内的被除数NUM1定义为32位,除数NUM2定义为16位,商NUM3定义为16位,余数NUM4定义为16位。
提示:①数据段定义②32位被除数与16位除数相除的程序段③本程序执行结果为:2A8B7654H÷5ABCH=7809H……25B8H5、试编写一个程序,要求把BL中的数除以CL中的数,并把其商乘以2,最后的结果存入DX寄存器中。
6、编程计算24,要求将123B0H~123BAH的内存单元定义为数据段四、实验报告要求1、源程序在DEBUG状态下查看运行。
2、标准的实验报告,实验报告中要有源程序和执行结果并附带必要的屏幕截图。
实验三_乘、除法运算器实验报告
实验三乘、除法运算器实验报告姓名:阿迪兰13053004马光明13052046 班级:计算机2班实验三乘、除法运算器实验报告一、实验目的1、掌握移位加算法设计乘法运算单元的基本思想2、掌握阵列算法乘法运算单元的设计方法3、掌握基于状态机的乘法运算单元的设计方法4、掌握基于宏模块的乘除法运算器的设计方法二、实验任务1、完成一个基于阵列的4位无符号乘法运算器的设计;实现代码为:module c01(x, y, out);input [7:0]x, y;output [15:0]out;genvar i, j, k, l;wire [8:0]tmp_sun[7:0], tmp_out[7:0];wire [8:0]tmp_x;assign tmp_x = {1'b0,x};assign out[0] = tmp_x[0] & y[0];generateassign tmp_out[0][0] = 1'b0;for(i=0;i<8;i=i+1)begin:add_bttop_m tm (tmp_x[i+1], y[0], tmp_x[i], y[1], tmp_out[0][i],tmp_sun[0][i], tmp_out[0][i+1]);endassign out[1] = tmp_sun[0][0];assign tmp_sun[0][8] = tmp_out[0][8];for(j=2;j<8;j=j+1)begin:ftffor(k=0;k<8;k=k+1)begin:add_bbbtm_m bm (tmp_sun[j-2][k+1], tmp_x[k], y[j], tmp_out[j-1][k], tmp_sun[j-1][k], tmp_out[j-1][k+1]);endassign out[j] = tmp_sun[j-1][0]assign tmp_sun[j-1][8] = tmp_out[j-1][8];Endfor(l=8;l<16;l=l+1)begin:add_oassign out[l] = tmp_sun[6][8];endendgenerateendmodulemodule top_m(m0, q0, m1, q1, cin, sun, cout);input m0, m1, q0, q1;input cin;output sun, cout;wire x, y;assign x = m0 & q0;assign y = m1 & q1;full_add fa (x, y, cin, sun, cout);endmodulemodule btm_m(sunin, m, q, cin, sun, cout); input sunin, m, q, cin;output sun, cout;wire y;assign y = m & q;full_add fa (sunin, y, cin, sun, cout); endmodulemodule full_add(x, y, cin, sun, cout);input x, y, cin;output reg sun, cout;always@(x, y, cin)beginsun <= x^y^cin;cout <= x&y | x&cin | y&cin;endendmodule2、完成一个基于移位加原理,用状态机实现的4位无符号乘法运算器的设计;实现代码为:module c02input[1:0] x;input[1:0] y;output[3:0] p;wire [3:0] temp;assign temp = {x , y};always @(temp)case temp4'b 0101:p =4'b 0001;4'b 0110: p = 4'b 0010;4'b 0111: p = 4'b 0011;4'b 1001: p = 4'b 0010;4'b 1010: p = 4'b 0100;4'b 1011: p = 4'b 0110;4'b 1101:p = 4'b 0011;4'b 1110: p = 4'b 0110;4'b 1111: p = 4'b 1001;default: p = 4'b 0000;endcase;endmodule;。
信号的运算_实验报告
一、实验目的1. 理解信号的基本运算概念,包括信号的加法、减法、乘法和除法。
2. 掌握使用MATLAB进行信号运算的方法。
3. 分析信号运算后的特性,如幅度、相位和时域变化。
二、实验原理信号的运算是指对两个或多个信号进行数学运算,得到新的信号。
常见的信号运算包括:1. 信号的加法:将两个信号的幅度值相加,得到新的信号。
2. 信号的减法:将一个信号的幅度值减去另一个信号的幅度值,得到新的信号。
3. 信号的乘法:将两个信号的幅度值相乘,得到新的信号。
4. 信号的除法:将一个信号的幅度值除以另一个信号的幅度值,得到新的信号。
三、实验仪器与软件1. 仪器:示波器、信号发生器、计算机2. 软件:MATLAB四、实验内容与步骤1. 实验一:信号的加法与减法(1)使用信号发生器产生两个正弦信号,频率分别为1Hz和2Hz,幅度分别为1V和2V。
(2)将两个信号分别输入示波器,观察波形。
(3)使用MATLAB编写程序,将两个信号相加和相减,并绘制结果波形。
(4)分析结果,比较加法和减法运算对信号特性的影响。
2. 实验二:信号的乘法与除法(1)使用信号发生器产生两个正弦信号,频率分别为1Hz和2Hz,幅度分别为1V和2V。
(2)将两个信号分别输入示波器,观察波形。
(3)使用MATLAB编写程序,将两个信号相乘和相除,并绘制结果波形。
(4)分析结果,比较乘法和除法运算对信号特性的影响。
3. 实验三:信号运算的时域分析(1)使用MATLAB编写程序,对实验一和实验二中的信号进行时域分析,包括信号的幅度、相位和时域变化。
(2)比较不同信号运算后的特性变化。
五、实验结果与分析1. 实验一:信号的加法与减法通过实验,观察到信号的加法和减法运算对信号的幅度和相位有显著影响。
加法运算使信号的幅度增加,相位保持不变;减法运算使信号的幅度减小,相位保持不变。
2. 实验二:信号的乘法与除法通过实验,观察到信号的乘法和除法运算对信号的幅度和相位有显著影响。
tkinter简易计算器的设计与实现实验报告心得体会
tkinter简易计算器的设计与实现实验报告心得体会一.设计任务及要求1.1实验任务:根据计算器的原理设计一个具有加减乘除功能的简易计算器。
如:5+3*4/8=4。
1.2实验基本要求:(1)实现最大输入两位十进制数字的四则运算(加减乘除)。
(2)能够实现多次连算(无优先级,从左到右计算结果)。
如:12+34*56-78/90+9=36(3)最大长度以数码管最大个数为限,溢出报警。
二.实验设计方案(1)用QuartusII的原理图输入来完成系统的顶层设计。
(2)用VHDL编写以及直接拖模块来各功能模块。
(3)通过2个脉冲分别实现个位数和十位数的输入。
(4)通过选择每次的输出数值,将输出值反馈到运算输入端(4)通过除法运算实现十六进制到十进制的转换输出。
三系统硬件设计FPGA:EP2C5T144C8目标板及相应外围硬件电路。
(从略)四系统软件设计1.数据输入模块原理:用VHDL创建模块,通过两个脉冲分别对两个数码管进行输入控制,再通过相应运算模块将两个独立数据转化成两位十进制数字。
2.运算模块原理:用VHDL创建模块,四种运算同步运行,通过按键加、减、乘、除选择输出对应的计算结果,当按键等号来时,将所得结果反馈给运算模块输入端。
具体实现代码见附录二。
3.输出模块原理:用VHDL创建模块,通过按键等号来控制显示运算对象还是运算结果,当等号按下时,输出计算结果,否则显示当前输入的数据,并且通过除法模块将十六进制转化为十进制。
当输出结果溢出是LED0亮,同时数码管显示都为零。
部分实现见附录二。
五实验调试输入数据12,再按加法键,输入第二个数字25,按等号键,数码管显示37;按灭加法、等号键,输入第二个数据2,依次按等号键,减法键,数码管显示35;同上,按灭减法键、等号键,输入第三个数据7,依次按等号键,除法键,数码管显示5;按灭除法键、等号键,输入第四个数据99,依次按等号键,乘法键,数码管显示495,按灭乘法键、等号键,当前显示为99,依次按等号键、乘法键,数码管显示49005,同上进行若干次之后,结果溢出,LED0亮,同时数码管显示都为零。
基本算数运算实验报告
一、实验目的1. 理解并掌握基本算数运算(加、减、乘、除)的原理和方法。
2. 提高对基本算数运算的熟练程度和运算速度。
3. 培养严谨的实验态度和科学思维方法。
二、实验原理基本算数运算是指加、减、乘、除四种运算。
加法是指将两个或多个数合并成一个数的运算;减法是指已知两个加数和一个和,求另一个加数的运算;乘法是指将一个数重复加若干次,或者将两个数相加若干次的运算;除法是指已知两个因数的积和其中一个因数,求另一个因数的运算。
三、实验内容1. 加法运算2. 减法运算3. 乘法运算4. 除法运算四、实验步骤1. 加法运算(1)准备实验材料:笔、纸、加法运算表等。
(2)按照加法运算表,进行10组加法运算,记录结果。
(3)对结果进行统计分析,比较运算速度和准确性。
2. 减法运算(1)准备实验材料:笔、纸、减法运算表等。
(2)按照减法运算表,进行10组减法运算,记录结果。
(3)对结果进行统计分析,比较运算速度和准确性。
3. 乘法运算(1)准备实验材料:笔、纸、乘法运算表等。
(2)按照乘法运算表,进行10组乘法运算,记录结果。
(3)对结果进行统计分析,比较运算速度和准确性。
4. 除法运算(1)准备实验材料:笔、纸、除法运算表等。
(2)按照除法运算表,进行10组除法运算,记录结果。
(3)对结果进行统计分析,比较运算速度和准确性。
五、实验结果与分析1. 加法运算实验结果显示,在10组加法运算中,平均运算时间为3秒,准确率为100%。
通过本次实验,可以看出加法运算对提高运算速度和准确性具有积极作用。
2. 减法运算实验结果显示,在10组减法运算中,平均运算时间为4秒,准确率为98%。
与加法运算相比,减法运算的运算速度和准确性略有下降,但仍然保持在较高水平。
3. 乘法运算实验结果显示,在10组乘法运算中,平均运算时间为5秒,准确率为100%。
乘法运算对提高运算速度和准确性同样具有积极作用。
4. 除法运算实验结果显示,在10组除法运算中,平均运算时间为6秒,准确率为95%。
基本运算器实验实验报告
基本运算器实验实验报告一、实验目的本次基本运算器实验的主要目的是深入理解计算机中基本运算的原理和实现方式,通过实际搭建和测试运算器电路,掌握加法、减法、乘法和除法等基本运算的逻辑实现,以及运算过程中的进位、借位和溢出等概念。
同时,通过实验培养我们的动手能力、逻辑思维能力和问题解决能力,为进一步学习计算机组成原理和数字电路等相关课程打下坚实的基础。
二、实验设备与环境1、实验设备数字电路实验箱示波器逻辑分析仪万用表2、实验环境实验室提供稳定的电源和良好的通风条件。
三、实验原理1、加法器半加器:只考虑两个一位二进制数相加,不考虑低位进位的加法电路。
其逻辑表达式为:和= A ⊕ B,进位= A ∧ B。
全加器:考虑两个一位二进制数相加以及低位进位的加法电路。
其逻辑表达式为:和= A ⊕ B ⊕ C_in,进位=(A ∧ B) ∨(A ∧C_in) ∨(B ∧ C_in)。
多位加法器:通过将多个全加器级联可以实现多位二进制数的加法运算。
2、减法器利用补码原理实现减法运算。
将减数取反加 1 得到其补码,然后与被减数相加,结果即为减法的结果。
3、乘法器移位相加乘法器:通过将被乘数逐位与乘数相乘,并根据乘数对应位的值进行移位相加,得到乘法结果。
4、除法器恢复余数法除法器:通过不断试商、减去除数、恢复余数等操作,逐步得到商和余数。
四、实验内容与步骤1、加法器实验按照实验原理图,在数字电路实验箱上连接全加器电路。
输入不同的两位二进制数 A 和 B 以及低位进位 C_in,观察输出的和 S 和进位 C_out。
使用示波器和逻辑分析仪监测输入和输出信号的波形,验证加法器的功能。
2、减法器实验按照补码原理,设计减法器电路。
输入被减数和减数,观察输出的差和借位标志。
使用万用表测量相关节点的电压,验证减法器的正确性。
3、乘法器实验搭建移位相加乘法器电路。
输入两位二进制被乘数和乘数,观察输出的乘积。
通过逻辑分析仪分析乘法运算过程中的信号变化。
北京交通大学数电实验报告
目录中频自动增益数字电路研究 (4)问题回顾 (5)实验一用加法器实现2位乘法电路 (6)1.1、设计任务要求 (6)1.2、设计方案及论证 (6)1.3、仿真及调试过程 (7)1.4、总结 (9)实验二用4位加法器实现可控累加减电路 (10)2.1、设计任务要求 (10)2.2、设计方案及论证 (10)2.3、仿真及调试过程 (11)2.4、总结 (14)实验三可控乘/除法电路 (15)3.1、设计任务要求 (15)3.2 设计方案及论证 (15)3.3、仿真及调试过程 (16)3.4 总结 (18)实验四实现模拟信号的可控乘/除电路 (19)4.1、设计任务要求 (19)4.2、设计方案及论证 (19)4.3、仿真及调试过程 (20)4.4、总结 (20)实物图片 (21)5.1 第一次实验 (21)5.2第二次实验 (22)5.3 第三次实验及显示板、BCD转换 (23)实验总结 (24)参考文献 (25)数字电子技术实验报告学院:电子信息工程学院专业:通信工程姓名:丛政指导教师:完成日期: 2013年12月8日中频自动增益数字电路研究自动增益数字控制电路是一种在输入信号变化很大的情况下,输出信号保持恒定或在较小的范围内波动的电路。
在通信设备中,特别是在通信接收设备中起着重要的作用。
它能够保证接收机在接收弱信号时增益高,在接收强信号时增益低,使输出保持适当的电平,不至于因为输入信号太小而无法正常工作,也不至于因为输入信号过大而使接收机发生堵塞或饱和。
实验目的:1.掌握中频自动增益数字电路设计, 提高系统地构思问题和解决问题的能力。
2.通过自动增益数字电路实验, 系统地归纳用加法器、A/D和D/A转换电路设计加法、减法、乘法、除法和数字控制模块电路技术。
3.培养通过现象分析电路结构特点,进而改善电路的能力。
实验特点:1. 给出不同功能数字电路,设计数字控制电路,体现数字系统数字控制性能。
2. 用模拟信号的输入和输出波形,设计控制增益数字电路,展开思路,体现开放性。
计算机组成原理实验报告_3_不恢复余数阵列除法器
河北大学计算机组成原理实验报告学院年级专业学号姓名实验日期实验地点指导老师实验项目不恢复余数阵列除法器成绩一、实验目的:理解除法器的原理。
二、实验原理:这次实验实现原码不恢复余数法的阵列除法器算法(余数左移除数固定),详细计算过程如下。
例题:X=0.10110,y=0.111,求[x/y]原。
则[x]补=0.10110,[y*]补=0.111,[-y*]补=1.001由于除数被除数都为正,因此最后结果为正,直接在最后的结果加上“+”,商为+0.110,但是由于除数在计算的过程中被逻辑左移了3次,所以要乘以2^-5进行恢复,故余数为0.000 010 000。
原码不恢复余数法原理说明:①符号位单独处理,参加运算的是除数和被除数的绝对值的补码,除数的绝对值用y*表示;②合法的除法运算中,被除数必须小于除数,因此第一次上商肯定是r6=0,否则溢出,停止运算;③原码恢复余数法来源于手算的竖式除法。
若余数为正,表示够减,商上1,左移一位,减去[y*]补,也就是加上[-y*]补;若余数为负,表示不够减,商上0,恢复余数(加上除数),变成减去除数之前的结果,继续左移一位,加上[-y*]补。
④原码不恢复余数法建立在原码恢复余数法的基础之上,假设当前的余数为R。
当余数大于0时,下一步余数是先左移一位再减去除数,即下一步余数应该为R’=2R-y*;当余数小于0时先恢复余数,然后再左移一位再减去除数,假设当前余数为R,那么下一步余数应该为R’=2(R+y*)-y*=2R+y*。
以上两个式子将恢复余数法的步骤定量化了,也就是说,要么左移一位加上y*,要么左移一位减去y*,这就是加减交替的含义。
⑤除数和被除数具有3位尾数的合法的除法,需要逻辑移位3次,上商3+1=4次。
可以设置一个计数器count来控制循环次数,达到3次就停止。
⑥若最后一步为负,表示不够减,商上0,需要恢复余数,即加上除数,否则不需要。
接下来介绍原码不恢复余数阵列除法器①可控加法/减法(CAS)单元原理是利用一个可控加法/减法 CAS 单元所组成的流水阵列来实现的它有四个输出端和四个输入端。
计算器功能测试
实验三计算器功能测试预习报告(一)实验目的1.理解并掌握WinRunner的测试流程;2.掌握掌握数据驱动测试脚本编写方法;(二)实验内容1.识别windows计算器GUI对象;2.编写数据驱动测试脚本,分别测试windows计算器的加、减、乘、除运算。
(三)实验要求1.分别为windows计算器的加、减、乘、除运算设计测试用例,填写用例设计表;2.编写数据驱动测试脚本,使用Debug模式对脚本除错;实验报告(一)实验步骤一.加法代码:GUI_load("D:\\Program Files\\Mercury Interactive1\\WinRunner\\dat\\calc.gui");set_window ("‹¡ {— Vh ");table = "‹¡ {— Vh .xls";rc = ddt_open(table, DDT_MODE_READ);if (rc!= E_OK && rc != E_FILE_OPEN){pause("Cannot open table.");}ddt_get_row_count(table,table_RowCount);for(table_Row = 1; table_Row <= table_RowCount; table_Row ++){ddt_set_row(table,table_Row);button_press ("C");additive1=ddt_val(table,"additive1");additive2=ddt_val(table,"additive2");add1=length(additive1);while(add1>0)if(substr(additive1,add1,1)==" ")add1--;else break;i=1;while(i<add1)if(substr(additive1,i,1)==" ")i++;else break;additive11=substr(additive1,i,add1);for(i=1;i<=length(additive11);i++)button_press (substr(additive11,i,1));button_press ("+");if(additive2==""){additive2=additive11;}else{add2=length(additive2);while(add2>0)if(substr(additive2,add2,1)==" ")add2--;else break;i=1;while(i<len)if(substr(additive2,i,1)==" ")i++;else break;additive22=substr(additive2,i,add2);for(i=1;i<=length(additive22);i++)button_press (substr(additive22,i,1));}button_press ("=");edit_get_text("Edit",result);len=length(result);while(len>0)if(substr(result,len,1)==" "||substr(result,len,1)==".") len--;else break;i=1;while(i<len)if(substr(result,i,1)==" ")i++;else break;result=substr(result,i,len);if(int(additive1+additive2)==int(result))tl_step("testcase"&table_Row,0,additive1&"+"&additive2&"="&(additive1+additive2)&"is equal with result"&result&",correct.");elsetl_step("testcase"&table_Row,1,additive1&"+"&additive2&"="&(additive1+additive2)&"is not equal with result"&result&",incorrect.");}ddt_close(table);结果:二.减法代码:GUI_load("D:\\Program Files\\Mercury Interactive1\\WinRunner\\dat\\calc.gui");set_window ("‹¡ {— Vh ");table = "QÏ .xls";rc = ddt_open(table, DDT_MODE_READ);if (rc!= E_OK && rc != E_FILE_OPEN)pause("Cannot open table.");ddt_get_row_count(table,table_RowCount);for(table_Row = 1; table_Row <= table_RowCount; table_Row ++){ddt_set_row(table,table_Row);button_press ("C");additive1=ddt_val(table,"additive1");additive2=ddt_val(table,"additive2");add1=length(additive1);while(add1>0)if(substr(additive1,add1,1)==" ")add1--;else break;i=1;while(i<add1)if(substr(additive1,i,1)==" ")i++;else break;additive11=substr(additive1,i,add1);if(substr(additive11,1,1)=="-")for(i=2;i<=length(additive11);i++)button_press (substr(additive11,i,1));button_press("+/-");}elsefor(i=1;i<=length(additive11);i++)button_press(substr(additive11,i,1));button_press("-");if(additive2==""){additive2=additive11;}add2=length(additive2);while(add2>0)if(substr(additive2,add2,1)==" ")add2--;else break;i=1;while(i<len)if(substr(additive2,i,1)==" ")i++;else break;additive22=substr(additive2,i,add2);if(substr(additive22,1,1)=="-"){for(i=2;i<=length(additive22);i++)button_press (substr(additive22,i,1));button_press("+/-");}elsefor(i=1;i<=length(additive22);i++)button_press(substr(additive22,i,1));button_press ("=");edit_get_text("Edit",result);len=length(result);if(substr(result,len,1)==" "||substr(result,len,1)==".")len--;else break;i=1;while(i<len)if(substr(result,i,1)==" ")i++;else break;result=substr(result,i,len);add=additive1-additive2;len=length(add);while(len>0)if(substr(add,len,1)==" "||substr(add,len,1)==".")len--;else break;i=1;while(i<len)if(substr(add,i,1)==" ")i++;else break;add=substr(add,i,len);if(add==result)tl_step("testcase"&table_Row,0,additive1&"-"&additive2&"="&(additive1-additive2)&" is equal with result"&result&",correct.");elsetl_step("testcase"&table_Row,1,additive1&"-"&additive2&"="&(additive1-additive2)&" is not equal with result"&result&",incorrect.");}ddt_close(table);结果:三.乘法代码:GUI_load("D:\\ProgramFiles\\Mercury\\Interactive1\\WinRunner\\dat\\ca lc.gui");set_window ("计算器");table = "date7.xls";rc = ddt_open(table, DDT_MODE_READ);if (rc!= E_OK && rc != E_FILE_OPEN)pause("Cannot open table.");ddt_get_row_count(table,table_RowCount);for(table_Row = 1; table_Row <= table_RowCount; table_Row ++){ddt_set_row(table,table_Row);ddt_set_row(table,table_Row);button_press ("C");additive1=ddt_val(table,"additive1");additive2=ddt_val(table,"additive2");additi1=length(additive1);while(additi1>0)if(substr(additive1,additi1,1)==" ")additi1--;else break;i=1;while(i<additi1)if(substr(additive1,i,1)==" ")i++;else break;t_additive1=substr(additive1,i,additi1);if(substr(t_additive1,1,1)=="-"){for(i=2;i<=length(t_additive1);i++)button_press (substr(t_additive1,i,1));button_press("+/-");}elsefor(i=1;i<=length(t_additive1);i++)button_press(substr(t_additive1,i,1));button_press("*");if(additive2==""){additive2=t_additive1;}additi2=length(additive2);while(additi2>0)if(substr(additive2,additi2,1)==" ")additi2--;else break;i=1;while(i<len)if(substr(additive2,i,1)==" ")i++;else break;t_additive2=substr(additive2,i,additi2);if(substr(t_additive2,1,1)=="-"){for(i=2;i<=length(t_additive2);i++)button_press (substr(t_additive2,i,1));button_press("+/-");}elsefor(i=1;i<=length(t_additive2);i++)button_press(substr(t_additive2,i,1));button_press ("=");edit_get_text("Edit",result);len=length(result);while(len>0)if(substr(result,len,1)==" "||substr(result,len,1)==".")len--;else break;i=1;while(i<len)if(substr(result,i,1)==" ")i++;else break;result=substr(result,i,len);add=additive1*additive2;len=length(add);while(len>0)if(substr(add,len,1)==" "||substr(add,len,1)==".")len--;else break;i=1;while(i<len)if(substr(add,i,1)==" ")i++;else break;add=substr(add,i,len);if(add==result)tl_step("testcase"&table_Row,0,additive1&"*"&additive2&"="&(addit ive1*additive2)&" is equal with result"&result&",correct.");elsetl_step("testcase"&table_Row,1,additive1&"*"&additive2&"="&(addit ive1*additive2)&" is not equal with result"&result&",incorrect.");}ddt_close(table);结果:四.除法代码:GUI_load("C:\\Program Files\\Mercury Interactive\\WinRunner\\dat\\calc.gui"); set_window("计算器");table = "default.xls";rc = ddt_open(table, DDT_MODE_READ);if (rc!= E_OK && rc != E_FILE_OPEN)pause("Cannot open table.");ddt_get_row_count(table,table_RowCount);for(table_Row = 1; table_Row <= table_RowCount; table_Row ++){ddt_set_row(table,table_Row);button_press ("C");additive1=ddt_val(table,"additive1");additive2=ddt_val(table,"additive2");if(length(additive1)==0)additive1=0;elselen1=length(additive1);while(len1>0)if(substr(additive1,len1,1)==" ")len1--;elsebreak;j=1;while(j<len1)if(substr(additive1,j,1)==" ")j++;elsebreak;additive3=substr(additive1,j,len1);additive1=substr(additive1,j,len1);#if(length(additive2)==0)#additive2=additive3;#elselen2=length(additive2);while(len2>0)if(substr(additive2,len2,1)==" ")len2--;elsebreak;i=1;while(i<len2)if(substr(additive2,i,1)==" ")i++;elsebreak;additive2=substr(additive2,i,len2);additive4=substr(additive2,i,len2);if(length(additive2)==0){additive2=additive3;additive4=additive3;}for(j=1;j<=length(additive1);j++)button_press (substr(additive1,j,1));button_press ("/");if(substr(additive2,1,1)=="-"){additive2=substr(additive2,2,len2); for(i=1;i<=length(additive2);i++) button_press (substr(additive2,i,1));button_press ("+/-");}elsefor(i=1;i<=length(additive2);i++)button_press (substr(additive2,i,1));button_press ("=");edit_get_text("Edit",result);len=length(result);while(len>0)if(substr(result,len,1)==" "||substr(result,len,1)==".")len--;elsebreak;i=1;while(i<len)if(substr(result,i,1)==" ")i++;elsebreak;result=substr(result,i,len);if(additive4==0)tl_step("testcase"&table_Row,0,"the result is eror 输入错误 correct");else{if((additive3/additive4)==result)tl_step("testcase"&table_Row,0,"the result is"&(additive3/additive4)&"and"&(result)&",correct");elsetl_step("testcase"&table_Row,1,"the result is"&(additive3/additive4)&"and"&(result)&",incorrect");}}ddt_close(table);结果:(二)实验体会通过此实验让我们理解并掌握WinRunner的测试流程;掌握掌握数据驱动测试脚本编写方法;我们更加认识windows计算器GUI对象;深入了解测试用例的划分,分别为windows 计算器的加、减、乘、除运算设计测试用例。
java 计算器实验报告
java 计算器实验报告Java计算器实验报告引言:计算器是我们日常生活中常用的工具,使用计算器可以快速进行数学运算。
在计算器中,我们可以通过输入数字和运算符来执行各种算术操作。
为了更好地理解计算器的工作原理,我们进行了Java计算器的实验。
一、实验目的本次实验的目的是设计和实现一个简单的Java计算器。
通过这个实验,我们可以加深对Java编程语言的理解,并且掌握Java图形用户界面(GUI)的基本知识。
二、实验环境本次实验使用的是Java开发工具包(JDK)和Eclipse集成开发环境(IDE)。
在实验之前,我们需要确保已经正确安装了JDK和Eclipse。
三、实验步骤1. 创建一个新的Java项目,并命名为"Calculator"。
2. 在项目中创建一个新的Java类,命名为"CalculatorGUI"。
3. 在"CalculatorGUI"类中,创建一个窗口,并设置窗口的标题和大小。
4. 在窗口中添加一个文本框,用于显示计算结果。
5. 在窗口中添加一些按钮,用于输入数字和运算符。
6. 为每个按钮添加事件监听器,以便在用户点击按钮时执行相应的操作。
7. 实现计算器的基本功能,包括加法、减法、乘法和除法。
8. 运行程序,测试计算器的功能。
四、实验结果经过实验,我们成功地实现了一个简单的Java计算器。
用户可以通过按钮输入数字和运算符,并且计算器可以正确地执行相应的运算。
计算结果会显示在文本框中。
五、实验总结通过这个实验,我们学习了如何使用Java编程语言创建图形用户界面,并且掌握了Java计算器的基本实现方法。
在实验过程中,我们遇到了一些问题,比如如何处理用户输入错误的情况,如何处理除数为零的情况等。
通过不断调试和改进,我们最终解决了这些问题,并实现了一个功能完善的计算器。
在今后的学习和工作中,我们可以进一步扩展这个计算器的功能,比如添加科学计算功能、实现复杂运算等。
计算机应用实验报告
实验一乘法运算实验一、实验目的:1、了解调试程序DEBUG的常用命令和功能。
2、掌握多字节乘法运算程序的编写方法。
3、学会程序调试方法。
二、实验原理三、实验内容:将两个无符号数相乘,将结果数存入规定地址。
四、实验报告内容:1、实验用源程序:开机选择“开始”→“运行”→输入“command”→输入“debug”调出debug应用程序。
Debug源程序:D 2000:0000 ;查看部分内存内容E 2000:0000 2A 30 15 1B ;写入数据D 2000:0000 ;查看输入后的数据A 回车;写程序MOV AX,2000MOV DS,AXMOV AX,[0000]MOV BX,[0002]MUL BX ;让AX乘以DX,结果存入DX:AX MOV [0004],AXMOV [0007],DXINT 20H ;正常中断程序Ctrl+M ;退出编程,由键盘输入G ;运行程序D 2000:0000 ;查看程序运行结果2、实验结果分析输出结果显示为72-61 18-05结果正确。
实验中遇到的问题,在debug里输入程序要细心,如果输入有误为保证结果的正确应重新打开debug程序。
实验中发现输入的大小写对程序的结果没有影响。
实验二除法运算实验一、实验目的:1、了解调试程序DEBUG的常用命令和功能。
2、掌握多字节除法运算程序的编写方法。
3、学会程序调试方法。
二、实验内容:将两个无符号数相除,将结果数存入规定地址。
被除数和除数的存放地址及数据如下:数据低位在前,高位在后。
三、实验报告内容:1、实验用源程序按照实验一中的方法调出debug:Debug源程序:D 2000:0000 ;查看部分内存内容E 2000:0000 5D 7C 5D 4C 3B 2A ;写入数据D 2000:0000 ;查看输入后的数据A ;写程序MOV AX,2A3BMOV DX,4C5DMOV BX,7C5DMOV AX,[0010]MOV DX,[0012]MOV BX,[0014]DIV BX ;被除数DX:AX除BX,商存入AX,余数存到DXMOV [0016],AXMOV [0018],DXINT 20H ;正常中断程序Ctrl+M ;退出编程,由键盘输入G ;运行程序D 2000:0000 ;查看程序运行结果2、实验结果分析实验正确结果:7D-FF 9E-11实验中应注意的问题,在输入数值时应高低位颠倒输入,程序运算时是先进后出。
使用显微镜的实验报告
使用显微镜的实验报告实验报告:使用显微镜一、实验目的本实验旨在让学生掌握显微镜的基本使用方法,观察不同样本并了解其特征,提高实验技能和观察能力。
二、实验原理显微镜是一种用于放大和观察微小物体的光学仪器。
通过显微镜,我们可以看到肉眼无法观察到的细节,如细胞、微生物等。
本实验将使用光学显微镜进行观察。
三、实验步骤1、准备显微镜:将显微镜放置在稳定的平面上,调整底座高低,使显微镜保持水平。
转动转换器,将低倍物镜对准载物台中央的通光孔。
2、准备样本:选择不同倍率的物镜,如4x、10x、40x等,以及不同的样本,如植物细胞、动物细胞、细菌等。
将样本放在载物台上,用载玻片固定。
3、观察样本:打开灯光,调整光圈大小,使视野明亮适中。
调节粗准焦螺旋和细准焦螺旋,使样本逐渐清晰。
观察并记录样本的特征。
4、清洗和整理:观察完毕后,用清水清洗显微镜的各个部件,晾干后收纳。
四、实验结果与讨论通过本实验,我们观察到了不同样本的详细特征。
例如,植物细胞具有明显的细胞壁、细胞核和细胞质;动物细胞则具有明显的细胞膜、细胞质和细胞核;细菌则呈现出较小的圆形形态。
通过对不同样本的观察,我们可以了解到不同生物组织的结构和特征。
五、结论本实验通过使用显微镜观察不同样本,不仅提高了我们的实验技能和观察能力,还让我们更深入地了解了微观世界中不同生物组织的结构和特征。
通过实验结果的分析和讨论,我们进一步认识到显微镜在生物学研究中的重要作用。
练习使用显微镜教案一、实验目的:1、了解显微镜的构造和各部分的功能;2、掌握显微镜的使用方法;3、观察并记录细胞的结构和特征。
二、实验材料:显微镜、载玻片、盖玻片、镊子、吸水纸、擦镜纸、小纱布、甘油三酯、香柏油。
三、实验步骤:1、打开显微镜包装,取出显微镜并放在稳定的平面上。
注意不要让显微镜的镜头直接接触硬物或脏物,以免被污染。
2、调整显微镜的底座,使显微镜稳定,确保不会滑动。
3、打开显微镜的目镜盖和物镜盖,调整目镜和物镜的高度。
前运算阶段的实验
前运算阶段的实验一、引言数学作为一门基础学科,其运算阶段是学习过程中的一个重要环节。
在以前的数学实验中,运算阶段的实验起到了扎实基础、巩固理论知识的作用。
本文将回顾以前运算阶段的实验内容,总结实验的目的、方法和结果,以及对学生学习的影响。
二、实验一:加法运算实验1. 实验目的通过加法运算实验,使学生掌握加法运算的基本概念和方法,培养他们对数字的感知能力和计算能力。
2. 实验方法将一组带有加法算式的卡片分发给学生,要求他们按照卡片上的算式进行计算,并将结果填写在答题卡上。
实验过程中,教师可以提供必要的指导和解释。
3. 实验结果通过实验,学生们通过实际操作加法算式,掌握了加法运算的基本方法。
他们能够正确地进行数字的相加,并得出正确的结果。
4. 学习影响通过这个实验,学生们对加法运算的理解更加深入,加强了他们的计算能力和逻辑思维能力。
同时,实验的成功进行也增强了学生们对数学实验的兴趣,激发了他们学习数学的热情。
三、实验二:减法运算实验1. 实验目的通过减法运算实验,使学生掌握减法运算的基本概念和方法,培养他们对数字的感知能力和计算能力。
2. 实验方法将一组带有减法算式的卡片分发给学生,要求他们按照卡片上的算式进行计算,并将结果填写在答题卡上。
实验过程中,教师可以提供必要的指导和解释。
3. 实验结果通过实验,学生们通过实际操作减法算式,掌握了减法运算的基本方法。
他们能够正确地进行数字的相减,并得出正确的结果。
4. 学习影响通过这个实验,学生们对减法运算的理解更加深入,加强了他们的计算能力和逻辑思维能力。
同时,实验的成功进行也增强了学生们对数学实验的兴趣,激发了他们学习数学的热情。
四、实验三:乘法运算实验1. 实验目的通过乘法运算实验,使学生掌握乘法运算的基本概念和方法,培养他们的乘法口诀和计算能力。
2. 实验方法将一组带有乘法算式的卡片分发给学生,要求他们按照卡片上的算式进行计算,并将结果填写在答题卡上。
算术逻辑运算实验报告
算术逻辑运算实验报告算术逻辑运算实验报告一、引言算术逻辑运算是数学中的重要分支,它研究数字和符号之间的关系以及它们之间的运算规则。
在日常生活中,我们经常进行算术逻辑运算,比如加减乘除、逻辑与或非等。
本实验旨在通过一系列实验,探索算术逻辑运算的规律和特点。
二、实验一:加法与减法1. 实验目的通过加法和减法实验,观察数字之间的相互关系,并分析运算规律。
2. 实验步骤首先,我们随机选择两个数字进行加法运算,记录结果。
然后,再选择两个数字进行减法运算,同样记录结果。
3. 实验结果与分析我们发现,在加法运算中,两个正数相加的结果仍然是正数,而两个负数相加的结果仍然是负数。
而正数与负数相加,则会根据绝对值的大小决定结果的正负性。
在减法运算中,两个正数相减的结果可能是正数或零,而两个负数相减的结果可能是负数或零。
正数与负数相减,则会根据绝对值的大小决定结果的正负性。
三、实验二:乘法与除法1. 实验目的通过乘法和除法实验,观察数字之间的相互关系,并分析运算规律。
2. 实验步骤我们选择两个数字进行乘法运算,记录结果。
然后,再选择两个数字进行除法运算,同样记录结果。
3. 实验结果与分析我们发现,在乘法运算中,两个正数相乘的结果仍然是正数,而两个负数相乘的结果则变为正数。
正数与负数相乘,则会根据负数的个数决定结果的正负性。
在除法运算中,两个正数相除的结果仍然是正数,而两个负数相除的结果则变为正数。
正数与负数相除,则会根据负数的个数决定结果的正负性。
四、实验三:逻辑与与逻辑或1. 实验目的通过逻辑与和逻辑或实验,观察逻辑运算的结果,并分析运算规律。
2. 实验步骤我们随机选择两个命题进行逻辑与运算,记录结果。
然后,再选择两个命题进行逻辑或运算,同样记录结果。
3. 实验结果与分析逻辑与运算的结果只有在两个命题都为真时才为真,否则为假。
逻辑或运算的结果只有在两个命题都为假时才为假,否则为真。
五、实验四:逻辑非1. 实验目的通过逻辑非实验,观察逻辑运算的结果,并分析运算规律。
白盒测试 实验报告
白盒测试实验报告白盒测试实验报告引言:白盒测试是软件测试中常用的一种测试方法,它通过分析程序的内部结构和逻辑,以验证软件的正确性和稳定性。
本实验旨在通过对一个简单的计算器程序进行白盒测试,探索白盒测试的原理和方法,并评估其在软件开发中的实际应用价值。
实验设计:本实验使用了一个基于Python的计算器程序作为被测试对象,该程序具有加、减、乘、除等基本运算功能。
实验设计包括了以下几个步骤:1. 程序结构分析:通过查看程序的源代码,了解程序的整体结构和模块之间的关系,为后续的测试设计提供依据。
2. 程序覆盖率分析:使用代码覆盖率工具对程序进行分析,确定测试用例需要覆盖的代码行数和分支情况,以提高测试的全面性和准确性。
3. 测试用例设计:根据程序的功能和结构特点,设计一系列测试用例,包括正常输入、边界值和异常情况等,以覆盖不同的测试场景。
4. 测试执行:按照设计的测试用例,逐个执行测试,并记录测试结果和执行过程中的问题和异常情况。
5. 结果分析:对测试结果进行分析,评估程序的稳定性和正确性,并提出改进建议。
实验过程:1. 程序结构分析:通过阅读源代码,了解到该计算器程序由界面层、逻辑层和数据层三个模块组成,各模块之间通过接口进行通信。
这样的结构设计使得程序的扩展和维护更加方便。
2. 程序覆盖率分析:使用代码覆盖率工具对程序进行分析,发现在逻辑层中有几个分支未被覆盖到,这可能导致在某些特定情况下程序出现错误。
因此,在测试用例设计中,需要特别关注这些分支情况。
3. 测试用例设计:根据程序的功能和结构特点,设计了一系列测试用例。
例如,对于加法功能,设计了正常输入的测试用例,包括两个正整数相加、两个负整数相加、一个正整数和一个负整数相加等;同时,还设计了边界值测试用例,例如对于两个最大整数相加、两个最小整数相加等。
4. 测试执行:按照设计的测试用例,逐个执行测试。
在测试过程中,发现了一些问题,例如在除法功能中,当除数为0时,程序没有正确处理异常情况,导致程序崩溃。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三乘、除法运算器设计
一、实验目的
1、掌握移位加算法设计乘法运算单元的基本思想
2、掌握阵列算法乘法运算单元的设计方法
3、掌握基于状态机的乘法运算单元的设计方法
4、掌握基于宏模块的乘除法运算器的设计方法
二、实验任务
1、完成一个基于阵列的4位无符号乘法运算器的设计;
2、完成一个基于移位加原理,用状态机实现的4位无符号乘法运算器的设计;
3、用宏模块的方法实现一个4位无符号乘法器;
4、完成一个BOOTH算法的带符号数乘法运算器的设计(选作)。
5、完成一个除法运算器的设计(选作)。
三、实验步骤
1 编写Verilog代码
2功能仿真
进行分析与综合,排除语法上的错误
建立波形仿真文件,输入激励
生成功能仿真网表
进行功能仿真,观察输出结果
3选择器件
DE2_115 开发板的使用者请选择CYCLONE IV 4CE115
4绑定管脚
5 下载验证
DE2_115 开发板的下载:使用USB-Blaster进行下载
四、实验内容
五、实验思考题
比较不同算法实现的乘法器,其运算速度和资源消耗情况。