单片机原理与应用练习题3答案

上传人:gbs****77 文档编号:10617309 上传时间:2020-04-13 格式:DOC 页数:11 大小:102KB
返回 下载 相关 举报
单片机原理与应用练习题3答案_第1页
第1页 / 共11页
单片机原理与应用练习题3答案_第2页
第2页 / 共11页
单片机原理与应用练习题3答案_第3页
第3页 / 共11页
点击查看更多>>
资源描述
练习题 3 答案 1 简述下列基本概念 指令 指令系统 机器语言 汇编语言 答 指令是单片机 CPU 执行某种操作的命令 指令系统是一台计算机所能执行的指令集合 机器语言即二进制代码语言 是计算机可以直接识别 汇编语言是用助记符 字符串和数字等来表示指令的程序语 2 简述 AT89S51 单片机的指令格式 答 该单片机的指令由两部分组成 即操作码和操作数 操作码用来规定指令进行什么操 作 而操作数则是指令操作的对象 操作数可能是一个具体的数据 也可能是指出到哪里 取得数据的地址或符号 指令格式一般为 标号 操作码 操作数 1 操作数 2 操作数 3 注释 3 简述 AT89S51 的寻址方式和所能涉及的寻址空间 答 共有 7 种寻址方式 见表 3 2 分别是 1 寄存器寻址 寻址范围为通用寄存器组 共 4 组 32 个 但只能使用当前寄存 器组 因此使用前需要通过对 PSW 种的 RS1 RS0 位的状态进行设置 2 直接寻址 寻 址范围为内部 RAM 包括低 128 位用户 RAM 区和高 128 位专用寄存器 3 寄存器间接寻 址 寻址范围为内部 RAM 低 128 位 外部 RAM 64KB 低 256 单元可以使用 DPTR 和 R0 R1 作为间接寻址寄存器 而其他单元只能用 DPTR 作为间接寻址寄存器 4 立即寻 址 直接给出立即数 不涉及寻址空间 5 变址寻址 只对程序寄存器进行寻址 6 相对 寻址 以 PC 的内容为基值 加上指令机器代码中 相对地址 形成新的 PC 值转移 7 位寻址 寻址空间包括内部 RAM 位寻址区 20 2FH 和专用寄存器的可寻址位 4 要访问片外程序存储器和片外数据存储器 应采用哪些寻址方式 答 访问片外程序存储器采用变址寻址方式 片外数据存储器采用寄存器间接寻址方式 且用 DPTR 可以访问 64KB 而用 R0 或者 R1 只可访问低 256 字节 5 在 AT89S51 片内 RAM 中 已知 30H 38H 38H 40H 40H 48H 48H 90H 请 分析下面各是什么指令 说明源操作数的寻址方式及按顺序执行每条指令后的结果 答 指令 指令说明 源操作数寻址方式 结果 表 3 2 寻址方式及相应的寻址存储器范围 寻 址 方 式 寻 址 存 储 器 范 围 立即寻址 程序存储器 ROM 直接寻址 片内 RAM 低 128B 特殊功能寄存器 寄存器寻址 工作寄存器 R0 R7 A C DPTR AB 寄存器间接寻址 片内 RAM 低 128B 片外 RAM 变址寻址 程序存储器 ROM A DPTR A PC 相对寻址 程序存储器 ROM 相对寻址指令的下一指令 PC 值加 128 127 位寻址 片内 RAM 的 20H 2FH 字节地址中所有的位 可位寻址的特殊功能寄存器 MOV A 40H 将内部 RAM 中 40H 内容 传送到累加器 A 中 A 40H 直接寻址 A 48H MOV R0 A 再将 A 中内容传送给 R0 R0 A 寄存器寻址 R0 48H MOV P1 0F0H 将立即数 0F0H 送到 P1 口 即 P1 4 P1 7 位 1 其余为 0 P1 0F0H 立即数寻址 P1 0F0H MOV R0 30H 将 30H 中的内容 传放 到以 R0 单元内容为地址 的单元中 R0 30H 直接寻址 R0 48H 38H MOV DPTR 3848H 将立即数 3848 传送给 DPTR 数据指针 dptr 3848H 立即数寻址 DPTR 3848H MOV 40H 38H 将内部 RAM 中 38H 内容 传送到 40H 单元中 40H 38H 直接寻址 40H 40H MOV R0 30H 将 30H 中的内容给 R0 寄 存器 R0 30H 直接寻址 R0 38H MOV P0 R0 将 R0 的内容传送到 P0 P0 R0 寄存器寻址 P0 38H MOV A R0 将 R0 内容为地址的该单 元内容传送给 A A R0 寄存器间接寻址 A 40H MOV P2 P1 将 P1 的内容传送给 P2 P2 P1 直接寻址 P2 0F0H 6 指出下列指令的源操作数的寻址方式 MOV A 65H 直接寻址 MOV A 65H 立即数寻址 MOV A R0 寄存器间接寻址 MOV A R2 寄存器寻址 MOVC A A PC 变址寻址 7 内部 RAM 和特殊功能寄存器各用什么寻址方式 答 内部 RAM 有寄存器寻址方式 直接寻址方式和间接寻址方式 特殊功能寄存器除 A 外只能进行直接寻址 8 已知 A 5BH R1 30H 30H 0CEH P1 71H PSW 80H PC 2000H 205CH 46H SP 30H B 78H 分别求各条指令执行后的结果 要求 进行二进制运算验证 及标志位 Cy P 的影响 1 MOV A R1 A 0CEH P 1 C 不变 2 MOV 40H 30H 40H 0CEH P 和 C 不变 3 MOV P1 R1 P1 30H P 和 C 不变 4 MOVC A A PC A 46H P 1 C 不变 5 PUSH B 31H 78H SP 31H P 和 C 不变 6 POP DPH DPH 0CEH SP 29H P 和 C 不变 7 XCHD A R1 A 05EH 30H CBH P 1 C 不变 8 ADD A 30H A 29H P 1 C 1 9 ADDC A P1 A CDH P 1 C 0 10 SUBB A P1 A E9H P 1 C 1 11 ANL P1 0FH P1 01H P 和 C 不变 12 CLR PSW 7 C 0 13 RLC A A B7H P 0 C 0 14 ORL C 90H C 1 P 不变 9 对下面一段程序加上机器码和注释 并说明程序运行后寄存器 A R0 和内部 RAM 50H 51H 52H 单元的内容 MOV 50H 50H 75 50 50 50H 50H MOV A 50H E5 50 A 50H MOV R0 A F8 R0 A MOV A 30H 74 30 A 30H MOV R0 A F6 R0 A MOV A 50H 74 50 A 50H MOV 51H A F5 51 51H A MOV 52H 00H 75 52 00 52H 00H 答 运行后寄存器 A 50H R0 50H 50H 30H 51 50H 52H 00H 10 区别下列各指令中 20H 的含义 在每条指令后加上注释 MOV A 20H 将 20H 立即数传送给 A MOV 45H 20H 将内部 RAM 中 20H 单元的内容传送到 45H 中 MOV C 20H 0 将内部 RAM 中 20H 单元内容的第 0 位 最低位 传送给 C MOV C 20H 将内部 RAM 中 20H 位地址内容传送给 C 11 写出完成以下功能的指令 1 将立即数 30H 送到 R1 2 将内 RAM30H 中的数据送到内 RAM78H 单元 3 将立即数 30H 送到 以 R0 中内容为地址的存储器中 4 将 R2 中的内容送到 P1 5 将内 RAM60H 单元的数据送到 外 RAM60H 单元 6 将内 RAM60H 单元的数据送到外 RAM1060H 单元 7 将 ROM1000H 单元的内容送到内 RAM30H 单元 8 使 ACC 7 置位 9 使累加器的低 4 位清零 10 使 P1 2 与 CY 相与 结果送 CY 11 立即数 45H 93H 进行逻辑与 或 异或操作 12 两立即数求和 1C0H 45H 结果按高低 8 位存在 30H 31H 中 答案 1 MOV R1 30H 2 MOV 78H 30H 3 MOV R0 30H 4 MOV P1 R2 5 MOV A 60H MOV P2 0 MOV R0 60H MOVX R0 A 6 MOV A 60H MOV DPTR 1060 MOVX DPTR A 7 MOV A 00H MOV DPTR 1000H MOVC A A DPTR MOV 30H A 8 SETB ACC 7 9 ANL A 0F0H 10 ANL C p1 2 11 与 MOV A 45H ANL A 59H 或 MOV A 45H ORL A 59H 异或 PMOV A 45H XRL A 59H 12 CLR C MOV R2 1 MOV A 0C0H ADD A 45H MOV 31H A MOV A R2 ADDC A 0 MOV 30H A 12 写出下列指令执行过程中堆栈的变化 设堆栈初值为 X MOV R6 11H SP X 堆栈不变 MOV R7 23H SP X 堆栈不变 ACALL 200H SP X 2 X 1 第 4 条指令的首址 PC 低 8 位 X 2 第 4 条指令的首址 PC 高 8 位 POP 50H SP X 1 POP 51H SP X 2 SJMP ORG 200H RET 答 执行过程中 前面两条为立即寻址指令 堆栈不变 执行第三条 ACALL 指令时 首 先将程序寄存器 PC 的当前值加 2 接着先后将 PC 的低八位和高八位分别进栈 SP SP 2 然后再将 PC 内容中的低 11 位用 200H 来替代 同时程序跳到第七条 ORG200H 中 接着 RET 表示子程序返回 将原先压入堆栈的 PC 值弹出 SP SP 2 最后两条 POP 指令执行后将 SP 所指地址中的内容赋给 50H SP 减 1 后再将 SP 所指地址中的内容赋给 51H SP 内容再减 1 给 SP 最后程序结束 13 请写出能实现下列功能的程序段 1 一个 16 位数据 高低字节分别放在 20H 和 21H 中 试将该数乘以 2 MOV A 21H CLR C RRC A MOV 21H A MOV A 20H RRC A MOV 20H A 2 16 位二进制数由高位到低位放在 30H 和 31H 单元 将其内容加 1 MOV A 31H ADD A 01H MOV 31H A MOV A 30H ADDC A 00H MOV 30H A 3 将 DPTR 中的数据减 5 CLR C MOV A DPL SUBB A 05H MOV DPL A MOV A DPH SUBB A 00H MOV DPh A 4 有 3 个位变量 X Y Z 请编写程序实现 Y X YZ 的逻辑关系式 X BIT 30H Y BIT 31H Z BIT 32H MOV C Y ANL C Z MOV 20H C MOV C X ORL C 20H MOV Y C 14 将一个按高低字节存放在 21H 20H 中的一个双字节乘以 2 后 再按高低次序将结果 存放到 22H 21H 20H 单元 ORG 0 STAR CLR C MOV 20H 0E2H 设低字节的数据 是 E2H MOV 21H 0F3H 设高字节的数据是 F3H MOV A 20H MOV B 2H MUL AB MOV 20H A MOV 23H B MOV A 21H MOV B 2H MUL AB ADDC A 23H MOV 21H A MOV 22H B SJMP END 15 试编程 将片外 RAM 1000H 1050H 单元的内容置为 55H MOV P2 10H MOV R0 00H MOV A 55H MOVX R0 A MOV R0 50H L0 MOVX R0 A DJNZ R0 L0 SJMP END 16 试编程统计数据区长度的程序 设数据区从片内 RAM 30H 单元开始 该数据区以 0 结 束 统计结果放入 2FH 中 MOV R0 30H L0 MOV A R0 JZ L1 INC R1 INC R0 SJMP L0 L1 MOV 2FH R1 17 试编写程序 将片外 RAM 2000H 200FH 数据区中的数据由大到小排列起来 ORG 0 L0 MOV P2 20H MOV R0 00H MOV R7 0FH CLR F0 LOOP MOVX A R0 MOV 31H A INC R0 MOVX A R0 CLR C CJNE A 31H L1 L1 JC L2 DEC R0 MOVX R0 A MOV A 31H INC R0 MOVX R0 A SETB F0 L2 DJNZ R7 LOOP JB F0 L0 SJMP END 18 若晶振频率位 6MHZ 试计算下面延时子程序的延时时间 DELAY MOV R7 0F6H 1 个机器周期 LP MOV R6 0FAH 1 个机器周期 DJNZ R6 2 个机器周期 DJNZ R7 LP 2 个机器周期 RET 2 个机器周期 答 机器周期为 2us 则有 1 1 2 250 2 246 2 2 us 247482 us 19 试分别编写延时 20ms 和 1s 的程序 设晶振频率为 12M 20ms ORG 0 MOV R1 102 L1 MOV R0 48 L2 NOP NOP DJNZ R0 L2 NOP DJNZ R1 L1 NOP NOP NOP NOP NOP NOP NOP END 1s ORG 0 MOV R2 50 L0 MOV R1 100 L1 MOV R0 49 L2 NOP NOP DJNZ R0 L2 NOP DJNZ R1 L1 DJNZ R2 L0 SJMP END 20 试编写利用调用子程序的方法延时 1min 的程序 ORG 0H MOV R2 60 A0 LCALL DLY DJNZ R2 A0 SJMP DLY MOV R2 50 L0 MOV R1 100 L1 MOV R0 49 L2 NOP NOP DJNZ R0 L2 NOP DJNZ R1 L1 DJNZ R2 L0 RET END 21 用查表程序求 0 6 之间的整数的立方 已知整数存在 A 中 查表结果存入片内 RAM 31H 中 ORG 0 MOV A DATA MOV DPTR TAB MOVC A A DPTR MOV 30H A SJMP TAB DB 0 1 8 27 64 125 216 END 若立方数超过一个字节 在两个字节以内 由以下程序实现 ORG 0000H MOV A 5 RL A MOV R0 A MOV DPTR TAB MOVC A A DPTR MOV 31H A 高位 MOV A R0 INC A MOVC A A DPTR MOV 30H A 低位 SJMP TAB DW 0 1 8 27 64 125 216 END 22 编写程序 查找在内部 RAM 的 30H 50H 单元中出现 FFH 的次数 并将查找结果存入 51H 单元 MOV R1 00H MOV R0 30H MOV R2 21H L0 MOV A R0 CJNE A 0FFH L1 INC R1 L1 INC R0 DJNZ R2 L0 MOV 51H R1 SJMP END 23 试用子程序求多项式 Y A B 2 B C 2 要求 两数之和不能超过 16 X EQU 30H X 代表 A Y EQU 31H Y 代表 B Z EQU 32H Z 代表 C F EQU 33H F 中存放计算结果 Y MOV R1 X MOV R2 Y LCALL L0 MOV R3 A MOV R1 Y MOV R2 Z LCALL L0 ADD A R3 MOV F A Sjmp L0 MOV A R1 ADD A R2 MOV B A MUL AB RET end 24 已知 60H 33H 61H 43H 试写出程序的功能和运行结果 ORG 0000h SS MOV R0 61H MOV R1 70H ACALL CRR SWAP A MOV R1 A DEC R0 ACALL CRR XCHD A R1 SJMP CRR MOV A R0 CLR C SUBB A 30h CJNE A 0AH NEQ AJMP BIG NEQ JC CEN BIG SUBB A 07H CEN RET 该程序的运行结果是 60H 33H 61H 43H 70H C3H 25 内部 RAM 的 30H 单元开始存放着一组无符号数 其数目存放在 21H 单元中 试编写 程序 求出这组无符号数中的最小的数 并将其存入 20H 单元中 MOV R0 30H MOV A R0 MOV 20H A DEC 21H LOOP INC R0 MOV A R0 CJNE A 20H L1 L1 JNC L2 MOV 20H A L2 DJNZ 21H LOOP SJMP END 26 写程序实现散转功能 R2 0 转向 RR0 R2 1 转向 RR1 R2 2 转向 RR2 ORG 0 MOV R2 2H 设 R2 2 MOV DPTR TAB MOV A R2 MOVC A A DPTR JMP A DPTR TAB DB RR0 TAB DB RR1 TAB DB RR2 TAB RR0 MOV A 1 RR0 将立即数 1 赋给 A SJMP ENDF RR1 MOV A 2 RR1 将立即数 2 赋给 A SJMP ENDF RR2 MOV A 3 RR2 将立即数 3 赋给 A SJMP ENDF ENDF SJMP 27 试按子程序形式编程 将单字节二进制数高 4 位 低 4 位分别转换成两个字节的 ASCII 码 MOV A R0 将 R0 中的内容作为贝转换对象 ANL A 0FH 取低四位 MOV DPTR TAB MOVC A A DPTR MOV 20H A 低四位转换后存放于 20H 中 MOV A R0 ANL A 0F0H 取高四位 SWAP A MOVC A A DPTR MOV 21H A 高四位转换后存放于 21H 中 TAB DB 30H 31H 32H 33H 34H 35H 36H 37H 38H 39H DB 41H 42H 43H 44H 45H 46H
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!