3算术运算指令实验

合集下载

运算器实验实验报告

运算器实验实验报告

运算器实验实验报告一、实验目的运算器是计算机中进行算术和逻辑运算的部件,本次实验的目的在于深入理解运算器的工作原理,掌握其基本结构和功能,并通过实际操作和测试,提高对计算机硬件系统的认识和实践能力。

二、实验设备本次实验所使用的设备包括:计算机、数字逻辑实验箱、导线若干等。

三、实验原理运算器主要由算术逻辑单元(ALU)、寄存器、数据通路和控制逻辑等组成。

ALU 是运算器的核心部件,能够执行加法、减法、乘法、除法等算术运算以及与、或、非等逻辑运算。

寄存器用于存储参与运算的数据和运算结果,数据通路负责在各部件之间传输数据,控制逻辑则根据指令控制运算器的操作。

在本次实验中,我们采用数字逻辑电路来构建运算器的基本功能单元,并通过连线和设置控制信号来实现不同的运算操作。

四、实验内容1、算术运算实验(1)加法运算首先,将两个 8 位二进制数分别输入到两个寄存器中,然后通过控制信号使 ALU 执行加法运算,将结果存储在另一个寄存器中,并通过数码管显示出来。

通过改变输入的数值,多次进行加法运算,观察结果是否正确。

(2)减法运算与加法运算类似,将两个 8 位二进制数输入到寄存器中,使 ALU 执行减法运算,观察结果的正确性。

2、逻辑运算实验(1)与运算输入两个 8 位二进制数,控制 ALU 进行与运算,查看结果。

(2)或运算同样输入两个 8 位二进制数,进行或运算并验证结果。

(3)非运算对一个 8 位二进制数进行非运算,观察输出结果。

3、移位运算实验(1)逻辑左移将一个 8 位二进制数进行逻辑左移操作,观察移位后的结果。

(2)逻辑右移执行逻辑右移操作,对比移位前后的数据。

五、实验步骤1、连接实验设备按照实验箱的说明书,将计算机与数字逻辑实验箱正确连接,并接通电源。

2、构建电路根据实验要求,使用导线将数字逻辑芯片连接起来,构建运算器的电路结构。

3、输入数据通过实验箱上的开关或按键,将待运算的数据输入到相应的寄存器中。

熟悉并使用算术逻辑操作类指令

熟悉并使用算术逻辑操作类指令

微处理器原理课实验日志一、实验题目:熟悉并使用算术逻辑操作类指令二、实验结果本次实验的目的是为了让我们熟悉算术运算类指令,熟悉逻辑运算类指令,掌握算术运算类指令对标志位的影响。

本次实验分为验证性和操作性,对于验证性实验要求在自己理解程序的基础上去运行程序,查看运行结果。

操作性实验要求自己编写程序实现相关要求,最后运行查看结果。

第一个程序是验证性(加法减法指令),代码为:MOV A,#12HMOV R0,#24HMOV 21H,#56HADD A,#12HMOV DPTR,#4316HADD A,DPHADD A,R0CLR CSUBB A,DPLSUBB A,#25HINC ASETB CADDC A,21HINC R0SUBB A,R0MOV 24H,#16HCLR CADD A,@R0此程序的功能为:熟悉加法减法指令,尤其是ADD与ADDC、还有就是在SUBB中注意什么时候Cy标志位清零的运用;DPH、DPL 的运用等。

最后在没有运行程序之前对程序进行简单的运算,累加器A中的数据是0xE0=#83H,程序运算结果如下:按照实验要求第二个程序代码为:MOV 30H,#34HMOV 31H,#2AHMOV 32H,#0FAHMOV 33H,#48HMOV R0,#30HMOV A,@R0INC R0MOV B,@R0MUL ABMOV R1,AMOV R2,BMOV A,@R0INC R0MOV B,@R0DIV ABMOV R3,AMOV R4,B本程序的重点是分析乘法中高八位存在B寄存器中和低八位存在累加器A中,除法运算A累加器中存放的是商,B寄存器中存放的余数。

所以,分析得到乘法运算中A累加器中存放的是88H,B寄存器中存放是08H;除法运算中A累加器存放的是00H,B寄存器中存放的是2AH.程序运算的结果如下:按照第三个程序是移位指令代码为:MOV A,#39HCPL ARL ACLR CRRC ASETB CRLC ASWAP A此程序的运行结果应该是:0C6H、8DH、46H、8DH、D8H。

第三节算术运算指令

第三节算术运算指令

