单片微机原理及应用 徐春辉第5章 习题答案

练习与思考题5

1. 用于程序设计的语言分为哪几种?它们各有什么特点?

答:51系列单片机的编程语言可以分为汇编语言和高级语言(如C语言)两种,各自的特

2. 说明伪指令的作用。“伪”的含义是什么?常用的伪指令有哪些?其功能是什么? 答:伪指令是在“机器汇编”过程中,用来对汇编过程进行某种控制或者对符号和标号进行赋值。“伪”的含义是指这些指令不属于指令系统中的指令,汇编时也不产生机器代码。常用伪指令有ORG、EQU、DATA、DB、DW、DS、BIT、END。 功能:

ORG --指出后面程序块或数据块在程序存储器中存放的起始地址。 EQU --赋值命令

DATA--对数据地址或代码地址赋予规定的字符名称 DB --定义字节数据 DW --定义字数据

DS--从指定的地址单元开始,保留若干单元备用。 BIT --定义位地址符号命令 END --汇编结束命令

3. 设常量和数据标号的定义为: ORG 2000H

DAT1: DB 1, 2, 3, 4, 5 DAT2: DB ‘ABCD’ DAT3: DW 1200H,-2 TAB: DW DAT1, DAT3

(1)画出上述数据或地址的存储形式。 (2)写出各标号的地址。 答:(1)

地址

(2)DAT1=2000H; DAT2=2005H;4. 编写双字节加法程序。要求:被加数放在内部RAM的30H(高字节)、31H(低字节)单元中,加数存放在内部RAM的32H(高字节)和33H(低字节)中,运算结果放存放在30H,31H中,进位存放在位寻址区的00H位。 答: ORG 0000H MOV A, 31H ADD A, 33H MOV 31H, A MOV A, 30H ADDC A, 32H MOV 30H, A MOV 00H, C SJMP $ END 5. 试编写程序,找出片内RAM 30H~5FH单元中无符号数的最大数,并将结果存入60H单元。 答: ORG 0000H MOV R0, #30H MOV R7, #2FH MOV A, @R0 AGAIN: INC R0 MOV B, A CLR C

SUBB A, @R0 JNC L1

MOV A, @R0 AJMP L2 L1: MOV A, B L2: DJNZ R7, AGAIN MOV 60H, A SJMP $ END

6.试编写程序,统计片内RAM的20H~5FH单元中出现55H的次数,并将统计结果送60H

单元。

答: TAB EQU 20H

ORG 0000H START: MOV 60H, #0 MOV R0, #TAB LOOP2: MOV A, #55H CLR C

SUBB A, @R0 JNZ NEXT INC 60H NEXT: INC R0

CJNE R0, #60H, LOOP2 SJMP $ END

7.编写程序,将片外数据存储区中3000H~30FFH单元全部清零。 答: ORG 0000H START: MOV A, #0 MOV R7, #0

MOV DPTR, #3000H LOOP: MOVX @DPTR, A INC DPTR DJNZ R7, LOOP SJMP $ END

8. 将外部RAM 8000H开始的20个字节数据传送到外部RAM 8100H开始的地址单元中去。 答: DATA1 EQU 8000H

DATA2 EQU 00H

ORG 0000H

START: MOV DPTR, #DATA1 MOV R0, #DATA2 MOV R7, #20 LOOP: MOVX A, @DPTR MOV P2, #81H MOVX @R0, A INC R0 INC DPTR

DJNZ R7, LOOP SJMP $ END

9. 编程统计累加器A中“1”的个数。

答:以下程序将A中“1”的个数放在30H单元。

DAT EQU 37H

ORG 0000H START: PUSH ACC MOV A, #DAT

MOV 30H, #0

NEXT: JZ EXIT CLR C

RLC A JNC L1 INC 30H L1: AJMP NEXT POP ACC EXIT: SJMP $ END

10. 编写程序,将30H~34H单元中压缩的BCD码数(每个字节存放两个BCD码数)转换为

ASCII码数,并将结果存放在片内RAM 60H~69H单元。 答: ORG 0000H START: MOV R0, #30H MOV R1, #60H MOV R7, #2 AGAIN: MOV A, @R0 ANL A, #0F0H SWAP A

ADD A, #30H MOV @R1, A MOV A, @R0 ANL A, #0FH

ADD A, #30H INC R1 MOV @R1, A INC R0 INC R1

DJNZ R7, AGAIN SJMP $ END

11.将内部RAM 30H单元的内容转换成三位BCD码(百位、十位、个位),并将结果存入外

部RAM 1000H开始的单元。 答: ORG 0000H START: MOV A, 30H MOV DPTR, #1000H MOV B, #100 DIV AB

MOVX @DPTR, A INC DPTR MOV A, B MOV B, #10 DIV AB

MOVX @DPTR, A MOV A, B

INC DPTR

MOVX @DPTR, A SJMP $ END

12. 请使用位操作指令,编程实现P1.0=(20H)∧(2FH)∨(2AH),其中,20H、2FH、2AH都是位地址。

