ImageVerifierCode 换一换
格式:DOCX , 页数:7 ,大小:20.26KB ,
资源ID:5115980      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5115980.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理单片机汇编实验报告.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理单片机汇编实验报告.docx

1、微机原理单片机汇编实验报告微机原理(单片机汇编)实验报告软件实验报告软件实验一一、实验目的1.熟悉软件实验的基本步骤和汇编程序的调试方法; 2.了解内存块的移动方法;3.了解将十六进制数转换成ASCII值的方法。二、实验原理用MOV和MOVX指令可以进行数据的赋值和移动,用循环可以完成大量数据的复制。三、实验内容及步骤1、 软件设置为模拟调试状态,在所建的Project文件中添加例程1的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序。打开CPU窗口,观察CPU窗口各寄存器的变化。打开View菜单中的Memory Window,可以观察内部RAM、外部RAM的数据和程序存储

2、器中的程序。在Address窗口输入X:8000H后回车,观察8000H-800FF起始的256个字节单元的内容。2、 新建一个Project文件,添加例程2的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序。打开View菜单中的Memory Window,在Address窗口的Memory#1输入X:3000H后回车,点击运行按钮后, 在Memory#2输入X:4000H后回车,观察外部RAM3000H和4000H中的内容。3、 添加将片内30H-3FH单元的内容复制片外片外1030H103FH中的源程序,编译运行,观察比较30-3FH单元中的内容和片外1030H-103

3、FH中的内容。4、 添加将30H、31H单元中的十六进制数,转换成ASCII码,存放到40H开始的4个单元中的源程序,编译运行,观察结果。5、 添加求内部RAM 30H37H单元中8个无符号数的算术和的源程序,8个无符号数设定为25H,36H,4AH,65H,7FH,82H,9BH,1DH,观察39H,38H中的数字是否分别为02H,C3H。四、实验结果 1. 2.步骤1的结果为8000H-80FFH的内容都为1.步骤2的结果为3000H起始的256个字节存储块与4000H起始的256个字节存储块各单元内数据对应相同。13. 4. 5.步骤3的结果为片外1030H-103FH中的内容与片内30

4、H-3FH单元的内容相同。 步骤4的结果为将30H、31H中的十六进制数转换成了ASCII码,并存入到40H步骤5的结果为8个无符号数的和为02C3H。开始的4个单元中。五、思考题1、 如何将存储器块的内容置成某固定值(例全填充为0FFH) 请用户修改程序,完成此操作。答:程序修改如下:将MAIN修改如下即可: MAIN: MOV DPTR, #STARTMOV R0,#0MOV A, #0FFH2、 若源块地址和目标块地址有重叠,程序该如何设计?假设源块地址20XXH,目标块地址2050H,移动块长度80H。 答:程序修改如下: ORG 0000H MOV DPTR, #20XXH MOV

5、A, #01H MOV R5, #0 LOOP: MOVX DPTR, A INC DPTR DJNZ R5, LOOP MOV R0, #20H MOV R1, #00H MOV R2, #20H MOV R3, #50H MOV R7, #7FH LOOP1: MOV DPH, R02MOV DPL, R3 MOVX DPTR, A CLR C MOV A, R1 SUBB A, #0 MOV R1, A CLR C MOV A, R3 SUBB A, #0 MOV R3, A MOV A, R0 SUBB A, #0 MOV R0, A MOV A, R2 SUBB A, #0 MOV

6、R2, A DJNZ R7, LOOP1 SJMP $ ENDMOV DPL, R1 MOVX A, DPTR MOV DPH, R2六、源程序1、将片内30H-3FH单元的内容复制片外片外1030H103FH中 ORG 0000H MOV R0, #30HMOV DPTR, #1030HMOV R7,#10H LOOP1:MOV A, #0FHMOV R0, AINC R0 DJNZ R7, LOOP1MOV R0, #30HMOV R7,#10H LOOP: MOV A,R0INC R0 MOVX DPTR, AINC DPTR DJNZ R7, LOOPSJMP $END2、 将30H、

7、31H单元中的十六进制数,转换成ASCII码,存放到40H开始的4个单元中ORG0100H MOV30H, #0FH MOV31H, #11H MOVR0, #41H MOVR0, #00H MOVA, 30H XCHD A, R0 ORL41H, #30H SWAP AORLA, #30H3MOV40H, A MOVR0, #43H MOVR0, #00H MOVA, 31H XCHD A, R0 ORL43H, #30H SWAP AORLA, #30H MOV42H, A END3、 求内部RAM 30H37H单元中8个无符号数的算术和 ORG 0000HMOV 30H, #25HMOV