1、 ADD(Addition)加法指令
指令格式:ADD dest , src ;(dest) (dest)+(src) Src:立即数,寄存器,存储器。 dest:寄存器,存储器。
例:
ADD CL,10 ADD DX,SI ADD AX, MEM ADD DATA[BX], AL ;寄存器+立即数 ;寄存器+寄存器 ;寄存器+存储器 ;存储器+寄存器
双高位判别法
(2)无符号数相加溢出 根据CF判断无符号数产生溢出? CF=1无符号数相加产生溢出,但考虑进位所代表的数 值后,结果并没有错。
(一)加法指令(Arithmetic)
8088具有5种加法操作指令:
1、 ADD(Addition)加法指令 2、 ADC(Add with carry)带进位加法指令 3、 INC(Increment by 1)加 1指令
SUB WORD PTRALPHA[BX][DI],512H;存储器减立即数
这种指令影响标志位: AF、CF、OF、PF、SF、ZF标志。
2、SBB(Subtraction with borrow)带进位减法指令 格式::SBB dest,src;(dest)←(dest)-(src)-CF CF: 进位标志CF的现行值(上条指令CF值)
;存储器+1(字操作)
INC WORD PTR [DI]
INC
DS
; 错
(二)减法指令(Subtraction)
8088有7条减法指令 :
1、SUB(Subtraction)减法指令
2、SBB(Subtraction with borrow)带进位减法指令 3、DEC(Decrement by 1 ) 减 1 指令 4、NEG(Negate) 求补指令 5、CMP(Compare) 比较指令

算数运算指令实验报告

算数运算指令实验报告

实验三 算数运算指令编程设计1、计算下面各式中两个无符号数的和及差,观察CY ,并记录运算结果,并求出结果的真值。

(1)计算200+200(2)计算 36589+46542(3)计算 100-200及200-100(4)计算 36589-16542及16542-36589 1)加法的参考程序:(1)计算两个单字节数的和的参考程序: ORG 0000HMAIN :MOV A ,#200 ADD A ,#200SJMP $END结果分析:Cy=1,有进位,真值=1×256+90H =256+9×16=400 (2)计算两个双字节数的和的参考程序: ORG 0100HMAIN :MOV A ,#low(36589) (A)=(D:0XE0)=EDHADD A ,# low(46542) (A)= (D:0XE0)=BBH Cy=1 MOV 30H,A (D:0X30)=BBHMOV A ,#HIGH (36589) (A)=(D:0XE0)=8EHADDC A ,# HIGH (46542) (A)=(D:0XE0)=44H Cy=1 MOV 31H,A (D:0X31)=44HMOV A,#0 (A)=(D:0XE0)=00HADDC A,#0 (A)=(D:0XE0)=01H Cy=1 MOV 32H,A (D:0X32)=01H SJMP $END结果分析:(D:0X30)=BBH, (D:0X31)=44H, (D:0X32)=01H, 真值=144BBH =83131 2)减法的参考程序(1) 两个单字节数的减法程序100-200 ORG 0000H MAIN :CLR C MOV A ,#100SUBB A ,#200 SJMP $END结果分析:Cy =1,有借位,(A )=9CH真值=-1×256+9CH =-256+156=-100200-100ORG 0000HMAIN:CLR CMOV A,#200SUBB A,#100SJMP $END结果分析:Cy=0,无借位,(A)=64H真值=64H=100(2)两个双字节数的减法程序36589-16542ORG 0100HMAIN: CLR C Cy=0MOV A, #low(36589) (A)=(D:0XE0)=EDHSUBB A,# low(16542) (A)=(D:0XE0)=4FH Cy=0MOV 30H,A (D:0X30)=4FHMOV A,#HIGH (36589) (A)=(D:0XE0)=8EH Cy=0SUBB A,# HIGH (16542) (A)=(D:0XE0)=4EH Cy=0MOV 31H,A (D:0X31)=4EHMOV A,#0 (A)=(D:0XE0)=00HSUBB A,#0 (A)=(D:0XE0)=00H Cy=0MOV 32H,A (D:0X32)=00HSJMP $END结果分析:(D:0X32)=00H,(D:0X31)=4EH,(D:0X30)=4FH真值=4E4FH=2004716542-36589ORG 0100HMAIN: CLR C Cy=0MOV A, #low(16542) (A)=(D:0XE0)=9EHSUBB A,# low(36589) (A)=(D:0XE0)=B1H Cy=1MOV 30H,A (D:0X30)=B1HMOV A,#HIGH (16542) (A)=(D:0XE0)=40H Cy=1SUBB A,# HIGH (36589) (A)=(D:0XE0)=B1H Cy=1MOV 31H,A (D:0X31)=B1HMOV A,#0 (A)=(D:0XE0)=00HSUBB A,#0 (A)=(D:0XE0)=FFH Cy=1MOV 32H,A (D:0X32)=FFHSJMP $END结果分析:(D:0X32)=FFH,(D:0X31)=B1H,(D:0X30)=B1H,最高位有借位真值=B1B1H-16^4=45489-65536=-200472、计算下面各式中两个带符号数的和及差,观察OV,并记录运算结果,并求出结果的真值。

PLC实验六数学运算指令

PLC实验六数学运算指令

实验六数学运算指令【实验目的】1.熟悉STEP7编程软件的基本使用方法。

2.掌握STEP7编程软件梯形图程序的运行、监视及调试方法。

