logo资料库

单片机汇编及C51语言基础实验报告.doc

第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
资料共13页,剩余部分请下载后查看
学院名称:计算机科学与工程学院 实验报告 姓名 班级 学号 2015 专业 计算机科学与技术 2015 级 2 班 实验项目 实验一: 汇编及 C51 语言基础 课程名称 实验时间 单片机 课程代码 0660226 2017 年 11 月 28 日 1、2 节 2017 年 12 月 1 日 中午、5、6 节 实验地点 软件实验室 7-215 软件实验室 7-220 实验目标结果 评价 20 分 ■ 功能完善 20 分 ■ 满足功能要求 15 分 ■有小错误 10 分 ■无法运行 0 分 实验成绩考核评定分析 程序设计规范 性评价 20 分 ■ 程 序 易 读 性 好 15 分 ■ 程 序 易 读 性 较 好 10 分 ■ 程 序 易 读 性 较 差 5 分 **注:易读性要求 标 识 符 命 名 见 名 知意,程序编制采 用嵌套方式,层次 结构清晰可读,关 键 部 分 具 有 简 明 注释。 实验报告完整 性评价 30 分 ■报告完整 30 分 ■报告较完整 25 分 ■ 报 告 内 容 一 般 20 分 ■ 报 告 内 容 极 少 10 分 ■无报告 0 分 **注:无报告者各 项考核内容均以 0 分评定,实验成绩 为 0 分。 实验报告雷同 情况分析 实验 成绩 凡 雷 同 学 生 将 不 六 项 评 价 分 数 之 再 评 价 前 六 项 考 和 (** 雷 同 学 生 另 算 **) 核内容,实验成绩 将 按 低 学 号 雷 同 学 生 成 绩 除 雷 同 人数计算而定。 标记为: S 组号-人数(组分) 实验过程综合 评价 30 分 ■ 实 验 过 程 认 真 专注,能独立完成 设计与任务 25 分 ■实验过程认真, 能 较 好 完 成 设 计 20 分 ■实验过程认真, 能完成设计 15 分 ■ 实 验 过 程 态 度 较好,基本完成设 计任务 10 分 ■ 实 验 过 程 态 度 欠端正,未完成设 计任务 0 分 实验目的: 1. 熟悉和掌握Keil进行汇编语言调试的常用指令; 2. 了解和掌握MOV指令在不同的寻址方式下的使用方法; 3. 了解和掌握加、减指令在程序设计中的用法; 4. 熟悉和掌握Keil进行C51语言编程和调试的常用指令; 5. 了解和掌握绝对地址访问方法; 6. 了解和掌握C51的程序结构。 实验内容: 1、简单程序调试 (1) 传送指令 将下述程序用 DEBUG 调试成功后,设置内部 RAM 的值,(30H)=40H, (40H)=10H,单步(F10)执行 第 1页 共 13页
下列程序,检查结果。 MOV R0,#30H MOV A,@R0 MOV R1, A MOV B, @R1 STOP: SJMP STOP END 执行后:(R0)= 30H,(R1)=00H,(A)=00H,(B)=30H,(30H)=40H,(40H)=10H。 (2) 运算指令 MOV A, #0BFH MOV A, #0BFH MOV A, #0BFH MOV A, #0BFH MOV 20H, #85H MOV 20H, MOV 20H, #85H MOV B, #85H SETB C #85H SETB C MUL AB ADD A, 20H SETB C SUBB A, 20H SJMP $ ADDC A, 20H (A)=44H (A)=45H (A)=39H (A)=3BH (B)=63H CY=1 AC=1 CY=1 AC=1 CY=0 AC=0 OV=1 P=0 OV=1 P=1 OV=0 P=0 CY=0 OV=1 AC=0 P=1 单步 执行 结果 标志 (3) 预先对 R3 和 R4 赋值,然后执行下列程序,检查结果。 ORG 0000H LJMP MAIN ORG 0050H MAIN:MOV A,R3 CLR C ADD A,R4 JC PP1 MOV R3,#00H SJMP PP2 PP1:MOV R3,#01H PP2:MOV R4,A 第 2页 共 13页
END 执行后:(R3)=00H,(R4)=07H,(A)=07H。 2、多字节十六进制数加法 被加数 加数 结果 低位 20H 21H 22H 23H 67 45 23 01 30H 31H 32H 33H 65 72 98 89 20H 21H 22H 23H 32 18 22 91 高位 图 1-2 4 字节十六进制数相加 两个 4 字节十六进制数 1234567 和 89987265 相加,将其按低位到高位存放在地址为 20-23H、30-33H 的 RAM 中,运算结果存放在 20-23H 的地址中,如上图示。 运算程序如下,ADD_BCD 为多字节十进制数加法子程序的首地址。分别按 “单步”和“全速”方式 调试程序。检查运算结果。在“ADD_BCD 子程序”的指令“ADDC”处设置断点,再用“全速”方式运 行,到达断点后,观察“A”的值,然后用“单步”运行,观察指令“ADDC”的功能。同时理解“断点” 方式调试程序的特点。 ;;;;;;;;;;;;;;;;;;;主程序 ;;;;;;;;;;;;;;;;;;;;; MOV R0, #20H MOV R1, #30H ;置被加数首地址 ;置加数首地址 MOV R2, #04H ;置被加数和加数的长度(字节数) ACALL ADD_BCD ;调用多字节十进制数加法子程序 ADD_BCD STOP:SJMP STOP ;停止 ;;;;;;;;;; 多字节十进制数加法子程序 ;;;;;;;;;; ;入口: R0、R1 为被加数和加数的首地址,按低位到高位存放 ;出口: R0 为运算结果的首地址,也按低位到高位存放 ADD_BCD:CLR C ;进位清零 LOOP: MOV A, @R0 ;一字节的被加数→A ADDC A, @R1 ;一字节加 DA A ;十进制数调整 MOV @R0, A ;存一字节的运算结果 第 3页 共 13页
INC R0 INC R1 ;被加数指向下一字节 ;加数指向下一字节 DJNZ R2, LOOP ;循环控制 RET END ;子程序返回 3、用 C51 实现绝对地址访问实验 (1)采用预定义宏 #include #include void main(void) { unsigned char a; unsigned int b; DBYTE[0x16]=a=3; b=XWORD[0x2000]=8; while(1); 查看程序执行前后相应内存的内容。 地址 0x16 0x4000 程序执行前 程序执行后 程序执行前 程序执行后 0x00H 0x03H 0x00H 0x16H } } (2)采用扩展关键字_at_ #include #define uchar unsigned char uchar data text1[16] _at_ 0x60; uchar xdata text2[16] _at_ 0x1000; void main(void) { uchar i; for(i=0;i<16;i++) text1[i]=i; for(i=0;i<16;i++) text2[i]=text1[i]; while(1); 查看程序执行前后相应内存的内容。 实验要求: 第 4页 共 13页
1、读懂各程序; 2、预先给出运算结果,以便和实验结果比较; 3、回忆“跟踪”、“单步”和“断点”调试方式的特点。 实验步骤:(附截图) 1、简单程序调试 (1) 传送指令 将下述程序用 DEBUG 调试成功后,设置内部 RAM 的值,(30H)=40H, (40H)=10H,单步(F10)执行 下列程序,检查结果。 MOV R0,#30H MOV A,@R0 MOV R1, A MOV B, @R1 STOP: SJMP STOP END 执行后:(R0)= 30H,(R1)=00H,(A)=00H,(B)=30H,(30H)=40H,(40H)=10H。 部分相关截图如下: (1)设置内部 RAM 的值 (2)最终运行结果 第 5页 共 13页
(2) 运算指令 MOV A, #0BFH MOV A, #0BFH MOV A, #0BFH MOV A, #0BFH MOV 20H, #85H MOV 20H, MOV 20H, #85H MOV B, #85H SETB C #85H SETB C MUL AB ADD A, 20H SETB C SUBB A, 20H SJMP $ ADDC A, 20H (A)=44H (A)=45H (A)=39H (A)=3BH (B)=63H CY=1 AC=1 CY=1 AC=1 CY=0 AC=0 OV=1 P=0 OV=1 P=1 OV=0 P=0 CY=0 OV=1 AC=0 P=1 单步 执行 结果 标志 每个指令的运行结果截图如下: ① ② 第 6页 共 13页
③ ④ (3) 预先对 R3 和 R4 赋值,然后执行下列程序,检查结果。 第 7页 共 13页
ORG 0000H LJMP MAIN ORG 0050H MAIN:MOV A,R3 CLR C ADD A,R4 JC PP1 MOV R3,#00H SJMP PP2 PP1:MOV R3,#01H PP2:MOV R4,A END 执行后:(R3)=00H,(R4)=07H,(A)=07H。 部分相关截图如下:(对 R3 赋值 10H,对 R4 赋值 20H) 2、多字节十六进制数加法 被加数 加数 结果 低位 20H 21H 22H 23H 67 45 23 01 30H 31H 32H 33H 65 72 98 89 第 8页 共 13页 20H 21H 22H 23H 32 18 22 91 高位
分享到:
收藏