8、 31H, #36HMOV 32H, #4AHMOV 33H, #65HMOV 34H, #7FHMOV 35H, #82HMOV 36H, #9BHMOV 37H, #1DHMOV R0, #30HMOV 39H, #0MOV R7, #8HCLR CMOV A, R0 Loop: INC R0ADD A, R0MOV 38H, AMOV A,39HADDC A, #0MOV 39H, AMOV A, 38HCLR CDJNZ R7, LoopSJMP $END4软件实验二一、实验目的1、 熟悉软件实验的基本步骤和汇编程序的调试方法; 2、 掌握简单的数值算法;3、 掌握多分支结构程序的编程

9、方法。二、实验原理将给定的一字节二进制数,转换成十进制码的方法为将数除以100,得百位数,保存百位数,再将余数除以10,得十位数并保存,最后的余数为个位数,将其保存。用A和B两个寄存器来完成除法,被除数和商放在A,除数和余数放在B。三、实验及步骤1、 在所建的Project文件中添加例程的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序。打开CPU窗口,观察CPU窗口各寄存器的变化。打开View菜单中的Memory Window,在Address窗口输入D:30H后回车,点击运行按钮,观察地址30H、31H、32H的数据变化。2、添加实验书实验内容1的源程序,编译,运行,观

10、察(33H)=0x58, (32H)=0xA2, (31H)=0x34, (30H)=0x7E和(43H)=0x07, (42H)=0x68, (41H)=0x85, (40H)=0x3B的差是否为(33H)=0x51, (32H)=0x39, (31H)=0xAF, (30H)=0x43。3、添加实验书实验内容2的源程序,编译,运行,观察(0100H)=0x10, (0101H)=0x32, (0102H)=0x54, (0103H)=0x76和(0110H)=0x78, (0111H)=0x56, (0112H)=0x34, (0113H)=0x92的和是否为(0120)=0x88, (0

11、121)=0x88, (0122)=0x88, (0123)=0x68, (0124)=0x01。4、添加实验书实验内容3的源程序,编译,运行。四、实验结果 1. 2. 3.步骤1的结果为,30H内容将更新为01,31H更新为02,32H更新为03。 步骤2的结果为,33H,32H,31H,30H中的数字分别为0x51,0x39,0xAF,0x43. 步骤3的结果为,0120,0121,0122,0123中的数分别为0x88,0x88,0x88。0x68,0x01.54.步骤4的结果为,A中显示的为R3中的数的平方。五、思考题BCD码转换成二进制数的算法是什么?答:BCD码转换成二进制的算法和

12、二进制数转换成BCD码的算法相反,是高位乘10再与低位相加。六、源程序1、无符号多字节二进制数据减法。被减数放在30H开始的4个单元中,减数放在40H开始的4个单元中,差放入30H开始处 ORG 0000H MOV R0, #30H MOV R1, #40H MOV R7, #04H CLR C LOOP: MOV A, R0 SUBB A, R1 MOV R0, A INC R0 INC R1 DJNZ R7, LOOP SJMP $ END2、 多字节BCD码加法运算。两个4字节长的BCD码加数分别存放在外部RAM 0100H和0110H开始的单元中,计算两数之和,结果保存在0120H开始

13、的9个单元中。 ORG 0 MOV DPH #1H6MOV DPL #0 MOV R0, #30H MOV R7, #04H LOOP1: MOVX A, DPTR MOV R0, A INC DPTR INC R0 DJNZ R7, LOOP1 MOV DPL, #10H MOV R0, #40H MOV R7, #04H LOOP2: MOVX A, DPTR MOV R0, A INC DPTR INC R0 DJNZ R7, LOOP2 MOV DPL, #20H MOV R0, #30H MOV R1, #40H CLR C LOOP3:2、 分别用近程查表指令和远程查表指令,查找R

14、3内容的平方值。R3内容小于等于0FH。近程查表指令:ORG 0 MOV A,R3 ADD A,#2 MOVC A,A+PC7MOV A, R0 ADDC A, R1 DA A INC R0 INC R1 MOVX DPTR, A INC DPTR DJNZ R7, LOOP3 MOV A, #0 ADDC A, #0 MOVX DPTR, A SJMP $ ENDSJMP $TABL:DB 00H,01H,04H,09HDB 10H,19H,24H,31HDB 40H,41H,64H,79HDB 0A9H,0C4H,0E1H END远程查表指令: ORG 0MOV DPTR,#TABL MO

15、V A,R3 MOVC A,A+DPTR SJMP $ ORG 4000HTABL:DB 00H,01H,04H,09HDB 10H,19H,24H,31HDB 40H,41H,64H,79HDB 0A9H,0C4H,0E1HEND8软件实验三一、实验目的1、 熟悉软件实验的基本步骤和汇编程序的调试方法; 2、 掌握数值的加减运算;3、 掌握用查表的方法将BCD值转换成ASCII值。二、实验原理将一个BCD数转换成ASCII值的方法为:先将高四位用查表法转成ASCII码,再将低四位用查表法转成ASCII码。三、实验及步骤1、 在所建的Project文件中添加例程的源程序进行编译,编译无误后,可