3.掌握基本数学运算指令的使用方法。

4.将所学运算指令知识运用于实践中,培养分析问题、解决问题能力。

【预习要求】1.复习数学运算指令的有关内容。

2.按照下面给出的实验习题控制要求进行预习,理论分析梯形图内容。

【实验任务及要求】1.为加深对本次实验指令的理解,将课堂上讲解的例题输入编程软件,下载运行,并观察实验结果。

2.将实验习题理论分析的梯形图内容进行验证。

将梯形图程序输入编程软件,下载运行,并根据运行情况进行调试、修改程序,直到通过为止。

3.例题内容要求在实验课上测试通过,实验习题内容要求课堂上进行编写及调试,实验报告需涵盖I/O分配表和梯形图。

4.要求实验报告写出心得体会:本次实验中遇到的问题、解决方案或收获。

【实验步骤】1.新建工程,进行硬件组态,编译保存。

2.将程序逐条输入,检查无误后,保存程序。

3.将工程下载到模拟器。

4.将PLC设为运行状态,根据控制要求观察程序输出状态是否正确。

【实验内容】1、整型算术运算指令练习如下指令~ 1 ~2、浮点数算术运算指令练习如下指令:加减乘除3、浮点数数学运算指令练习如下指令:~ 2 ~4、字逻辑学运算指令字逻辑运算指令在功能上包括逻辑与、或、异或。

根据操作数的数据类型又分为字型和双字型,两者的功能相同,指令形式相似,只是数据宽度不同,前者是16位的,后者是32位的。

两者也都是按位操作的。

练习如下指令:5、综合练习实验习题1(整数运算指令):某系统要求对按钮按下的次数进行计数。

若计数次数为偶数次,则指示灯以1Hz的频率闪烁;若计数次数为奇数次,则指示灯以10Hz的频率闪烁。

分析:首先应该对计数脉冲计数,偶数次数可以被2整除,奇数次数不能被2整除,这里可以用取余指令来解决。

~ 3 ~实验习题2(浮点数数学运算指令):求cos70°。

实验三 8086 常用指令练习

实验三 8086 常用指令练习

实验名称实验三 8086 常用指令练习一、实验目的1、通过实验掌握常用数据传送指令、算术运算指令。

2、MOV、XCHG、ADD、ADC、SUB、SBB等常用指令的使用。

二、实验要求1、16进制数加减法手算结果及实验结果。

2、8086 常用指令练习部分的逐条运行记录,思考结果及自编程序运行记录。

三、实验环境DOS操作系统。

四、实验内容1、传送指令1)用A命令在内存100H处键入下列内容:MOV AX,1234MOV BX,5678XCHG AX,BXMOV AH,35MOV AL,48MOV DX,75ABXCHG AX,DX图1在内存100处键入指令2)用U命令检查键入的程序并记录,特别注意左边的机器码。

图2用U命令检查键入3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。

并注意标志位有无变化。

图3 T命令逐条运行图4 T命令逐条运行图5 T命令逐条运行2、加减法指令:1)用A命令在内存200H处键入下列内容:MOV AH,34MOV AL,22ADD AL,AHSUB AL,78MOV CX,1284MOV DX,5678ADD CX,DXSUB CX,AXSUB CX,CX图6在内存200处键入指令3)用U命令检查键入的程序及对应的机器码。

图7用U命令检查键入4)用T命令逐条运行这些指令,检查并记录有关寄存器及ZF 情况。

图8 T命令逐条运行图9 T命令逐条运行图10 T命令逐条运行ZF无变化思考:这次运行还是打入T,行不行?怎么办?用R命令检查一下IP的内容。

注意T命令与IP的关系。

3、带进位加减法:1)用A命令在内存300H处键入下列内容,并用U命令检查:MOV AH,12MOV AL,84MOV CH,56MOV CL,78ADD AL,CLADC AH,CHMOV DH,A7MOV DL,58SUB DL,7FSBB DH,34图11在内存300处键入指令图12用U命令检查键入2)用T命令逐条运行这些指令,检查并记录有寄存器及CF内容。

算术运算类实验报告

算术运算类实验报告

一、实验目的1. 熟悉并掌握基本的算术运算算法。

2. 理解算术运算在编程中的应用。

3. 培养学生的逻辑思维能力和编程能力。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm三、实验内容本次实验主要涉及以下算术运算:加法、减法、乘法、除法、求余、幂运算等。

1. 加法运算加法运算是指将两个数相加得到它们的和。

以下是一个加法运算的示例代码:```pythondef add(a, b):return a + bresult = add(3, 5)print("加法运算结果:", result)```2. 减法运算减法运算是指将一个数从另一个数中减去得到它们的差。

以下是一个减法运算的示例代码:```pythondef subtract(a, b):return a - bresult = subtract(10, 4)print("减法运算结果:", result)```3. 乘法运算乘法运算是指将两个数相乘得到它们的积。

