资源预览内容
第1页 / 共72页
第2页 / 共72页
第3页 / 共72页
第4页 / 共72页
第5页 / 共72页
第6页 / 共72页
第7页 / 共72页
第8页 / 共72页
第9页 / 共72页
第10页 / 共72页
亲,该文档总共72页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1实验一 存储器块清零一、实验目的1. 掌握汇编程序设计及其调试程序方法2 掌握存储器的读写方法二、实验内容1. 编写程序,将外部数据存储器中 0100H-01FFH 单元的内容全部清零。2. 修改程序,将存储器中 0100H-01FFH 单元的内容置成 0FFH,0FEH,0FDH,01H,00H。三、程序框图开 始数 据 指 针 指 向数 据 块 首 地 址循 环 次 数 等 于 块 长 度 循 环 次 数 1是 否 等 于 0?结 束当 前 存 储 器 清 零地 址 指 针 1否是图 1 数据块清零程序框图四、程序清单Block EQU 4000HORG 0000HMOV 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. 分别用单步、断点和连续执行的方法调试程序,并观察寄存器和存储器的变化。2实验二 数据块移动一、实验目的1. 掌握汇编程序设计及其调试程序方法。2 掌握数据块的移动方法。二、实验内容将指定源首地址和长度的存储块移到指定目标位置1编写程序,用地址加一的方法将 0000H-00FFH 单元的内容复制到 0100H-01FFH 的存储单元中。2编写程序,用地址减一的方法完成上述功能。三、程序框图开始设置源首地址设置目标首地址循环次数等于块长度 循环次数 1是否等于 0 ?结束从源地址单元取数保存到目标地址单元 源地址指针 1目标地址指针 1否是开始设置源末地址设置目标末地址循环次数等于块长度 循环次数 1是否等于 0 ?结束从源地址单元取数保存到目标地址单元 源地址指针 1目标地址指针 1否是图 2 程序框图 1 图 3 程序框图 2四、实验步骤1. 新建汇编文件(文件名.ASM),输入源程序,另存于 D: M51 的目录下。2. 汇编源程序。3. 分别用单步、断点和连续执行的方法调试程序,并观察寄存器和存储器的变化。五、程序清单31 用地址加一的方法实现数据块移动; 0000H -00FFH 0100H-01FFHDATA1 EQU 0000HDATA2 EQU 0100HORG 0000HMOV DPTR,#DATA2MOV P2, DPHMOV R0, DPLMOV DPTR, #DATA1MOV R7,#00HLoop1:MOVX A, DPTRMOVX R0, AINC DPTRINC R0CJNE R0, #00H, Goon1INC P2Goon1:DJNZ R7, Loop1LJMP $END2 用地址减一的方法实现数据块移动; 0000H -00FFH 0100H-01FFHDATA1 EQU 00FFHDATA2 EQU 01FFHORG 0000HMOV DPTR,#DATA2MOV P2, DPHMOV R0, DPLMOV DPTR, #DATA1MOV R7,#00HLoop1:MOVX A, DPTRMOVX R0, ADEC DPLMOV A, DPLCJNE A, #00H, Coon1DEC DPHCoon1: DEC R0CJNE R0, #00H, Goon2DEC P2Goon2:DJNZ R7, Loop1LJMP $END五、思考题当源数据块的地址与目标数据块的地址重叠时,将会发生什么情况?应采用哪种方法编写程序,才能保证所复制的数据与源数据完全一致。先运行实验一的第二段程序,将本次实验的目标地址修改为 0180H,观察哪个程序运行结果正确。再将本次实验的目标地址分别修改为 0080H,观察哪个程序运行结果正确。4实验三 二进制到 BCD 码转换一、 实验目的1掌握简单的数值转换算法2基本了解数值的各种表达方法二、实验内容计算机中的数值有各种表达方式,掌握各种数制之间的转换是单片机应用的基础。1. 编写一个双字节二进制数到压缩 BCD 码的转换子程序,其:入口条件:待转换的双字节二进制数在 R6、R7 中。出口信息:转换后的三字节压缩码整数在 R3、R4、R5 中。2 编写一个双字节二进制数到分离 BCD 码的转换子程序,其:入口条件:待转换的双字节二进制数在 R6、R7 中出口信息:转换后的分离码在 5AH5FH 的 6 个单元中。3. 编写程序,将 20H、21H 的双字节二进制数转换为分离码存放在 5AH5FH 的 6 个单元中。三、 程序框图压缩 B C D 码转换子程序 转换结果初始化 置循环次数等于 1 6待转换数左移一位 ,最高位移到 C Y 中结束 码带进位自身相加 , 相当于乘 十进制调整1 6 位处理完毕 ?否分离 B C D 码转换子程序 调用压缩 B C D 码转换子程序 设置保存结果地址结束取压缩码最高字节 ,拆为两个字节的分离B C D 码 , 并保存结果修改地址指针取压缩码下个字节 ,拆为两个字节的分离B C D 码 , 并保存结果修改地址指针取压缩码下个字节 ,拆为两个字节的分离B C D 码 , 并保存结果修改地址指针主程序将两字节数据复制到子程序所要求的寄存器中结束调用分离 B C D 码转换程序5四、程序清单;主程序XSQ EQU 60HORG 0000HMOV R6, #0FFHMOV R7,#0FFHLCALL FLBCD ;调分离 BCD 码程序SJMP $;二进制数转换分离 BCD 码程序FLBCD: LCALL HB2 ;调 BCD 码转换程序MOV A, R3ANL A, #0F0HSWAP AMOV XSQ, AMOV A, R3ANL A, #0FHMOV XSQ+1, AMOV A, R4ANL A, #0F0HSWAP AMOV XSQ+2, AMOV A, R4ANL A, #0FHMOV XSQ+3, AMOV A, R5ANL A, #0F0HSWAP AMOV XSQ+4, AMOV A, R5ANL A, #0FHMOV XSQ+5, ARET;二进制数转换压缩 BCD 码子程序;入口条件:待转换的十六进制数在 R6、R7 中,;出口信息:转换后的 BCD 码在 R3、R4、R5 中HB2: CLR A ;MOV R3, A ;MOV R4, AMOV R5, AMOV R2, #10H;双字节需循环 16 次HB20: MOV A, R7 ;高位移到 CY 中RLC AMOV R7, AMOV A, R6RLC AMOV R6, AMOV A, R5 ;BCD 码带进位自身相加ADDC A, R5DA A ;十进制调整MOV R5, AMOV A, R4ADDC A, R4DA AMOV R4, AMOV A, R3ADDC A, R3MOV R3, A ;万位不超过 6 不用调整DJNZ R2, HB20;16 位没有处理完转RET五、实验步骤分别用单步、断点和连续执行的方法调试程序,并观察寄存器和存储器的变化。六、思考题如何将分立 BCD 码和压缩 BCD 码转换成二进制码。6实验四 四位压缩 BCD 码加法实验一、 实验目的1了解设计压缩 BCD 码加法程序的方法2掌握加法指令、十进制调整指令的使用方法。二、实验内容把 30H、31H 单元中的四位十进制数与 32H、33H 单元中的四位十进制数相加,结果存放在 30H、31H、32H单元。(数据存放格式为低位在前,高位在后)程序运行前,应先将 30H-33H 单元的加数和被加数赋值。执行结果填在表 1-1 中。表 1预置被加数 预置被加数 程序运行结果(30H) (31H) (32H) (33H) (30H) (31H) (32H) 十进制34 12 78 56三、 程序框图 四、 程序清单DATA1 EQU 30H ; 加数地址DATA2 EQU 32H ; 被加数地址ORG 0000HMOV R0, #DATA1MOV R1, #DATA2MOV A, R0ADD A, R1DA AMOV R0, AINC R0INC R1MOV A, R0ADDC A, R1DA AMOV R0, AINC R0CLR AADDC A, #0MOV R0, ASJMP $END开始设置加数低 、 被加数地址指针两数低字节相加十进制调整结束保存和的低字节修改两个地址指针保存进位位两数高字节相加十进制调整保存和的高字节修改被加数地址指针7实验五 布尔操作实验一、 实验目的1掌握位操作指令的使用方法2了解用程序实现组合逻辑电路的功能二、实验内容用程序实现图 6 所示组合逻辑电路的功能位地址: 07H 06H 05H 04H 03H 02H 01H 00H字节地址: 20H三、 程序清单Q BIT 00H Z BIT 02HY BIT 03HX BIT 04HU BIT 05HW BIT 06HV BIT 07H 表 2ORG 0000HMOV C, VORL C, WMOV PSW.4, CMOV C, XORL C, /YANL C, PSW.4ANL C, /ZMOV Q, CSJMP$END程序执行前,将表 2 中值填入 20H 单元,执行结果填入表中,并对执行结果加以说明。V W U X Y Z Q执行前 执行后(20H) F0(20H) F4(20H)(20H)ZQ)()(8实验六 排序实验一、实验目的了解数据排序的简单算法。二、实验内容寄存器 50H5FH 单元中存放 16 个数据,编写一个程序将数据按照从小到大的次序排列。“冒泡排序”算法是:从第一个数据开始相邻的数据比较,若次序不对,两数据交换位置,第一遍比较(N-1)次后,最大的数据已排到数组的尾部,第二遍仅需比较(N-2)就够了,共比较(N-1)遍就完成排序,这样共有两重循环。带标志位的“冒泡排序”算法:设置一个标志位,进入外循环时标志位清 0,在内循环中相邻两数交换位置时,标志位置 1,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号