当前位置:文档之家› 微机原理(单片机汇编)实验报告

微机原理(单片机汇编)实验报告

软件实验报告软件实验一一、实验目的1.熟悉软件实验的基本步骤和汇编程序的调试方法;2.了解内存块的移动方法;3.了解将十六进制数转换成ASCII值的方法。

二、实验原理用MOV和MOVX指令可以进行数据的赋值和移动,用循环可以完成大量数据的复制。

三、实验内容及步骤1、软件设置为模拟调试状态,在所建的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:3000H后回车,点击运行按钮后, 在Memory#2输入X:4000H后回车,观察外部RAM3000H和4000H中的内容。

3、添加将片内30H-3FH单元的内容复制片外片外1030H~103FH中的源程序,编译运行,观察比较30-3FH单元中的内容和片外1030H-103FH中的内容。

4、添加将30H、31H单元中的十六进制数,转换成ASCII码,存放到40H开始的4个单元中的源程序,编译运行,观察结果。

5、添加求内部RAM 30H—37H单元中8个无符号数的算术和的源程序,8个无符号数设定为25H,36H,4AH,65H,7FH,82H,9BH,1DH,观察39H,38H中的数字是否分别为02H,C3H。

四、实验结果1.步骤1的结果为8000H-80FFH的内容都为1.2.步骤2的结果为3000H起始的256个字节存储块与4000H起始的256个字节存储块各单元内数据对应相同。

3.步骤3的结果为片外1030H-103FH中的内容与片内30H-3FH单元的内容相同。

4.步骤4的结果为将30H、31H中的十六进制数转换成了ASCII码,并存入到40H 开始的4个单元中。

5.步骤5的结果为8个无符号数的和为02C3H。

五、思考题1、如何将存储器块的内容置成某固定值(例全填充为0FFH)? 请用户修改程序,完成此操作。

答:程序修改如下:将MAIN修改如下即可:MAIN: MOV DPTR, #STARTMOV R0,#0MOV A, #0FFH2、若源块地址和目标块地址有重叠,程序该如何设计(用地址减1方法移动块)?假设源块地址2000H,目标块地址2050H,移动块长度80H。

答:程序修改如下:ORG 0000HMOV DPTR, #2000H MOV A, #01HMOV R5, #0 LOOP:MOVX @DPTR, A INC DPTRDJNZ R5, LOOP MOV R0, #20H MOV R1, #00H MOV R2, #20H MOV R3, #50H MOV R7, #7FH LOOP1:MOV DPH, R0 MOV DPL, R3 MOVX @DPTR, A CLR CMOV A, R1 SUBB A, #0MOV R1, ACLR CMOV A, R3 SUBB A, #0MOV R3, AMOV A, R0 SUBB A, #0MOV R0, AMOV A, R2 SUBB A, #0MOV R2, AMOV DPL, R1MOVX A, @DPTRMOV DPH, R2六、源程序1、将片内30H-3FH单元的内容复制片外片外1030H~103FH中ORG 0000HMOV R0, #30HMOV DPTR, #1030HMOV R7,#10HLOOP1:MOV A, #0FHMOV @R0, AINC R0DJNZ R7, LOOP1MOV R0, #30HMOV R7,#10HLOOP: MOV A,@R0INC R0MOVX @DPTR, AINC DPTRDJNZ R7, LOOPSJMP $END2、将30H、31H单元中的十六进制数,转换成ASCII码,存放到40H开始的4个单元中ORG 0100HMOV 30H, #0FHMOV 31H, #11HMOV R0, #41HMOV @R0, #00HMOV A, 30HXCHD A, @R0ORL 41H, #30HSWAP AORL A, #30HMOV 40H, AMOV R0, #43HMOV @R0, #00HMOV A, 31HXCHD A, @R0ORL 43H, #30HSWAP AORL A, #30HMOV 42H, AEND3、求内部RAM 30H—37H单元中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, @R0Loop: INC R0ADD A, @R0MOV 38H, AMOV A,39HADDC A, #0MOV 39H, AMOV A, 38HCLR CDJNZ R7, LoopSJMP $END软件实验二一、实验目的1、熟悉软件实验的基本步骤和汇编程序的调试方法;2、掌握简单的数值算法;3、掌握多分支结构程序的编程方法。

二、实验原理将给定的一字节二进制数,转换成十进制(BCD)码的方法为将数除以100,得百位数,保存百位数,再将余数除以10,得十位数并保存,最后的余数为个位数,将其保存。

用A和B两个寄存器来完成除法,被除数和商放在A,除数和余数放在B。

三、实验及步骤1、在所建的Project文件中添加例程的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序。

打开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的源程序,编译,运行,观察(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.步骤1的结果为,30H内容将更新为01,31H更新为02,32H更新为03。

2.步骤2的结果为,33H,32H,31H,30H中的数字分别为0x51,0x39,0xAF,0x43.3.步骤3的结果为,0120,0121,0122,0123中的数分别为0x88,0x88,0x88,0x68,0x01.4.步骤4的结果为,A中显示的为R3中的数的平方。

五、思考题BCD码转换成二进制数的算法是什么?答:BCD码转换成二进制的算法和二进制数转换成BCD码的算法相反,是高位乘10再与低位相加。

六、源程序1、无符号多字节二进制数据减法。

被减数放在30H开始的4个单元中(从低字节到高字节),减数放在40H开始的4个单元中(从低字节到高字节),差放入30H开始处(从低字节到高字节)ORG 0000HMOV R0, #30HMOV R1, #40HMOV R7, #04HCLR CLOOP:MOV A, @R0SUBB A, @R1MOV @R0, AINC R0INC R1DJNZ R7, LOOPSJMP $END2、多字节BCD码加法运算。

两个4字节长的BCD码加数分别存放在外部RAM 0100H 和0110H开始的单元中(从低字节到高字节),计算两数之和,结果保存在0120H开始的9个单元中。

ORG 0MOV DPH #1HMOV 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、 分别用近程查表指令和远程查表指令,查找R3内容的平方值。

R3内容小于等于0FH 。

近程查表指令:ORG 0 MOV A,R3 ADD A,#2 MOVC A,@A+PCMOV 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,0E1HEND远程查表指令:ORG 0MOV DPTR,#TABLMOV A,R3MOVC A,@A+DPTRSJMP $ORG 4000HTABL:DB 00H,01H,04H,09HDB 10H,19H,24H,31HDB 40H,41H,64H,79HDB 0A9H,0C4H,0E1HEND软件实验三一、实验目的1、熟悉软件实验的基本步骤和汇编程序的调试方法;2、掌握数值的加减运算;3、掌握用查表的方法将BCD值转换成ASCII值。

二、实验原理将一个BCD数转换成ASCII值的方法为:先将高四位用查表法转成ASCII码,再将低四位用查表法转成ASCII码。

相关主题