以下是一个乘法运算的示例代码:```pythondef multiply(a, b):return a bresult = multiply(2, 6)print("乘法运算结果:", result)```4. 除法运算除法运算是指将一个数除以另一个数得到它们的商。

以下是一个除法运算的示例代码:```pythondef divide(a, b):return a / bresult = divide(10, 2)print("除法运算结果:", result)```5. 求余运算求余运算是指将一个数除以另一个数得到它们的余数。

以下是一个求余运算的示例代码:```pythondef mod(a, b):return a % bresult = mod(10, 3)print("求余运算结果:", result)```6. 幂运算幂运算是指将一个数自乘多次得到它的幂。

东华大学微机系统及原理实验报告

东华大学微机系统及原理实验报告

微机系统及应用实验实验报告实验一DEBUG的启动及其基本命令的使用实验内容:6:设堆栈指针SP=2000H,AX=3000H,BX=5000H;请仿照例程的格式编一程序段将AX和BX的内容进行交换。

请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。

写出在DEBUG状态下编写、运行步骤6所要求的程序过程(要求包含源程序)以及调试所中遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。

程序清单:STACK SEGMENT STACKDB 2003H DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACKSTART: MOV AX,STACKMOV SS,AXMOV SP,2000HMOV AX,3000HMOV BX,5000HPUSH AXMOV AX,BXPOP BXMOV AH,4CHINT 21HCODE ENDSEND START运行及调试:进入调试后,运行正常。

进行反汇编调试:通过追踪指令观察SP、AX、BX变化可知对SP、AX、BX赋值正确。

将AX入栈后用显示内存单元内容的命令D观察堆栈段中SP为1FFF,2000的内容[1FFF]=00 ,[2000]=30 说明已经AX=3000已经放入到堆栈段中。

结果可以看出:AX=5000,BX=3000结果完成正确!实验二内存操作数及寻址方法实验内容:1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。

请用堆栈作为两寄存器交换内容的中间存储单元,用字处理程序编辑程序,用masm.exe和link.exe对源程序进行汇编程和连接,用DEBUG 调试程序。

2、用masm和link 对以下程序进行汇编和连接,调试程序在DEBUG调试程序状态下进行。

用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么。

第3章 80868088指令系统3(算术运算指令)PPT课件

第3章 80868088指令系统3(算术运算指令)PPT课件

INC SI
;(SI)+1
DEC CX
;(CX)-1
JNZ LL
;若(CX)0,则转LL
思考:若最高位有进位,如何改?
11
ADD/ADC指令对条件标志位(CF/OF/ZF/SF)的影响:
SF=
1 结果为负 0 否则
ZF=
1 结果为0 0 否则
CF=
1 0
和的最高有效位有向高位的进位 否则
OF= 1 两个操作数符号相同,而结果符号与之相反
无符号数 有符号数
0000 1000
8
+8
+1111 1101 10000 0101
结果5
+253 261 CF=1
+(-3) +5
OF=0
③ 有符号数溢出
0000 1000
8
+8
+0111 1101 +125 +(+125)
1000 0101 133
+133
结果-123
CF=0
OF=1
(补码表示)
2
• 两个8位数相加时有4种情况:
无符号数范围0~255 带符号数范围-128~127 ①无符号数和有符号数均不溢出
二进制相加 0000 1000 +0001 1110 0010 0110
无符号数加 8
+ 30 38
有符号数加 +8
+ (+30) +38
结果38
CF=0
OF=0
3
② 无符号数溢出
作用类似于C语言中的”--”操作符。
格式:DEC opr 操作:opr←(opr)-1

算术逻辑运算实验报告

算术逻辑运算实验报告

数学学院实验报告课程名称:计算机组成原理实验项目名称:算术逻辑运算实验一、实验目的1.了解运算器的组成结构。

2.掌握运算器的工作原理。

二、实验设备与器件PC机一台,TD-CMA实验系统一套。

三、实验原理运算器内部含有三个独立运算部件,分别为算术、逻辑和移位运算部件,要处理的数据存于暂存器A 和暂存器B,三个部件同时接受来自A和B的数据(有些处理器体系结构把移位运算器放于算术和逻辑运算部件之前,如ARM),各部件对操作数进行何种运算由控制信号S3…S0和CN来决定,任何时候,多路选择开关只选择三部件中一个部件的结果作为ALU的输出。

如果是影响进位的运算,还将置进位标志FC,在运算结果输出前,置ALU零标志。

ALU中所有模块集成在一片CPLD中。

逻辑运算部件由逻辑门构成,较为简单,而后面又有专门的算术运算部件设计实验,在此对这两个部件不再赘述。

移位运算采用的是桶形移位器,一般采用交叉开关矩阵来实现,交叉开关的原理如图1-1-2所示。

图中显示的是一个4X4的矩阵(系统中是一个8X8的矩阵)。

每一个输入都通过开关与一个输出相连,把沿对角线的开关导通,就可实现移位功能,即:(1) 对于逻辑左移或逻辑右移功能,将一条对角线的开关导通,这将所有的输入位与所使用的输出分别相连,而没有同任何输入相连的则输出连接0。

