实验一 存储器块清零一、实验目的1. 掌握汇编程序设计及其调试程序方法2. 掌握存储器的读写方法二、实验内容1. 编写程序,将外部数据存储器中0100H-01FFH单元的内容全部清零2. 修改程序,将存储器中0100H-01FFH单元的内容置成 0FFH,0FEH,0FDH,……,01H,00H三、程序框图 图1 数据块清零程序框图四、程序清单Block EQU 4000H ORG 0000H MOV DPTR, #Block ; DPTR = ____________ MOV R0, #0 ; R0 = __________ CLR A ; A = _______Loop: MOVX @DPTR, A ;[ DPTR ] = __________ INC DPTR ; DPTR = __________ DJNZ R0, Loop ; R0 = _______ , Z = ____ , PC = __________ LJMP $ ; R0 = _______ , PC = __________ END五、实验步骤1. 新建汇编文件(文件名.ASM),输入源程序,另存于D:\ M51的目录下。
2. 汇编源程序3. 分别用单步、断点和连续执行的方法调试程序,并观察寄存器和存储器的变化实验二 数据块移动一、实验目的1. 掌握汇编程序设计及其调试程序方法2. 掌握数据块的移动方法二、实验内容 将指定源首地址和长度的存储块移到指定目标位置1.编写程序,用地址加一的方法将0000H-00FFH单元的内容复制到0100H-01FFH的存储单元中2.编写程序,用地址减一的方法完成上述功能三、程序框图图2 程序框图1 图3 程序框图2四、实验步骤1. 新建汇编文件(文件名.ASM),输入源程序,另存于D:\ M51的目录下2. 汇编源程序3. 分别用单步、断点和连续执行的方法调试程序,并观察寄存器和存储器的变化五、程序清单961. 用地址加一的方法实现数据块移动; 0000H -00FFH --> 0100H-01FFHDATA1 EQU 0000HDATA2 EQU 0100H ORG 0000H MOV DPTR,#DATA2 MOV P2, DPH MOV R0, DPL MOV DPTR, #DATA1 MOV R7,#00HLoop1: MOVX A, @DPTR MOVX @R0, A INC DPTR INC R0 CJNE R0, #00H, Goon1 INC P2Goon1: DJNZ R7, Loop1 LJMP $ END2. 用地址减一的方法实现数据块移动; 0000H -00FFH --> 0100H-01FFHDATA1 EQU 00FFHDATA2 EQU 01FFH ORG 0000H MOV DPTR,#DATA2 MOV P2, DPH MOV R0, DPL MOV DPTR, #DATA1 MOV R7,#00HLoop1: MOVX A, @DPTR MOVX @R0, A DEC DPL MOV A, DPL CJNE A, #00H, Coon1 DEC DPHCoon1: DEC R0 CJNE R0, #00H, Goon2 DEC P2Goon2: DJNZ R7, Loop1 LJMP $ END五、思考题 当源数据块的地址与目标数据块的地址重叠时,将会发生什么情况?应采用哪种方法编写程序,才能保证所复制的数据与源数据完全一致。
先运行实验一的第二段程序,将本次实验的目标地址修改为0180H,观察哪个程序运行结果正确再将本次实验的目标地址分别修改为0080H,观察哪个程序运行结果正确实验三 二进制到BCD码转换一、 实验目的1.掌握简单的数值转换算法2.基本了解数值的各种表达方法二、实验内容计算机中的数值有各种表达方式,掌握各种数制之间的转换是单片机应用的基础1. 编写一个双字节二进制数到压缩BCD码的转换子程序,其:入口条件:待转换的双字节二进制数在R6、R7中出口信息:转换后的三字节压缩BCD码整数在R3、R4、R5中2. 编写一个双字节二进制数到分离BCD码的转换子程序,其:入口条件:待转换的双字节二进制数在R6、R7中出口信息:转换后的分离BCD码在5AH~5FH的6个单元中3. 编写程序,将20H、21H的双字节二进制数转换为分离BCD码存放在5AH~5FH的6个单元中三、 程序框图四、程序清单;主程序XSQ EQU 60H ORG 0000H MOV R6, #0FFH MOV R7,#0FFHLCALL FLBCD ;调分离BCD码程序 SJMP $;二进制数转换分离BCD码程序FLBCD: LCALL HB2 ;调BCD码转换程序 MOV A, R3 ANL A, #0F0H SWAP A MOV XSQ, A MOV A, R3 ANL A, #0FH MOV XSQ+1, A MOV A, R4 ANL A, #0F0H SWAP A MOV XSQ+2, A MOV A, R4 ANL A, #0FH MOV XSQ+3, A MOV A, R5 ANL A, #0F0H SWAP A MOV XSQ+4, A MOV A, R5 ANL A, #0FH MOV XSQ+5, A RET;二进制数转换压缩BCD码子程序;入口条件:待转换的十六进制数在R6、R7中,;出口信息:转换后的BCD码在R3、R4、R5中HB2: CLR A ; MOV R3, A ; MOV R4, A MOV R5, A MOV R2, #10H ;双字节需循环16次HB20: MOV A, R7 ;高位移到CY中 RLC A MOV R7, A MOV A, R6 RLC A MOV R6, A MOV A, R5 ;BCD码带进位自身相加 ADDC A, R5 DA A ;十进制调整 MOV R5, A MOV A, R4 ADDC A, R4 DA A MOV R4, A MOV A, R3 ADDC A, R3 MOV R3, A ;万位不超过6不用调整 DJNZ R2, HB20 ;16位没有处理完转 RET五、实验步骤 分别用单步、断点和连续执行的方法调试程序,并观察寄存器和存储器的变化。
六、思考题 如何将分立BCD码和压缩BCD码转换成二进制码实验四 四位压缩BCD码加法实验一、 实验目的1.了解设计压缩BCD码加法程序的方法2.掌握加法指令、十进制调整指令的使用方法二、实验内容把30H、31H单元中的四位十进制数与32H、33H单元中的四位十进制数相加,结果存放在30H、31H、32H单元数据存放格式为低位在前,高位在后)程序运行前,应先将30H-33H单元的加数和被加数赋值执行结果填在表1-1中表1预置被加数预置被加数程序运行结果(30H)(31H)(32H)(33H)(30H)(31H)(32H)十进制34127856三、 程序框图 四、 程序清单 DATA1 EQU 30H ; 加数地址DATA2 EQU 32H ; 被加数地址 ORG 0000H MOV R0, #DATA1 MOV R1, #DATA2 MOV A, @R0 ADD A, @R1 DA A MOV @R0, A INC R0 INC R1 MOV A, @R0 ADDC A, @R1 DA A MOV @R0, A INC R0 CLR A ADDC A, #0 MOV @R0, A SJMP $ END实验五 布尔操作实验。