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实验六数学运算指令

实验六数学运算指令【实验目的】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 常用指令练习一、实验目的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中的内容是什么。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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,结果会如何?。