(2) 对于循环右移功能,右移对角线同互补的左移对角线一起激活。

例如,在4位矩阵中使用‘右1’和‘左3’对角线来实现右循环1位。

(3) 对于未连接的输出位,移位时使用符号扩展或是0填充,具体由相应的指令控制。

使用另外的逻辑进行移位总量译码和符号判别。

图1-1-1 运算器原理图运算器部件由一片CPLD 实现。

ALU 的输入和输出通过三态门74LS245连到CPU 内总线上,另外还有指示灯标明进位标志FC 和零标志FZ 。

请注意:实验箱上凡丝印标注有马蹄形标记‘ ’,表示这两根排针之间是连通的。

图中除T4和CLR ,其余信号均来自于ALU 单元的排线座,实验箱中所有单元的T1、T2、T3、T4都连接至控制总线单元的T1、T2、T3、T4,CLR 都连接至CON 单元的CLR 按钮。

实验四加减乘除等算术运算指令

实验四加减乘除等算术运算指令

实验四加减乘除算术运算类指令一.实验目的1.学习掌握加减乘除等算术运算类指令的功能2.学习掌握加减乘除指令对FLAG的影响二。

实验工具软件MS-DOS DEBUG PC机三.实验过程及调试结果1.加法指令(1)实现无符号数相加例如 25+36-a 2000:00002000:0000 mov al,192000:0002 mov bl,242000:0004 add al,bl2000:0006-g=2000:0000 2000:0006结果:-r(AL)=3D CF=0 ZF=0 PF=0结果解释:(AL)=3D,该无符号数对应的真值是61。

由CF标志位0标明无符号数没有进位(超出目的操作数表示范围),“和”结果可用。

人工验算真值“和”结果:正确的。

(2)实现有符号数相加例如(-25)+(-46)-a 2000:00002000:0000 mov al,E72000:0002 mov bl,D22000:0004 add al,bl2000:0006-g=2000:0000 2000:0006结果:-r(Al)=B9H=(-71)补 OF=0 SF=1 ZF=0结果解释:结果解释:(AL)=?,对应的真值是?OF=?,表明结果是?SF=?表明?人工验算真值“和”结果:2.减法指令(1)实现无符号数减。

例如 36-15-a 2000:00002000:0000 mov al,242000:0002 mov bl,0f2000:0004 SUB al,bl2000:0006-g=2000:0000 2000:0006观察 al,OF,CF,ZF,SF结果解释:(AL)=?,对应的真值是?CF=?,表明结果是?人工验算和计算机结果解释比较,结论是?(2)实现有符号数(-25)-(-46)-a 2000:00002000:0000 mov al,E72000:0002 mov bl,d22000:0004 SUB al,bl2000:0006-g=2000:0000 2000:0006观察 al,OF,CF,ZF,SF,分析结果是否正确,并加以算术验证结果解释:(AL)=?,对应的真值是?OF=?,表明结果是?SF=?表明?3。

第3章 计算机算术指令

第3章 计算机算术指令

乘法指令
无符号数乘法指令: MUL SRC
带符号数乘法指令:
IMUL SRC
执行操作: 字节操作数 (AX) (AL) * (SRC) 字操作数 (DX, AX) (AX) * (SRC)
注意:
* * * * AL (AX) 为隐含的乘数寄存器。 AX (DX,AX) 为隐含的乘积寄存器。 SRC不能为立即数。 除CF和OF外,对条件标志位无定义。
注意:
* 除DEC指令不影响CF标志外,均对条件标志位有 影响。
* SUB、SBB和CMP指令是双操作数指令,它们的 两个操作数不能同时为存储器寻址方式,并且两 个操作数的类型要一致。
* DEC和NEG指令是单操作数指令,它们的操作数 不能使用立即数方式 。
错误格式举例
SUB SUB SUB SUB DEC NEG DEC NEG 5,AL × AL,1234H × [BX],[2000H] × [BX],5 × 3 × 4 × [SI] × [DI] ×
算术指令:

加法指令 ADD、ADC、INC 减法指令 SUB、SBB、DEC、NEG、CMP 乘法指令


MUL、IMUL

除法指令 DIV、IDIV
算术运算指令包括二进制运算及十进制运算指 令。算术指令用来执行算术运算,它们中有双 操作数指令,也有单操作数指令。如前所述, 双操作数指令的两个操作数不允许同时使用存 储器寻址方式。单操作数指令不允许使用立即 数方式。算术指令的寻址方式,均遵循这一规 则。
加法指令 加法指令: ADD DST, SRC 执行操作: (DST) (SRC) + (DST) ADD
带进位加法指令: ADC DST, SRC 执行操作: (DST) (SRC) + (DST) + CF

算术运算实验报告总结

算术运算实验报告总结