答: ORG 0000H MOV C, 20H ANL C, 2FH CPL C ORL C, 2AH MOV P1.0, C SJMP $ END

13.简述利用Keil μVision调试汇编语言程序的主要步骤。

答:利用Keil μVision调试软件的主要步骤包括:建立工程(project)→编写汇编语言源程序并保存→在工程中添加源文件→设置工程→编译并连接,创建目标文件→调试程序。 14.如何产生.hex文件? 答:编译并连接时,在“Project Workspace”窗口中,右键Target 1,选择Options For Target‘Target1’选项,弹出“option for Target”对话窗,选Output选项卡,选中Create HEX File。

15.在Keil μVision环境中,如何查看寄存器和数据存储单元内容? 答:点击“Regs”

,可查看寄存器的内容。在Keil的菜单栏中,选择View

→Memory Window选项,打开Memory对话窗,在Address栏中输入地址“D: 0030H”,查看片内RAM中0030H的内容。(X:外部数据存储器,C:程序存储器)

练习与思考题5

1. 用于程序设计的语言分为哪几种?它们各有什么特点?

答:51系列单片机的编程语言可以分为汇编语言和高级语言(如C语言)两种,各自的特

2. 说明伪指令的作用。“伪”的含义是什么?常用的伪指令有哪些?其功能是什么? 答:伪指令是在“机器汇编”过程中,用来对汇编过程进行某种控制或者对符号和标号进行赋值。“伪”的含义是指这些指令不属于指令系统中的指令,汇编时也不产生机器代码。常用伪指令有ORG、EQU、DATA、DB、DW、DS、BIT、END。 功能:

ORG --指出后面程序块或数据块在程序存储器中存放的起始地址。 EQU --赋值命令

DATA--对数据地址或代码地址赋予规定的字符名称 DB --定义字节数据 DW --定义字数据

DS--从指定的地址单元开始,保留若干单元备用。 BIT --定义位地址符号命令 END --汇编结束命令

3. 设常量和数据标号的定义为: ORG 2000H

DAT1: DB 1, 2, 3, 4, 5 DAT2: DB ‘ABCD’ DAT3: DW 1200H,-2 TAB: DW DAT1, DAT3

(1)画出上述数据或地址的存储形式。 (2)写出各标号的地址。 答:(1)

地址

(2)DAT1=2000H; DAT2=2005H;4. 编写双字节加法程序。要求:被加数放在内部RAM的30H(高字节)、31H(低字节)单元中,加数存放在内部RAM的32H(高字节)和33H(低字节)中,运算结果放存放在30H,31H中,进位存放在位寻址区的00H位。 答: ORG 0000H MOV A, 31H ADD A, 33H MOV 31H, A MOV A, 30H ADDC A, 32H MOV 30H, A MOV 00H, C SJMP $ END 5. 试编写程序,找出片内RAM 30H~5FH单元中无符号数的最大数,并将结果存入60H单元。 答: ORG 0000H MOV R0, #30H MOV R7, #2FH MOV A, @R0 AGAIN: INC R0 MOV B, A CLR C

SUBB A, @R0 JNC L1

MOV A, @R0 AJMP L2 L1: MOV A, B L2: DJNZ R7, AGAIN MOV 60H, A SJMP $ END

6.试编写程序,统计片内RAM的20H~5FH单元中出现55H的次数,并将统计结果送60H

单元。

答: TAB EQU 20H

ORG 0000H START: MOV 60H, #0 MOV R0, #TAB LOOP2: MOV A, #55H CLR C

SUBB A, @R0 JNZ NEXT INC 60H NEXT: INC R0

CJNE R0, #60H, LOOP2 SJMP $ END

7.编写程序,将片外数据存储区中3000H~30FFH单元全部清零。 答: ORG 0000H START: MOV A, #0 MOV R7, #0

MOV DPTR, #3000H LOOP: MOVX @DPTR, A INC DPTR DJNZ R7, LOOP SJMP $ END

8. 将外部RAM 8000H开始的20个字节数据传送到外部RAM 8100H开始的地址单元中去。 答: DATA1 EQU 8000H

DATA2 EQU 00H

ORG 0000H

START: MOV DPTR, #DATA1 MOV R0, #DATA2 MOV R7, #20 LOOP: MOVX A, @DPTR MOV P2, #81H MOVX @R0, A INC R0 INC DPTR

DJNZ R7, LOOP SJMP $ END

9. 编程统计累加器A中“1”的个数。

答:以下程序将A中“1”的个数放在30H单元。

DAT EQU 37H

ORG 0000H START: PUSH ACC MOV A, #DAT

MOV 30H, #0

NEXT: JZ EXIT CLR C

RLC A JNC L1 INC 30H L1: AJMP NEXT POP ACC EXIT: SJMP $ END

10. 编写程序,将30H~34H单元中压缩的BCD码数(每个字节存放两个BCD码数)转换为

ASCII码数,并将结果存放在片内RAM 60H~69H单元。 答: ORG 0000H START: MOV R0, #30H MOV R1, #60H MOV R7, #2 AGAIN: MOV A, @R0 ANL A, #0F0H SWAP A