16、以选择单步或跟踪执行方式或全速运行程序。打开CPU窗口,观察CPU窗口各寄存器的变化,打开View菜单中的Memory Window,在Address窗口输入D:30H后回车,点击运行按钮,观察地址30H、31H的数据变化。2、 添加实验书实验内容1的源程序,选两组数据,一组含有要查找的字节,一组不含要查找的字节,编译,运行,观察程序运行后A的内容。3、 添加实验书实验内容2的源程序,输入-69H,65H,-7H, -25H ,-47H,56H, -3H,17H,6H,-5H,-45H, -1H, -57H, 23H ,-5H,-13H,编译,运行,观察2FH与2EH单元中的内容。4、 添加实

17、验书实验内容3的源程序,输入61H, -19H,12H, 0,78,3, -13H,0,17H,-69H,-5H,-14H,-31H,-43H,-67H,0编译,运行,观察2FH,2EH,2DH单元中的结果。四、实验结果 1. 2. 3. 4.五、思考题步骤1的结果为30H更新为31,31H更新为41。步骤2的结果为,当数据中含有要查找的字节时,A中为要查找的字节;当数据步骤3的结果为,正数的和为89,负数的和为-199. 步骤4的结果为,2FH、2EH、2DH单元的值分别为5,8,3.中不含要查找的字节时,A中显示FFH。9BCD码和ASCII码有哪些区别?答:BCD码是用二进制数来表示十进

18、制数的表示方法。有压缩BCD码和非压缩BCD码两种。ASCII码是美国国家信息交换标准字符码的字头缩码。采用7位二进制代码对字符进行编码。BCD码和ASCII码是两种不同的编码方法,BCD码只能表示数字,ASCII码除了表示数字之外还可以表示通用控制字符,英文字母和专用符号。六、源程序1、 查找关键字节,要查找的字节在R3中,一串字节存放在30H开始的20个单元中,查找结果放入A,若查找不到,则将FFH放入A. ORG 0 MOV R0, #30H MOV R7, #14H LOOP: MOV A, R0 CLR C SUBB A, R3 JZ DONE INC R0 DJNZ R7, LOO

19、P MOV A, #0FFH SJMP OVER DONE: MOV A, R0 OVER: SJMP OVER END2、 在内部RAM的30H单元开始,有一串带符号数据块,其长度在10H单元中。编程求其中正数与负数的和,并分别存入2FH与2EH开始的2个单元中。 ORG 0MOV 30H,#-69H MOV 31H,#65H10软件实验报告软件实验一一、实验目的1.熟悉软件实验的基本步骤和汇编程序的调试方法; 2.了解内存块的移动方法;3.了解将十六进制数转换成ASCII值的方法。二、实验原理用MOV和MOVX指令可以进行数据的赋值和移动,用循环可以完成大量数据的复制。三、实验内容及步骤1

20、、 软件设置为模拟调试状态,在所建的Project文件中添加例程1的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序。打开CPU窗口,观察CPU窗口各寄存器的变化。打开View菜单中的Memory Window,可以观察内部RAM、外部RAM的数据和程序存储器中的程序。在Address窗口输入X:8000H后回车,观察8000H-800FF起始的256个字节单元的内容。2、 新建一个Project文件,添加例程2的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序。打开View菜单中的Memory Window,在Address窗口的Memory#1输入X

21、:3000H后回车,点击运行按钮后, 在Memory#2输入X:4000H后回车,观察外部RAM3000H和4000H中的内容。3、 添加将片内30H-3FH单元的内容复制片外片外1030H103FH中的源程序,编译运行,观察比较30-3FH单元中的内容和片外1030H-103FH中的内容。4、 添加将30H、31H单元中的十六进制数,转换成ASCII码,存放到40H开始的4个单元中的源程序,编译运行,观察结果。5、 添加求内部RAM 30H37H单元中8个无符号数的算术和的源程序,8个无符号数设定为25H,36H,4AH,65H,7FH,82H,9BH,1DH,观察39H,38H中的数字是否

22、分别为02H,C3H。四、实验结果 1. 2.步骤1的结果为8000H-80FFH的内容都为1.步骤2的结果为3000H起始的256个字节存储块与4000H起始的256个字节存储块各单元内数据对应相同。13. 4. 5.步骤3的结果为片外1030H-103FH中的内容与片内30H-3FH单元的内容相同。 步骤4的结果为将30H、31H中的十六进制数转换成了ASCII码,并存入到40H步骤5的结果为8个无符号数的和为02C3H。开始的4个单元中。五、思考题1、 如何将存储器块的内容置成某固定值(例全填充为0FFH) 请用户修改程序,完成此操作。答:程序修改如下:将MAIN修改如下即可: MAIN