一、实验目的本次实验旨在通过计算机编程实现对基本算术运算(加、减、乘、除)的模拟,加深对算术运算原理的理解,提高编程能力和问题解决能力。

二、实验内容1. 实验环境(1)操作系统:Windows 10(2)编程语言:Python 3.82. 实验内容(1)编写函数实现加、减、乘、除运算(2)编写主程序,实现用户输入两个数和运算符,调用函数进行计算,并输出结果(3)测试不同类型数据(整数、浮点数、负数)的运算结果三、实验步骤1. 导入Python内置库```pythonimport sys```2. 编写算术运算函数```pythondef add(x, y):return x + ydef subtract(x, y):return x - ydef multiply(x, y):return x ydef divide(x, y):if y == 0:print("除数不能为0")sys.exit()return x / y```3. 编写主程序```pythondef main():while True:num1 = float(input("请输入第一个数:"))num2 = float(input("请输入第二个数:"))operator = input("请输入运算符(+、-、、/):") if operator == '+':result = add(num1, num2)elif operator == '-':result = subtract(num1, num2)elif operator == '':result = multiply(num1, num2)elif operator == '/':result = divide(num1, num2)else:print("运算符错误,请重新输入")continueprint("运算结果:", result)break```4. 运行主程序```pythonif __name__ == '__main__':main()```四、实验结果与分析1. 正确实现加、减、乘、除运算在实验中,我们成功实现了加、减、乘、除运算,并分别定义了四个函数来执行这些运算。

算术运算指令

算术运算指令

算术运算指令摘要:本文介绍了算术运算指令,首先对其功能和特点进行了概述;接着介绍了具体的指令和它们的功能;随后介绍了如何使用它们;最后总结了它们的有点和缺点。

关键词:算术运算;指令;功能;使用1. Introduction算术运算指令是一类用于快速执行算术运算操作的指令。

它们可以快速而准确地从计算机存储器中取出数据,并在执行算术运算时将数据与指令指示结合起来。

依据实际应用,算术运算指令可分为加法、减法、乘法、除法、移位、取模、取反、转换等指令。

它们的优点在于快速运算,精确度高,节省存储空间,指令少,可混合使用,易于编程。

2. Specific Instructions(1)加法运算指令:加法运算指令是一种最常用的算术运算指令,用于完成两个操作数的加法运算,其形式为“add a,b”,即a+b,其中,a是被加数,b是加数,运算后的结果存放在a中。

(2)减法运算指令:减法运算指令用于实现两个操作数的减法计算,其形式为“sub a,b”,即a-b,其中,a是被减数,b是减数,计算结果存放在a中。

(3)乘法运算指令:乘法运算指令用于实现两个操作数的乘法计算,其形式为“mul a,b”,即a×b,其中,a是被乘数,b是乘数,计算结果存放在a中。

(4)除法运算指令:除法运算指令用于实现两个操作数的除法计算,其形式为“div a,b”,即a÷b,其中,a是被除数,b是除数,计算结果存放在a中。

(5)移位运算指令:移位运算指令用于将一个操作数中的二进制位进行左移或右移操作,其形式为“shl a,b”或“shr a,b”,即将a向左移或向右移b位,可以用来快速乘以或除以2的N次方,计算结果存放在a中。

(6)取模运算指令:取模运算指令用于实现两个操作数的取模计算,其形式为“mod a,b”,即取a对b的余数,计算结果存放在a中。

(7)取反运算指令:取反运算指令用于实现一个操作数的取反计算,其形式为“neg a”,即将a按照求补原理取反,计算结果存放在a中。

实验三 算术运算指令实验报告

实验三 算术运算指令实验报告

实验三算术运算指令实验报告通信0704 070900813 韩一帆一.实验目的1.学习算术运算指令的用法。

2.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。

二.实验内容编写三个完整的汇编语言源程序,完成以下计算。

其中X、Y、Z、R、W均为存放16位带符号数单元的地址。

