第3章P85习题解答.ppt_第1页
第3章P85习题解答.ppt_第2页
第3章P85习题解答.ppt_第3页
第3章P85习题解答.ppt_第4页
第3章P85习题解答.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章 P84 习题解答 题6 结果为 18H 30H 30H 38H 38H 40H 40H 40H 48H 38H R0 38H A 40H P0 38H P1 F0H P2 F0H DPTR 3848H 题9 结果为 R0 35H A 80H 40H 80H 32H 08H 题16 结果为 A CBH 程序阅读题 题33 该程序的功能是 将片内RAM50H 59H 共10个 单元的内容清0 在 INCR0 指令后增加一条 INCA 指令即可 题35 下列程序经汇编后 从1000H开始的各有关存储单元的内容将是什么 ORG1000HTAB1EQU1234HTAB2EQU3000HDB START DWTAB1 TAB2 70H ROM中 1000H 53H 1001H 54H 1002H 41H 1003H 52H 1004H 54H 1005H 12H 1006H 34H 1007H 30H 1008H 00H 1009H 00H 100AH 70H 题36 将40H 41H单元中的内容相加 其结果存放在42H单元中 进位存放在43H单元中 R0 43H A 01H 40H 98H 41H AFH 42H 47H 43H 01H 题37 将61H单元的内容乘2 低8位再加上62H单元的内容 存放在64H单元中 A 02H B 01H 61H F2H 62H CCH 63H B0H 64H 02H 解 CLRCMOVA 5DHSUBBA 0B4HMOV30H A 存差的低8位MOVA 6FHSUBBA 13HMOV31H A 存差的高8位SJMP 题20 6F5DH 13B4H 结果存入30H和31H单元 先计算低字节 后计算高字节 编程题 解 CLRCMOVA 5DHADDA 0B4HMOV30H A 存和的低8位MOVA 6FHADDCA 13HMOV31H A 存和的高8位SJMP 题20 6F5DH 13B4H 结果存入30H和31H单元 先计算低8位 再计算高8位 P85 题21 A 10 解 CLRCCJNEA 10 LOOP A 与10比较 不相等转LOOPL1 AJMPLABEL 相等 转LABELSJMP LOOP JNCL1 A 10 则转L1SJMP A 10 即不满足题意 原地踏步 另解 CLRCSUBBA 10JZLABEL A 0 转LABELJNCLABEL Cy 0 即 A 10 转LABELSJMP Cy 1 即A 10 即不满足题意 原地踏步 P85 题21 A 10 解 ORG0000HAJMPMAINORG0050HMAIN CJNEA 10 L1 A 与10比较 不相等转LOOPSJMPL2 相等 转L2L1 JNCL3 若CY 0 即A 10则转L3SJMPL4 A10 则转LABEL LABEL END P85 题21 A 10 解 CLRCSUBBA 10JCLABEL A 10 转LABELJZLABEL A 10则转LABELSJMP P85 题25 试编写程序 查找在内部RAM的20H 50H单元中是否有0AAH这个数据 若有 则51H单元置为01H 若未找到 则51单元清0 解题思路 RAM20H 50H单元的内容分别与数0AAH比较大小 而这个 数据块 总共有 50H 20H 1 31H 49 个单元 P85 题25 MOVR1 31H 数据块长度 R1MOVR0 20H 数据块首址 R0LOOP MOVA R0 取一个数CLRCCJNEA 0AAH LOOP1 数据块中无0AAH 则转MOV51H 01H 数据块中有0AAH 则51H单元赋值01HAJMPLOOP2LOOP1 INCR0 修改指针 指向下一个单元DJNZR1 LOOP 31H个单元找完 没有 转LOOP1MOV51H 00H 未找到0AAH 则51H单元清0LOOP2 AJMPLOOP2 P86 题26 试编写程序 查找在内部RAM的20H 50H单元中出现00H的次数 并将查找到的结果存入51H单元 解题思路 RAM20H 50H单元的内容分别与数00H比较大小 而这个 数据块 总共有 50H 20H 1 31H 49 个单元 P86 题26 MOVR1 31H 数据块长度 R1MOVR0 20H 数据块首址 R0MOV51H 00H 51H单元作为计数器 先清0LOOP1 MOVA R0 取一个数CJNEA 00H LOOP 不是0 则转LOOPINC51H 是0 计数器加1LOOP INCR0 修改指针 指向下一个单元DJNZR1 LOOP1 31H个单元查找完 没有 转LOOP1继续查找SJMP 31H个单元已查找完 P86 题27 外部RAM中有一个数据块 存有若干字符 数字 首地址为SOURCE 要求将该数据块传送到内部RAM以DIST开始的区域 直到遇到字符 时结束传送 也要传送 它的ASCII码为24H 解题思路 1 片外RAM数据 内部RAM 要进过累加器A 2 遇到字符 24H 时结束传送 也就是将问题转变为A中内容与24H比较大小 即A中内容是24H A中内容与 相等 就结束传送 P86 题27 MOVDPTR SOURCE 源首地址 DPTRMOVR0 DIST 目的首址 R0LOOP MOVXA DPTR 从片外RAM取一个数MOV R0 A 将其送入片内RAM中INCDPTR 指向下一个数INCR0CJNEA 24H LOOP 是 不是 取下一个数SJMP 是 结束传送 如果将题目改为 外部RAM中有一个数据块 存有若干字符 数字 首地址为SOURCE 要求将该数据块传送到内部RAM以DIST开始的区域 直到遇到字符 时结束传送 不要传送 的ASCII码为24H 程序又如何编写 P86 题31 编写一个程序 把片外RAM从2000H单元开始存放的8个数传送到片内RAM30H开始的单元中 P86 题31 SOND MOVR3 08H 数据块长度 R3MOVR1 30H 数据块目的首址 R1MOVDPTR 2000H 数据块源首址 DPTRLOOP MOVXA DPTR 从片外RAM取一个数MOV R1 A 将其送入片内RAM中INCDPTR 指向下一个数INCR1 目的地址加1DJNZR3 LOOP 传送完 否 继续传送RET 传送完 返回主程序 例1 片外RAM1000H 1001H单元中分别存有两个无符号数 请编程将这两个数中的大者存入片内RAM的60H单元中 若这两个数相等 亦存入60H单元中 解 MOVDPTR 1000HMOVXA DPTR 片外1000H单元的数送入AMOV40H A 片外1000H单元的数转存片内RAM40H单元MOVDPTR 1001HMOVXA DPTR 片外1001H单元的数送入ACJNEA 40H BIG 片外1001H单元的数与片外1000H单元的数比较大小SJMPSTORE 相等 存大者BIG JNCSTORE 无借位 1001H单元的数为大 转存大者MOVA 40H 有借位 1000H单元的数为大 大者先存放A中STORE MOV60H A 大者存入片内RAM的60H单元中SJMP 即A中的数大于40H单元的数 例6 如图所示 要求在ProteusISIS中模拟仿真 89C51的P3 7接1个LED P3 3接一开关SW 当SW每次按下闭合时 LDE都能闪烁 LED初始态为亮 亮 灭的时间为50ms 当SW每次断开时 LED不亮 要求采用 查询法 中断法 编写其完整的程序 已知晶振为12MHz 延时50ms的子程序如下 DELAY MOVR0 200L1 MOVR1 124L2 NOPDJNZR1 L2DJNZR0 L1RET 解 查询法 完整的原程序如下 ORG0000HAJMPMAINORG0050HMAIN SETBP3 3 向端口锁存器写1 输入的准备动作LOOP SETBP3 7 上电时LED为灭LOOP1 JBP3 3 LOOP SW按下 未按下 转LOOP继续查询CLRP3 7 SW按下 LED初始态为亮ACALLDELAY 调用50ms延时子程序CPLP3 7 取反 LED为灭ACALLDELAY 调用50ms延时子程序AJMPLOOP1DELAY MOVR0 200 50ms延时子程序L1 MOVR1 124L2 NOPDJNZR1 L2DJNZR0 L1RETEND 用JNB指令又如何编写程序 解 中断法 完整的原程序如下 ORG0000HAJMPMAINORG0013H 外部中断INT1的入口地址AJMPINT 1 中断服务程序ORG0050HMAIN SETBEX1 开放源允许SETBEA 开放总允许LOOP SETBP3 7 开关SW断开时 LED为灭SJMPLOOP 等待中断 即等待SW按下INT 1 CLREX1 不允许中断CLRP3 7 LED初态为亮ACALLDELAY 调用50MS延时子程序CPL3 7 LED为灭ACALLDELAY 调用50MS延时子程序SETBEX1 再次开放源允许RETI 中断返回DELAY MOVR0 200 50MS延时子程序L1 MOVR1 124L2 NOPDJNZR1 L2DJNZR0 L1RETEND 上机实验一习题 2 把ROM中首地址为 TAB 的共0FH个单元的内容3AH 3BH 3CH 49H传送到片内RAM中30H开始的单元中去 编写程序和运行结果 解法1ORG0000HAJMPLOOPORG0050HLOOP MOVDPTR TABMOVR0 30HMOVR1 10HCLRAL1 MOVCA A DPTRMOV R0 AINCDPTRINCR0CLRADJNZR1 L1SJMP TAB DB3AH 3BH 3CH 3DH 3EH 3FH 40H 48H 49

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论