23、: MOV DPTR, #STARTMOV R0,#0MOV A, #0FFH2、 若源块地址和目标块地址有重叠,程序该如何设计?假设源块地址20XXH,目标块地址2050H,移动块长度80H。 答:程序修改如下: ORG 0000H MOV DPTR, #20XXH MOV A, #01H MOV R5, #0 LOOP: MOVX DPTR, A INC DPTR DJNZ R5, LOOP MOV R0, #20H MOV R1, #00H MOV R2, #20H MOV R3, #50H MOV R7, #7FH LOOP1: MOV DPH, R02MOV DPL, R3 MOVX

24、 DPTR, A CLR C MOV A, R1 SUBB A, #0 MOV R1, A CLR C MOV A, R3 SUBB A, #0 MOV R3, A MOV A, R0 SUBB A, #0 MOV R0, A MOV A, R2 SUBB A, #0 MOV R2, A DJNZ R7, LOOP1 SJMP $ ENDMOV DPL, R1 MOVX A, DPTR MOV DPH, R2六、源程序1、将片内30H-3FH单元的内容复制片外片外1030H103FH中 ORG 0000H MOV R0, #30HMOV DPTR, #1030HMOV R7,#10H LOOP

25、1:MOV A, #0FHMOV R0, AINC R0 DJNZ R7, LOOP1MOV R0, #30HMOV R7,#10H LOOP: MOV A,R0INC R0 MOVX DPTR, AINC DPTR DJNZ R7, LOOPSJMP $END2、 将30H、31H单元中的十六进制数,转换成ASCII码,存放到40H开始的4个单元中ORG0100H MOV30H, #0FH MOV31H, #11H MOVR0, #41H MOVR0, #00H MOVA, 30H XCHD A, R0 ORL41H, #30H SWAP AORLA, #30H3MOV40H, A MOVR

26、0, #43H MOVR0, #00H MOVA, 31H XCHD A, R0 ORL43H, #30H SWAP AORLA, #30H MOV42H, A END3、 求内部RAM 30H37H单元中8个无符号数的算术和 ORG 0000HMOV 30H, #25HMOV 31H, #36HMOV 32H, #4AHMOV 33H, #65HMOV 34H, #7FHMOV 35H, #82HMOV 36H, #9BHMOV 37H, #1DHMOV R0, #30HMOV 39H, #0MOV R7, #8HCLR CMOV A, R0 Loop: INC R0ADD A, R0MOV

27、 38H, AMOV A,39HADDC A, #0MOV 39H, AMOV A, 38HCLR CDJNZ R7, LoopSJMP $END4软件实验二一、实验目的1、 熟悉软件实验的基本步骤和汇编程序的调试方法; 2、 掌握简单的数值算法;3、 掌握多分支结构程序的编程方法。二、实验原理将给定的一字节二进制数,转换成十进制码的方法为将数除以100,得百位数,保存百位数,再将余数除以10,得十位数并保存,最后的余数为个位数,将其保存。用A和B两个寄存器来完成除法,被除数和商放在A,除数和余数放在B。三、实验及步骤1、 在所建的Project文件中添加例程的源程序进行编译,编译无误后,可以

28、选择单步或跟踪执行方式或全速运行程序。打开CPU窗口,观察CPU窗口各寄存器的变化。打开View菜单中的Memory Window,在Address窗口输入D:30H后回车,点击运行按钮,观察地址30H、31H、32H的数据变化。2、添加实验书实验内容1的源程序,编译,运行,观察(33H)=0x58, (32H)=0xA2, (31H)=0x34, (30H)=0x7E和(43H)=0x07, (42H)=0x68, (41H)=0x85, (40H)=0x3B的差是否为(33H)=0x51, (32H)=0x39, (31H)=0xAF, (30H)=0x43。3、添加实验书实验内容2的源程

29、序,编译,运行,观察(0100H)=0x10, (0101H)=0x32, (0102H)=0x54, (0103H)=0x76和(0110H)=0x78, (0111H)=0x56, (0112H)=0x34, (0113H)=0x92的和是否为(0120)=0x88, (0121)=0x88, (0122)=0x88, (0123)=0x68, (0124)=0x01。4、添加实验书实验内容3的源程序,编译,运行。四、实验结果 1. 2. 3.步骤1的结果为,30H内容将更新为01,31H更新为02,32H更新为03。 步骤2的结果为,33H,32H,31H,30H中的数字分别为0x51,0x39,0xAF,0x43. 步骤3的结果为,0120,0121,0122,0123中的数分别为0x88,0x88,0x88。0x68,0x01.5

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1