(1)Z←W+(Z-X)DA TA SEGMENTX DW 0002HZ DW 3220HW DW 012FHDA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,ES:DA TASTART: MOV AX,DA TAMOV DS,AXMOV ES,AX;运算Z<=W+(Z-X)MOV AX,[Z]SUB A X,[X]ADD AX,[W]MOV [Z],AX;回显运算结果(ASCII码)MOV AH,02MOV DL,BYTE PTR [Z+1]INT 21HMOV AH,02MOV DL,BYTE PTR [Z]INT 21H;返回DOSMOV AH,4CHINT 21HCODE ENDSEND START运行结果:3M(2)Z←W-(X+6)-(R+9)DA TA SEGMENTX DW 0000HR DW 0030HW DW 338FHZ DW ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,ES:DATA START: MOV AX,DA TAMOV DS,AXMOV ES,AX;运算Z←W-(X+6)-(R+9)MOV AX,RADD AX,9MOV BX,XADD BX,6ADD AX,BXMOV BX,WSUB B X,AXMOV Z,BX;回显运算结果(ASCII码)MOV AH,02MOV DL,BYTE PTR [Z+1]INT 21HMOV AH,02MOV DL,BYTE PTR [Z]INT 21H;返回DOSMOV AH,4CHINT 21HCODE ENDSEND START运行结果:3P(3)Z←(W*X)/(Y+6),R←余数DA TA SEGMENTX DW 010CHW DW 0003HY DW 00FAHR DW ?Z DW ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,ES:DATASTART: MOV AX,DA TAMOV DS,AXMOV ES,AX;Z←(W*X)/(Y+6),R←余数MOV AX,[W]IMUL WORD PTR [X]IDIV WORD PTR [Y]MOV [Z],AXMOV [R],DX;回显运算结果的商(ASCII码)MOV AH,02MOV DL,BYTE PTR [Z+1]INT 21HMOV AH,02MOV DL,BYTE PTR [Z]INT 21H;回显运算结果的余数(ASCII码)MOV AH,02MOV DL,BYTE PTR [R+1]INT 21HMOV AH,02MOV DL,BYTE PTR [R]INT 21H;返回DOSMOV AH,4CHINT 21HCODE ENDSEND START运算结果:❤ 6三.实验心得通过这次的实验让我学习乐算术运算指令的用法以及熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。

算术指令实验报告总结(3篇)

算术指令实验报告总结(3篇)

第1篇一、实验背景算术指令实验是计算机科学领域的一项基础实验,旨在通过编程实现对基本算术运算的模拟。

本次实验主要涉及加法、减法、乘法和除法四种运算,通过编写程序来模拟这些运算过程,并分析实验结果。

二、实验目的1. 理解算术运算的基本原理;2. 掌握编程语言中算术运算的实现方法;3. 分析算术运算的精度和误差;4. 提高编程能力和问题解决能力。

三、实验内容1. 加法运算(1)使用编程语言实现两个整数的加法运算;(2)使用编程语言实现两个浮点数的加法运算;(3)分析加法运算的精度和误差。

2. 减法运算(1)使用编程语言实现两个整数的减法运算;(2)使用编程语言实现两个浮点数的减法运算;(3)分析减法运算的精度和误差。

3. 乘法运算(1)使用编程语言实现两个整数的乘法运算;(2)使用编程语言实现两个浮点数的乘法运算;(3)分析乘法运算的精度和误差。

4. 除法运算(1)使用编程语言实现两个整数的除法运算;(2)使用编程语言实现两个浮点数的除法运算;(3)分析除法运算的精度和误差。

四、实验过程1. 确定实验环境,选择合适的编程语言(如Python、C++等);2. 编写加法运算程序,测试不同类型数据的加法运算;3. 编写减法运算程序,测试不同类型数据的减法运算;4. 编写乘法运算程序,测试不同类型数据的乘法运算;5. 编写除法运算程序,测试不同类型数据的除法运算;6. 分析实验结果,记录精度和误差。

五、实验结果与分析1. 加法运算(1)整数加法运算结果与预期一致,无误差;(2)浮点数加法运算存在精度误差,但符合IEEE 754标准;(3)加法运算精度受限于编程语言和计算机硬件。

2. 减法运算(1)整数减法运算结果与预期一致,无误差;(2)浮点数减法运算存在精度误差,但符合IEEE 754标准;(3)减法运算精度受限于编程语言和计算机硬件。

3. 乘法运算(1)整数乘法运算结果与预期一致,无误差;(2)浮点数乘法运算存在精度误差,但符合IEEE 754标准;(3)乘法运算精度受限于编程语言和计算机硬件。

单周期CPU设计实验报告

单周期CPU设计实验报告

《计算机组成原理与接口技术实验》实验报告学院名称:学生姓名:学号:专业(班级):合作者:时间:2016年4月25日成绩:实验二:一.实验目的1.掌握单周期CPU数据通路图的构成、原理及其设计方法;2.掌握单周期CPU的实现方法,代码实现方法;3.认识和掌握指令与CPU的关系;4.掌握测试单周期CPU的方法。

二.实验内容设计一个单周期CPU,该CPU至少能实现以下指令功能操作。

需设计的指令与格式如下:==> 算术运算指令说明:以助记符表示,是汇编指令;以代码表示,是机器指令功能:rd←rs + rt。

reserved为预留部分,即未用,一般填“0”。

功能:rt←rs + (sign-extend)immediate;immediate符号扩展再参加“加”运算。

完成功能:rd←rs - rt==> 逻辑运算指令做“0”扩展再参加“或”运算。

(5)and rd , rs , rt功能:rd←rs & rt;逻辑与运算。

==> 传送指令(7)move rd , rs功能:rd←rs + $0 ;$0=$zero=0。

==> 存储器读/写指令(8)sw rt ,immediate(rs) 写存储器功能:memory[rs+ (sign-extend)immediate]←rt;immediate符号扩展再相加。

(9) lw rt , immediate (rs) 读存储器功能:rt ← memory[rs + (sign-extend)immediate ];immediate 符号扩展再相加。

