熟悉并使用算术逻辑操作类指令
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微处理器原理课实验日志
一、实验题目:熟悉并使用算术逻辑操作类指令
二、实验结果
本次实验的目的是为了让我们熟悉算术运算类指令,熟悉逻辑运算类指令,掌握算术运算类指令对标志位的影响。本次实验分为验证性和操作性,对于验证性实验要求在自己理解程序的基础上去运行程序,查看运行结果。操作性实验要求自己编写程序实现相关要求,最后运行查看结果。
第一个程序是验证性(加法减法指令),代码为:
MOV A,#12H
MOV R0,#24H
MOV 21H,#56H
ADD A,#12H
MOV DPTR,#4316H
ADD A,DPH
ADD A,R0
CLR C
SUBB A,DPL
SUBB A,#25H
INC A
SETB C
ADDC A,21H
INC R0
SUBB A,R0
MOV 24H,#16H
CLR C
ADD A,@R0
此程序的功能为:熟悉加法减法指令,尤其是ADD与ADDC、还有就是在SUBB中注意什么时候Cy标志位清零的运用;DPH、DPL 的运用等。最后在没有运行程序之前对程序进行简单的运算,累加器A中的数据是0xE0=#83H,程序运算结果如下:
按照实验要求第二个程序代码为:
MOV 30H,#34H
MOV 31H,#2AH
MOV 32H,#0FAH
MOV 33H,#48H
MOV R0,#30H
MOV A,@R0
INC R0
MOV B,@R0
MUL AB
MOV R1,A
MOV R2,B
MOV A,@R0
INC R0
MOV B,@R0
DIV AB
MOV R3,A
MOV R4,B
本程序的重点是分析乘法中高八位存在B寄存器中和低八位存在累加器A中,除法运算A累加器中存放的是商,B寄存器中存放的余数。所以,分析得到乘法运算中A累加器中存放的是88H,B寄存器中存放是08H;除法运算中A累加器存放的是00H,B寄存器中存放的是2AH.程序运算的结果如下:
按照第三个程序是移位指令代码为:
MOV A,#39H
CPL A
RL A
CLR C
RRC A
SETB C
RLC A
SWAP A
此程序的运行结果应该是:0C6H、8DH、46H、8DH、D8H。
操作性实验,按照要求书写代码如下:
ORG 00H MOV 30H,#56H MOV 31H,#34H MOV 32H,#12H MOV 40H,#90H MOV 41H,#78H MOV 42H,#56H MOV R0,#30H MOV R1,#40H MOV A,@R0 ADDC A,@R1 DA A
MOV 50H,A INC R0
INC R1
MOV A,@R0 ADDC A,@R1 DA A
MOV 51H,A INC R0
INC R1
MOV A,@R0 ADDC A,@R1 DA A
MOV 52H,A
END
运行结果为:(50H)=46H, (51H)=13H,(52H)=69H.
三、实验过程中的问题及解决方案
在本次实验中,对验证性实验出现的问题,自己对程序代码的不熟悉,理解上出现了问题,经过查阅书籍最后都一一解决。
对于操作性实验遇见的问题是,开始运算结果总是在(51H),(52H)的数据上差一。最后在老师的指点下得到解决,问题是自己没有理解到标志位Cy.以及ADD与ADDC的具体该怎么运用。