2022年单片机原理及应用课后习题参考答案章.docx

上传人:Che****ry 文档编号:27233594 上传时间:2022-07-23 格式:DOCX 页数:39 大小:414.81KB
返回 下载 相关 举报
2022年单片机原理及应用课后习题参考答案章.docx_第1页
第1页 / 共39页
2022年单片机原理及应用课后习题参考答案章.docx_第2页
第2页 / 共39页
点击查看更多>>
资源描述

《2022年单片机原理及应用课后习题参考答案章.docx》由会员分享,可在线阅读,更多相关《2022年单片机原理及应用课后习题参考答案章.docx(39页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选学习资料 - - - - - - - - - 单片机原理及应用习题答案第一章 运算机基础学问1-1 微型运算机主要由哪几部分组成?各部分有何功能?答:一台微型运算机由中心处理单元(CPU)、储备器、 I/O 接口及 I/O 设备等组成,相互之间通过三组总线(Bus):即地址总线 AB、数据总线 DB和掌握总 线 CB来连接;CPU由运算器和掌握器组成, 运算器能够完成各种算术运算和规律运算操作,掌握器用于掌握运算机进行各种操作;储备器是运算机系统中的“ 记忆” 装置,其功能是存放程序和数据;按其功 能可分为 RAM和 ROM;输入 / 输出( I/O )接口是 CPU与外部设备进行信息交换

2、的部件;总线是将 CPU、储备器和 I/O 接口等相对独立的功能部件连接起来,并传送 信息的公共通道;1-3 什么叫单片机?其主要由哪几部分组成?答:单片机( Single Chip Microcomputer)是指把 CPU、RAM、 ROM、定时 器/ 计数器以及 I/O 接口电路等主要部件集成在一块半导体芯片上的微型运算 机;1-4 在各种系列的单片机中, 片内 ROM的配置有几种形式?用户应依据什么 原就来选用?答:单片机片内 ROM的配置状态可分四种:(1)片内掩膜( Mask)ROM型单片机(如 8051),适合于定型大批量应用产 品的生产;(2)片内 EPROM型单片机(如 87

3、51),适合于研制产品样机;,单片机扩展敏捷,适(3)片内无 ROM型单片机(如 8031),需外接 EPROM 用于研制新产品;(4)EEPROM(或 Flash ROM)型单片机(如擦除,使用更便利;89C51),内部程序储备器电可1-5 写出以下各数的另两种数制的表达形式(二、十、十六进制)1100010 1001110 10 111111 11101 101 98 20039 585 16236 29 1495 62H 4E47H 249H 3F6CH 1D 5D7 1-6 写出以下各数的 BCD参加:59:01011001,1996:0001100110010110,4859.2 :

4、0100100001011001.0010 名师归纳总结 - - - - - - -第 1 页,共 21 页精选学习资料 - - - - - - - - - 389.41 :001110001001.01000001 其次章 MCS-51 单片机的硬件结构2-1 8052 单片机片内包含哪些主要规律功能部件?答:8052 单片机片内包括:8 位中心处理器 CPU一个 片内振荡器准时钟电路 256B数据储备器 RAM;8KB片内程序储备空间 ROM 21 个特别功能寄存器 SFR 4 个 8 位并行 I/O 端口( 32 条线)1 个可编程全双工串行口 可寻址 64KB的外部程序储备空间和外部数

5、据储备空间 3 个 16 位的定时器 / 计数器 6 个中断源、 2 个优先级嵌套中断结构 2-2 8052 的储备器分哪几个空间?如何区分不同空间的寻址?答: 8052 的储备器分为 6 个编址空间:片内 ROM的容量为 8KB,其地址为 0000H1FFFH;可扩展片外 ROM的容量为 64KB,其地址为 0000HFFFFH;片内 RAM的容量为 256B,其地址为 00HFFH分为二块:地址 00H7FH共 128B为片内 RAM低区,另 128B为片内 RAM高区,其地址空间为 80HFFH,其 地址空间与 SFR功能寄存器地址重叠;可扩展片外 RAM的容量为 64KB,其地址为 0

6、000H1FFFH;特别功能寄存器SFR的空间为 128B,其地址为 80HFFH,但实际只定义了26B单元,这 26B单元分散在 80HF0H;程序储备器和数据储备器在规律上是完全分开的;CPU通过指令 MOVC拜访程序储备器;当8052 第 31 脚 EA 接高电平常, CPU将从片内程序储备器0000H单元开头执行,当PC值超出片内程序储备空间,即大于 1FFFH时,会自动转向片外程序储备空间;当 外程序储备器 ROM的 0000H单元开头执行;EA 接低电平常, CPU将从片CPU通过 MOV指令拜访片内数据储备空间 RAM,低区 128B地址空间 00H7FH中地址为 00H1FH这

7、 32 个单元分为 4 个工作寄存器组,分别用 R0R7表示,通过工作寄存器指令进行拜访; 片内 RAM中的 20H2FH单元除可作为一般字节寻址名师归纳总结 单元使用外,这16 个单元共 128 位中的每一位又可单独作为软件触发器使用,第 2 页,共 21 页具有位寻址功能,其位地址范畴为00H7FH;对片内高区128B 寻址只能用寄存- - - - - - -精选学习资料 - - - - - - - - - 器间接寻址,而对特别功能寄存器建起必需使用直接寻址;CPU通过指令 MOVX拜访片外数据储备器;2-3 DPTR 的作用是什么?它由哪几个寄存器组成?答:相对于地址指针, DPTR被称

8、为数据指针,但实际上 DPTR中存放的是一 个 16 位的地址,作为拜访程序储备器和外部数据储备器的地址指针;当对 64KB 外部数据储备器空间寻址时, 作为间址寄存器使用, 而在拜访程序储备器时, 作 为基址寄存器使用;DPTR是一个 16 位的特别功能寄存器, 由两个 8 位寄存器 DPH、DPL组成,使用 SFR中的 82H和 83H单元;2-4 简述布尔处理储备器的空间安排;答:在单片机中位处理又称布尔处理,答应按位处理的储备器称为布尔处理储备器;其地址空间由二部分构成:一部分是片内RAM中字节地址为20H2FH的 16 字节的 128 个位,这些位编址为00H7FH;另一部分在特别寄

9、存器中,其地址码能被 8 整除的 12 个特别功能寄存器可以按位寻址,但其中 4 个未定义,一共有 92 位可按位寻址;这二部分结合起来形成一个具有220 位的位寻址空间;2-5 8052 单片机设置 4 组工作寄存器,如何挑选确定和转变当前工作寄存 器?答:8052 片内数据储备器的00H1FH这 32 个单元分为 4 级作为 4 个工作寄存器第 0 组地址 00H07H,第一组 08H0FH,其次组 10H17H,第 3 组 18H1FH;每个工作寄存器都有 8 个单元,分别用 R0R7表示; 4 组寄存器中每一组都可能被选为 CPU的工作寄存器,这是通过程序状态字 两位的状态来挑选打算的

10、;见下表:PSW的 PSW.3RS0和 PSW.4RS1PSW.4RS1 PSW.3RS0 当前使用的工作寄存器组R0R7 0 0 0 组(00H07H)0 1 1 组(08H0FH)1 0 2 组(10H17H)1 1 3 组(18H1FH)通过程序转变 RS1和 RS0的状态,就可便利地更换工作寄存器组;2-6 程序状态字寄存器 作用分别是什么?PSW的作用是什么?常用的状态标志位有哪些位?答:PSW是一个 8 位的特别功能寄存器,由一些标志位组成,用于存放程序 运行中的各种状态信息;它可以进行位寻址;各位的作用如下:Cy:进位标志位;在进行加(或减)法运算时,如操作结果的最高位(D7位)

11、有进位(或借位)时,Cy 由硬件置 1,否就 Cy 清 0;在进行位操作时, Cy名师归纳总结 又是位累加器,指令助记符用C表示;第 3 页,共 21 页- - - - - - -精选学习资料 - - - - - - - - - AC:帮助进位标志位; 在进行加(或减)运算时,如操作结果的低半字节 (D3位)向高半字节产生进位(或借位)时,AC位将由硬件自动置1,否就 AC位清0;F0:用户标志位;用户依据需要对F0 置位或复位,作为软件标志;RS1和 RS0:工作寄存器组挑选掌握位;由用户用软件转变 RS1和 RS0的状 态,以挑选内 RAM中的哪组工作寄存器为当前工作寄存器组;OV:溢出标

12、志位;当进行补码运算时,运算结果超出128 127 范畴时,产生溢出,就 OV自动置 1,否就 OV清 0;PSW.1:保留位; 8051 中未定义;A 中 1 的数 P:奇偶校验标志位;每条指令执行完后,该位始终跟踪累加器 目的奇偶性;假如 A 中有奇数个 1,就 P1;否就 P0;2-7 8052 单片机的 EA 引脚有何功能?在使用 8032 时, EA 引脚就如何处 理?答:8052单片机的 31 脚为 EA , EA 为拜访外部或内部程序储备器掌握信号;当 EA 引脚接高电平且 PC值小于 1FFFH时, CPU拜访内部程序储备器读取指令,当 EA 引脚接低电平常, CPU只拜访外部

13、等量齐观储备器读取指令;在 8032 芯片中没有内部程序储备器, 因此,8032 芯片的 31 脚 EA 只能接地;2-8 8052 内部 RAM中低 128 B 单元划分为哪几个主要部分?各部分主要功 能是什么?答:8052 内部数据储备器 RAM中低 128B单元地址空间 00H7FH被划分为三个部分;第一部分地址为00H1FH这 32 个单元分为 4 个工作寄存器组,分别用R0R7表示,通过工作寄存器指令进行拜访;片内 RAM中的其次部分 20H2FH单元除可作为一般字节寻址单元使用外,这16 个单元共 128 位中的每一位又可单独作为软件触发器使用,具有位寻址功能,其位地址范畴为 00

14、H7FH;第三部分地址 30H7FH,这部分储备区域可作为 栈就设置在这部分区域;8 位数据缓冲区使用,一般地,用户把堆2-9 8052 内部 RAM中高 128B单元与特别功能寄存器区地址空间重叠,使用 中是如何区分这两个空间的?答:对 8052 片内高区( 80H0FFH)128B 只能 采纳寄存器间接寻址,而对 特别功能寄存器 SFR建起必需采纳直接寻址;2-10 什么叫堆栈?堆栈指针 SP的作用是什么?答:堆栈是依据“ 先进后出,后进先出” 的原就来存取数据的一个内部 RAM区域,这个储备器区域的一端是固定的(栈底)储备单元是不能按字节任意拜访的;,另一端是活动的(栈顶) ,每个名师归

15、纳总结 - - - - - - -第 4 页,共 21 页精选学习资料 - - - - - - - - - 堆栈指针 SP始终指向栈顶单元,栈顶随着数据入栈和出栈上下浮动;2-12 什么是时钟周期、机器周期和指令周期?答:(1)时钟周期(又称为振荡周期)是指振荡器产生一个振荡脉冲信号所 用的时间,是振荡频率的倒数,称为拍节;(2)机器周期是指 CPU完成某一个规定操作所需的时间,8051 单片机的一 个机器周期包含 6 个状态,并依次表示为 S1S6,每个状态分为 2 个节拍;因 此一个机器周期包含 12 个时钟周期(振荡周期) ,依次表示为: S1P1、S1P2、S2P1、 、 S6P1、S

16、6P2;(3)指令周期是指 CPU执行一条指令所需要的时间称为指令周期;MCS-51单片机指令周期依据指令的不同,可包含有1 或 2 或 4 个机器周期;第三章 MCS-51 单片机指令系统3-1 指出以下每一条指令的寻址方式及其完成的操作;MOV 2FH,#40H; 立刻寻址,将 40H移入片内 2FH单元MOV A,2FH ; 直接寻址,将片内 2FH单元的数移入累加器 A MOV R1,#2FH ; 立刻寻址,将 2FH移入当前寄存器组的 R1单元 MOV A,R1 ; 寄存器间接寻址,将寄存器 R1中所存地址中的值移入 累加器 A MOV 2FH,A ; 隐含寻址,将累加器A 中的值移

17、入片内 2FH单元3-2 内部 RAM的 4FH单元,可用哪几种寻址方式?分别举例说明;答:直接寻址:MOV R1,4FH 间接寻址:MOV R1,#4FH 寄存器间接寻址: MOV A,R1 3-3 指出以下各条指令中, 45H代表什么?MOV A,#45H ; 数值 MOV A,45H ; 源地址 MOV 45H,46H ; 目标地址 MOV 45H,#45H ; 目标地址和数值 MOV C,45H ; 源地址 3-4 已知:(A)=7AH,R0=30H,(30H)=0A5H,(PSW)=80H,请写出以下各条指令的执行结果:答: PSW的各位为 11110000, 即 Cy=1,AC=1

18、,F0=1,RS1=1,RS0=0,OV=0,P=0 1SUBB A,30H 结果:(A)=D4H,CY=1,AC=0,OV=1,P=0 (2)SUBB A,#30H 名师归纳总结 - - - - - - -第 5 页,共 21 页精选学习资料 - - - - - - - - - 结果:(A)=49H,CY=0,AC=0,OV=0,P=1 (3)ADD A,R0 结果:(A)=AAH,CY=0,AC=0,OV=1,P=0 (4)ADD A,30H 结果:(A)=1FH,CY=1,AC=0,OV=0,P=1 (5)ADD A,#30H 结果:(A)=AAH,CY=0,AC=0,OV=1,P=0

19、(6)ADDC A,30H 结果:(A)=20H,CY=1,AC=1,OV=0,P=1 7SWAP A 结果:(A)=A7H,对标志位无影响(8)XCHD A,R0 结果:(A)=75H,(30H)=AAH,(R0)=AAH,P=1 (9)XCH A,30H 结果:(A)=0A5H,(30H)=7AH,P=0 (10)XCH A,R0 结果:(A)=30H,(R0)=7AH,P=0 (11)MOV A,R0 结果:(A)=0A5H,P=0 (12)XCH A,R0 结果:(A)=0A5H,30H=7AH,P=0 3-5 试分析以下程序段的执行结果:MOV SP,#3AH MOV A,#20H

20、MOV B,#30H PUSH ACC PUSH B POP ACC POP B 结果:(SP)=3AH,(A)=30H,(B)=20H,(3BH)=20H,(3CH)=30H 3-6 指出以下指令的执行结果,并写出每条指令的机器码;名师归纳总结 MOV 30H,#52H ; 30H=52H 01110101753052H 第 6 页,共 21 页MOV A,#70H ; A=70H 011101007470H MOV A,30H ; A=52H 11100101E530H - - - - - - -精选学习资料 - - - - - - - - - MOV R0,#30H ; R0=30H 1

21、01010007830H MOV A,R0 ; A=52H 11100010E6H 3-7 分析以下指令的执行结果,并写出每条指令的机器码;MOV A,#70H ;A=70H 0111010074H MOV DPTR,#2030H ;DPTR=2030H 1001000090H 11110000F0H MOVX DPTR,A ;2030H=70H MOV 30H,#40H ;30H=40H 0111010175H MOV R0,#30H ;R0=30H 0111100078H ;A=40H 11100110E6H MOV A,R0 3-8 设 R0的内容为 32H,A 的内容为 48H,内部

22、RAM的 32H单元内容为 80H,40 单元内容为 08H,指出在执行以下程序段后上述各单元内容的变化;MOV A,R0 MOV R0,40H MOV 40H,A MOV R0,#35H 结果: R0=35H,A=80,32H=08H,40H=80H 3-9 已知: A=81H,R0=20H,20H=35H ,指出执行完以下程序段后 A 的 内容;ANL A,#17H ; (A)=00000001 ORL 20H,A ; 20H=00110101 XRL A,R0 ; A=00110100 CPL A ; A=11001011 结果: A=CBH 3-10 用指令实现下述数据传送 : 1 内

23、部 RAM20H单元送内部 RAM40H单元;答: MOV 40H,20H 2 外部 RAM20H单元送 R0寄存器;答: MOV R1,#20H MOVX A,R1 MOV R0,A 3 外部 RAM20H单元送内部 RAM20H单元 答: MOV R1,#20H MOVX A,R1 MOV 20H,A 4 外部 RAM1000H单元送内部 RAM20H单元 答: MOV DPTR,#1000H MOVX A,DPTR MOV 20H,A 5 外部 ROM1000H单元送内部 RAM20H单元;答: MOV DPTR,#1000H MOV A,#00H MOVC A,A+DPTR MOV 2

24、0H,A 名师归纳总结 - - - - - - -第 7 页,共 21 页精选学习资料 - - - - - - - - - 6 外部 ROM1000H单元送外部 RAM20H单元;答: MOV DPTR,#1000H MOV A,#00H MOVC A,A+DPTR MOV R1,#20H MOVX R1,A 3-11 已知 16 位二进制数的高请编写将其右移一们的程序;CLR C MOV A,20H RRC A MOV 20H,A MOV A,21H RRC A MOV 21H,A8 位和低 8 位分别存放在 20H和 21H单元,3-12 编程实现内部 RAM R0R7的内容传递到 20H

25、27H单元;3-13 试编程进行两个16 位数的减法, 6F5DH-13B4H,结果存入内部RAM的30H和 31H单元, 30H存放差的低 8 位;CLR C MOV A,#5DH SUBB A,#B4H MOV 30H,A MOV A,#6FH SUBB A,13H MOV 31H,A 3-14 编写程序,如累加器A 的内容分别满意以下条件时,程序就至LABEL储备单元,设 A中存放的是无符号数;A=10 A0 A=10 CJNE A,#10H,LAB JNZ LABEL MOV R0,A LAB:JNC LABEL . MOV A,#10 . CJNE A,R0,LAB LABEL: L

26、ABEL: LAB:JNC LABEL . LABEL: 3-15 已知( SP)=25H,PC=2345H,24H=12H,25H=34H,26H=56H. 问此 时执行“RET” 指令后, SP=.,PC=. 答: SP=23H,PC=3412H 名师归纳总结 - - - - - - -第 8 页,共 21 页精选学习资料 - - - - - - - - - 执行 RET时, PCHSP,SP SP-1,PCLSP,SPSP-1 3-16 如( sp)=25H,PC=2345H, 标号 LABEL所在的地址为 3456H,问执行调用指令“LCALL LABEL” 后,堆栈指针和堆栈内容发生

27、什么变化?(PC)的值等于什么?答:最终堆栈指针 SP=27H;堆栈指针 SP=26H处 SP内容为 45H,指针 SP=27H 处内容为 23H;最终程序计数器指针 PC=3456H;执行 LCALL后,PCPC+3,SPSP+1,SP PCL,SPSP+1,(SP)PCH,PCaddr16;3-17 试编写程序,查找在内部 RAM的 20H50H单元中是否有 0AAH这一数据;如有,就将 51H单元置 01H,如未找到,就将 51H单元置 00H;MOV 51H,#00H ; 先设没找到 MOV R0,#20H ; 起始地址 LOOP: MOV A,R0 ; 取出数字 CJNE A,#0A

28、AH,NEXT ; 不相等就跳转INC 51H ; 相等将 51 单元置 1 SJMP EEE ; 找到转去终止 NEXT: INC R0 ; 下一个地址CJNE R0,#51H,LOOP ; 地址没找完就连续EEE: SJMP $ ; 暂停3-18 试编写程序,统计在外部RAM 2000H205FH单元中显现 00H的次数,并将统计结果丰收入内部RAM 50H单元;;RO设为计数器,初始为0 MOV R0,#00H MOV DPTR,#2000H ; 置片外 RAM起始地址MOV R1,#60H ; 置传送数据个数LOOP: MOVX A,DPTR ; 外部 RAM单元内容送 A JNZ N

29、EXT ; 传送数据不为 0 跳转INC R0 ; 传送数据为 0,计数器加 1 NEXT: INC DPTR ; 下一个地址DJNZ R1,LOOP ; 地址没找完就连续MOV 50H,R0 ; 统计结果存入 50H单元SJMP $ ; 暂停3-19 已知 R3 和 R4 中存有一个 16 位的二进制数,高位在 R3 中代位在 R4中;请编程将其求补,并存回原处;名师归纳总结 答:第一假设R3、R4 中是原码,依据原码求补的方法当最高位(R3 的 D7第 9 页,共 21 页- - - - - - -精选学习资料 - - - - - - - - - 位)为 0 时表示为正数,那么补码与原码相

30、同,当最高位为 1 时,说明是负数,负数的补码是最高位不变,其余位取反加1. MOV R4,A MOV A,R3 JB ACC.7,NEG MOV A,R3 SJMP $ CPL A NEG: MOV A,R4 ADDC A,#00H CPL A SETB ACC.7 CLR C MOV R3,A ADD A,#01H SJMP $ 3-20 编写一个程序,把片外 RAM 30H开头单元;RAM从 2000H开头存放的 10 个数传送到片内START: MOV R0,#30H INC R0 MOV R1,#10H INC DPTR MOV DPTR,#2000H DJNZ R1,LOOP LO

31、OP: MOVX A,DPTR SJMP $ MOV R0,A 3-21 试编程将内部RAM的 30H 至 4FH 单元的内容分别传送到外部RAM的2040H205FH单元;START: MOV R0,#30H INC DPTR MOV R1,#20H INC R0 MOV DPTR,#2040H DJNZ R1,LOOP SJMP $ LOOP: MOV A,R0 MOVX DPTR,A 3-22 如外部 RAM的(2000H)=X,(2001H)=Y,编程实现 Z=3X+2Y,结果存入 内部 RAM的 20H单元,设 Z=255;START: MOV DPTR,#2000H INC DPT

32、R MOVX A,DPTR MOVX A,DPTR MOV B,#03H ADD A,A MUL AB ADD A,R0 MOV R0,A MOV 20H,A 3-23 试对内部 RAM 20H单元的内容进行判定,如为正数,转向 2100H如为 负数 , 转向 2200H;如为 0,转向 2300H;START: MOV A,20H 名师归纳总结 JB ACC.7,NEG ; 为负数第 10 页,共 21 页- - - - - - -精选学习资料 - - - - - - - - - JNB ACC.7, POSI ; 为 0 LJMP #2100H SJMP EEE NEG: LJMP #22

33、00H SJMP EEE POSI: LJMP #2300H SJMP EEE EEE: SJMP $ 3-24 已知 30H、31H中存有一个 16 位二进制数,高位在前低位在后;试编 程将它们乘 2,再存回原单位中;START: MOV A,31H ADDC A,30H ADD A,31H MOV 30H,A MOV 31H,A SJMP $ MOV A,30H 3-25 已知从外部 RAM 2000H开头的单元中有20 个带符号的补码数,试编程把正数和 0 取出来存放到内部 RAM20H开头的储备单元中(负数为作处理) ;START: MOV R0,#20H ; 需处理的数的个数MOV

34、DPTR,#2000H ; 需处理数的起始地址MOV R1,#20H ; 用于储备的目标地址 LOOP: MOVX A,DPTR JB ACC.7,NEG ; 负数不需处理 MOV R1,A INC R1 NEG: INC DPTR DJNZ R0,LOOP SJMP $ 第四章 汇编语言程序设计 4-1 什么叫伪指令?伪指令与指令有什么区分?答:伪指令不属于单片机指令集中的指令,在汇编时不产生目标代码, 不影响程序的执行,仅指明在汇编时执行一些特定的操作; 如为程序指定一个储备区、将一些数据、表格常数存放在指定的储备单元、对地址赋用户名等;指令是运算机所能执行的一种基本操作的描述,是运算机软

35、件的基本单元;51 单片机单片机的指令有二种表达方式:机器码指令和汇编语言指令;名师归纳总结 - - - - - - -第 11 页,共 21 页精选学习资料 - - - - - - - - - 4-2 循环程序由哪几部分组成?答:由初始化部分、循环处理部分、循环掌握部分、循环终止部分这四部分 组成;4-3 什么是子程序?对于子程序设计有什么要求?答:一段具有某一特定功能, 能被其它程序所调用, 调用终止后能自动返回 到调用处的程序块就称为子程序;对子程序设计的要求:4-4 试对以下程序进行人工汇编,并说明此程序的功能;ORG 1000H 地址指令码25 ; ACDL: MOV R0,#25H

36、 ;1000H 78 MOV R1,#2BH ;1002H 79 2b MOV R2,#06H ;1004H 7A 06 CLR C ;1006H C3 FA CLR A ;1007H E4 LOOP: MOV A,R0 ;1008H E6 ADDC A,R1 ;1009H 37 DEC R0 ;100AH 18 DEC R1 ;100BH 19 DJNZ R2,LOOP ;100CH DA SJMP $ ;100EH 80 FE END ; 1008H-100EH=-06H,其补码为( 11111010)20FAH 功能:将 25H单及前 5 个数与 2BH单元及前 5 个数分 6 组相加,

37、结果丢弃;4-5 从内部 RAM的 20H单元开头,有 15 个数据;试编一程序,把其中的正 数、负数分别送到 41H 和 61H 开头的储备单元,并分别将正数、负数的个数送 40H单元和 60H单元;名师归纳总结 MOV R0,#41H ; 存放正数的起始地址第 12 页,共 21 页MOV R1,#61H ; 存放负数的起始地址MOV SP,#2EH ; 指明栈顶地址MOV R3,#00H ; 正数个数MOV R4,#00H ; 负数个数MOV R7,#15 ; 需判定数的个数LOOP: POP ACC ; 出栈放入 A - - - - - - -精选学习资料 - - - - - - -

38、- - JB ACC.7,NEG ; 负数跳转CJNE A,#00H,LOOP1 ; 非负非零转正数处理SJMP LOOP ; 零不处理,取下一个数LOOP1:MOV R0,A ; 正数储存INC R0 ; 正数存放地址加 1 INC R3 ; 正数个数加 1 SJMP LOOP2 ; 未终止就连续NEG: MOV R1,A ; 将负数送负数储存地址INC R1 ; 负数地址加 1 INC R4 ; 负数个数加 1 LOOP2: DJNZ R7,LOOP ; 未终止就连续 MOV 40H,R3 ; 正数个数送 40H单元 MOV 60H,R4 ; 负数个数送 60H单元 SJMP $ END

39、4-6 设内部 RAM的 30H和 31H单元中有二个带符号数求出其中的大数存放在 32H单元中;MOV A,30H SJMP $ XRL A,31H LOOP1: MOV 32H,31H JB ACC.7,LOOP SJMP $ MOV A,30H LOOP: MOV A,30H SUBB A,31H JB ACC.7,LOOP1 JC LOOP1 MOV 32H,A MOV 32H,30H SJMP $ 4-7 试编制实现 ASCII 码转十进制数的程序;在8032 单片机内 RAM的 40H单元中存放一个代码;如此代码为十进制数的 ASCII 码,就将其相应的十进制 数送片内 RAM的

40、50H单元,否就将此单元置成 0FFH;MOV A,40H CLR C SUBB A,#30H ; 数字比其 ASCII 码值小 30H JC LOOP ; 存的 ASCII 值小于 0 的 ASCII 码值跳转 MOV R0,A 名师归纳总结 MOV A,#09H ; 减 30H后差大于 0,是否不第 13 页,共 21 页SUBB A,R0 ; 大于 9?- - - - - - -精选学习资料 - - - - - - - - - JC LOOP ; 差大于 9,跳转 MOV 50H,R0 ; 将数字存入 50H单元 SJMP $ LOOP:MOV 50H,#0FFH SJMP $ END

41、; 不是数字,存入 0FFH 4-8 试编程将存放在 8032 单片机内部 RAM中首址为 20H、长度为 50H的数据快传送到片外 RAM以 20H为首址的连续单元中;MOV R0,#20H INC R0 MOV R1,#20H INC R1 MOV R7,#50H DJNZ R7,LOOP LOOP: MOV A,R0 SJMP $ MOVX R1,A 4-9 设一个字符串存放在8032单片机内部 RAM以 20H为首址的连续单元中,字符串以回车终止;要求统计该字符串中字符 C( C =43H)的个数 , 并将其存入外部 RAM的 40H单元;试编写实现上述要求的程序;MOV R0,#20

42、H INC R2 MOV R2,#00H LOOP2: INC R0 LOOP: MOV A,R0 SJMP LOOP XRL A,#0DH EXIT: MOV DPTR,#0040H ; 判定是否是回车符 MOV A,R2 JZ EXIT MOVX DPTR,A MOV A,R0 SJMP $ XRL A,#43H END JNZ LOOP2 4-10 设有一长度为 20H 的字符串,它存放在片外 RAM1000H为首地址的连续单元中;试编制将其中数字与字母分开并将它们送到片内 RAM以 30H 和 50H为首地址的连续单元中的程序;MOV DPTR,#1000H SJMP ISNUM MOV R7,#20H LOOP1: JNC LOOP2 MOV R0,#30H SJMP ISCHAR MOV R1,#50H LOOP2: CJNE A,#3AH,LOOP3 LOOP: MOVX A,DPTR LOOP3:JC ISNUM 名师归纳总结 CJNE A,#30H,LOOP1 SJM

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