==> 分支指令(10)beq rs,rt,immediate功能:if(rs=rt) pc ←pc + 4 + (sign-extend)immediate <<2;特别说明:immediate 是从PC+4地址开始和转移到的指令之间指令条数。

immediate 符号扩展之后左移2位再相加。

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

2.3 算术运算指令实验
一、实验目的
·掌握单字节的加减法指令的使用。

·掌握单字节的乘除法指令的使用。

·掌握用Keil调试汇编源程序的方法。

·掌握用Proteus调试汇编源程序的方法。

二、实验预备知识
算术运算指令对程序状态寄存器PSW中的相关位会产生不同的影响。

具体如下:◇执行加法指令时,当和的第3位或第7位有进位时,分别将AC、CY标志位置1;否则为O。

如果第6位向第7位有进位而第7位没有向前进位,或者如果第7位向前有进位而第6位没有向第7位进位,OV=1,否则OV-O。

该操作也影响标志位P。

◇执行减法指令时,如果第7位有借位,则CY置1,否则清O。

若第3位有借位,则 AC置1;否则清O。

两个带符号数相减,还要考查OV标志,若OV为1,表示差数溢出,即破坏了正确结果的符号位。

该操作也影响标志位P。

◇执行乘法指令时,若乘积大子OFFH,则OV置1,否则清o(此时B的内容为0)。

CY总是被清O。

该操作也影响标志位p。

◇执行除法指令时,若除数(B) -OOH.则结果无法确定,OV置l。

CY总是被清O。

该操作也影响标志位P。

三、实验内容
将算术运算指令分成两类,分别编写两个小程序,以完成数据的加减法、乘除法运算。

1.参考程序i-hn减法运算
(1)将立即数# B5H、#36H、#89H分别传送至内部RAM区40H、R2、A中。

(2)将内部RAM区40H中的内容与A中的内容相加,然后再与R2中的内容相加,结果存放至内部RAM区50H中。

(3)将A中的内容与内部RAM区40H中的内容相减,结果存放至内部RAM区60H中。

2.参考程序2——乘除法运算
(1>将立即数#75H、#31H分别传送至内部RAM区15H、33H中。

(2)将内部RAM区15H单元的内容与33H单元的内容相乘。

(3)将乘积的高8位和低8位分别传送至内部RAM区31H、30H中。

(4)将内部RAM区15H单元的内容除以33H单元的内容。

(5)将商和余数分别传送至内部RAM区41H、40H中。

四、实验参考程序
参考程序2:乘除法运算
五、实验步骤
1.用实验系统完成实验的步骤
(1)输入源程序。

按第
(2)单步运行程序。

即每按一次单步运行键,只执行一条指令。

(3)每执行一条指令后,根据参考程序检查数据栏要求检查每条指令的执行结果,以加深对算术运算指令的理解。

2.用Keil软件完成实验的步骤
(1)建立工程文件,选择单片机。

工程文件名为“add”,选择单片机型号为Atmel的89C51。

(2)建立源文件,加载源文件。

源文件名为“add. ASM”。

(3)设置工程的配置参数。

“目标”标签页的晶振频率栏设为12MHz,“输出”标签页的生成HEX文件选择框选中。

(4)进行编译和连接。

(5)进入调试模式,打开存储器窗口。

存储器#1窗口显示以地址OOH开始的片内 RAM各个存储单元。

(6)单步运行程序。

单击“调试”一“单步”或调试工具栏的单步按钮飘,通过存储器窗口和工程窗口的寄存器标签页观察每条指令执行后数据处理的结果,以加深对算术运算指令的理解。

程序调试窗口如图2-6所示。

3.用Proteus软件完成实验的步骤
(2)新建设计文件、设Proteus尺寸、设置网格、保存设AT89C51(件名为“add”。

:兰l
(2)选取元器件。

从Proteus元器件库中选取元器件AT89c51(单片机)。

(3)放置元器件、编辑元器件、放置终端、连线。

按图2-8所示放置元器件并连线
(4)添加源程序、编辑源程序、编译源程序。

源文件名为“add. ASM”。

(5)加载目标代码文件。

“Clock Frequency”栏中的频率要设为12MHz。

(6)仿真。

单击仿真工具栏“单步运行”按钮l◆,进入单步运行状态。

分别打开]寄存器窗口、特殊功能寄存器窗口、片内数据存储器窗口和源代码调试窗口。

单击源代码调试窗口“单步执行”按钮蒸一次,执行一条指令,通过各调试窗口观察每条指令执行后数据处理的结果,以加深对算术运算指令的理解。

程序调试窗口如图
2-8所示。

六、实验分析
1.分析不带进位的加法指令和带进位的加法指令的区别。

2.用带进位的减法指令实现不带进位的减法的方法。

七、实验思考
1.BCD码调整指令能否直接用于减法指令后面?
2.执行除法指令时,若寄存器B的内容为0,结果会如何?。

相关文档
最新文档