ADD A, #30H MOV @R1, A MOV A, @R0 ANL A, #0FH

ADD A, #30H INC R1 MOV @R1, A INC R0 INC R1

DJNZ R7, AGAIN SJMP $ END

11.将内部RAM 30H单元的内容转换成三位BCD码(百位、十位、个位),并将结果存入外

部RAM 1000H开始的单元。 答: ORG 0000H START: MOV A, 30H MOV DPTR, #1000H MOV B, #100 DIV AB

MOVX @DPTR, A INC DPTR MOV A, B MOV B, #10 DIV AB

MOVX @DPTR, A MOV A, B

INC DPTR

MOVX @DPTR, A SJMP $ END

12. 请使用位操作指令,编程实现P1.0=(20H)∧(2FH)∨(2AH),其中,20H、2FH、2AH都是位地址。

答: ORG 0000H MOV C, 20H ANL C, 2FH CPL C ORL C, 2AH MOV P1.0, C SJMP $ END

13.简述利用Keil μVision调试汇编语言程序的主要步骤。

答:利用Keil μVision调试软件的主要步骤包括:建立工程(project)→编写汇编语言源程序并保存→在工程中添加源文件→设置工程→编译并连接,创建目标文件→调试程序。 14.如何产生.hex文件? 答:编译并连接时,在“Project Workspace”窗口中,右键Target 1,选择Options For Target‘Target1’选项,弹出“option for Target”对话窗,选Output选项卡,选中Create HEX File。

15.在Keil μVision环境中,如何查看寄存器和数据存储单元内容? 答:点击“Regs”

,可查看寄存器的内容。在Keil的菜单栏中,选择View

→Memory Window选项,打开Memory对话窗,在Address栏中输入地址“D: 0030H”,查看片内RAM中0030H的内容。(X:外部数据存储器,C:程序存储器)


相关文章

  • 单片机原理及应用技术练习题集
  • 一.单项选择题(在每小题的四个备选答案中,选出一个正确答 案,并将正确答案的序号填在题干的括号内.) 1.8051单片机的( D )口的引脚,还具有外中断.串行通 信等第二功能. (A) P0 (B) P1 (C) P2 (D) P3 2. ...查看


  • 大学几乎所有学科的课本答案[2]
  • 大学几乎所有学科的课本答案! 来源: 任明嘉的日志 经济金融 [PDF格式]<会计学原理>同步练习题答案 [Word格式]<成本会计>习题及答案(自学推荐,23页) [Word格式]<成本会计>配套习题集 ...查看


  • [微机测控系统原理与设计]习题解答
  • <微机测控系统原理与设计>习题解答 本习题解答是高等学校教材<微机测控系统原理与设计>(曹江涛.孙传友主编,高等教育出版社2014年1月出版)全书各章习题的参考答案. 第1章 1.为什么说系统技术是信息的源头技术? ...查看


  • 微机原理与应用Ch01-绪论
  • 微机原理与应用 南京航空航天大学机电学院 授课教师 : 张 臣 Tel: 84891678 [1**********]  :[email protected] 1 <微机原理与应用>课件 教材及参考资料  张毅刚主编 ...查看


  • 微机原理及应用习题库与答案
  • 微机原理及应用习题库与答案 习题与练习题1 第1章 绪论 1. 计算机分那几类?各有什么特点? 2. 简述微处理器.微计算机及微计算机系统三个术语的内涵. 答:微处理器是微计算机系统的核心硬件部件,对系统的性能起决定性的影响.微计算机包括8 ...查看


  • 单片机教案
  • 吴允志 单 片 机 1 2011年2月21日 08高职电子2班 2 单片机概述(一) 通过本讲教学,要求学生了解单片机的概念及组成.单片机 与通用微机的区别与联系,单片机的特点及其广泛应用.了解本课程的性质.任务及其在本专业中的地位,结合单 ...查看


  • 关于单片机发展趋势的文件检索报告
  • 课题名称:单片机技术的发展趋势 姓 名: 学 号: 系(院) :电气信息学院 专 业:电子信息工程 班 级: 02 班 总 成 绩:_____________ 一.中英文名称及中英文其关键字: 1.中文课题名称:单片机的发展趋势: 中文关键 ...查看


  • +微机继电保护原理
  • 第一章 微机继电保护原理 随着计算机技术及网络技术的迅速发展,微机继电保护由于其具有比传统继电保护装置更显著的优势,在电力系统中得到了广泛的应用.目前,在新建电气化铁道供电系统中的牵引网馈线.牵引变压器.并联电容器补偿装置均采用了微机保护装 ...查看


  • 2011级光电子技术教学计划
  • 光电子技术科学专业本科教学计划 一. 培养目标 本专业培养在光电子技术科学领域具有宽厚的理论基础.扎实的专业知识和熟练的实验技能的高级人才.培养学生具有在光学.光电子学.激光科学.光通信技术.光波导与光电集成技术.光信息处理技术等领域开展研 ...查看


热门内容