3算术运算指令实验
- 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,结果会如何?