单片机原理及其应用课后习题参考.答案1~6章~.doc

上传人:一*** 文档编号:813638 上传时间:2019-07-17 格式:DOC 页数:22 大小:198KB
返回 下载 相关 举报
单片机原理及其应用课后习题参考.答案1~6章~.doc_第1页
第1页 / 共22页
单片机原理及其应用课后习题参考.答案1~6章~.doc_第2页
第2页 / 共22页
点击查看更多>>
资源描述

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

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

2、备进行信息交换的部件。总线是将 CPU、存储器和 I/O 接口等相对独立的功能部件连接起来,并传送信息的公共通道。1-31-3 什么叫单片机?其主要由哪几部分组成?什么叫单片机?其主要由哪几部分组成?答:单片机(Single Chip Microcomputer)是指把 CPU、RAM、ROM、定时器/计数器以及 I/O 接口电路等主要部件集成在一块半导体芯片上的微型计算机。1-41-4 在各种系列的单片机中,片内在各种系列的单片机中,片内 ROMROM 的配置有几种形式?的配置有几种形式?用户应根据什用户应根据什么么原则来选用?答:单片机片内 ROM 的配置状态可分四种:(1)片内掩膜(Ma

3、sk)ROM 型单片机(如 8051) ,适合于定型大批量应用产品的生产;(2)片内 EPROM 型单片机(如 8751) ,适合于研制产品样机;(3)片内无 ROM 型单片机(如 8031) ,需外接 EPROM,单片机扩展灵活,适用于研制新产品;(4)EEPROM(或 Flash ROM)型单片机(如 89C51) ,内部程序存储器电可擦除,使用更方便。1-51-5 写出下列各数的另两种数制的表达形式(二、十、十六进制)写出下列各数的另两种数制的表达形式(二、十、十六进制)11000101001110010001111001001001111111011011001110111101101

4、1011101011111010111989820039200395851623629149562H4E47H249H249H3F6CH3F6CH1D5D71-61-6 写出下列各数的写出下列各数的 BCDBCD 参与:参与:59:01011001,1996:0001100110010110,4859.2:0100100001011001.0010389.41:001110001001.01000001第二章第二章 MCS-51 单片机的硬件结构单片机的硬件结构2-12-1 80528052 单片机片内包含哪些主要逻辑功能部件?单片机片内包含哪些主要逻辑功能部件?答:8052 单片机片内包括:

5、8 位中央处理器 CPU 一个片内振荡器及时钟电路256B 数据存储器 RAM。8KB 片内程序存储空间 ROM21 个特殊功能寄存器 SFR4 个 8 位并行 I/O 端口(32 条线)1 个可编程全双工串行口可寻址 64KB 的外部程序存储空间和外部数据存储空间3 个 16 位的定时器/计数器6 个中断源、2 个优先级嵌套中断结构2-22-2 80528052 的存储器分哪几个空间?如何区别不同空间的寻址?的存储器分哪几个空间?如何区别不同空间的寻址?答:8052 的存储器分为 6 个编址空间:片内 ROM 的容量为 8KB,其地址为 0000H1FFFH;可扩展片外 ROM 的容量为 6

6、4KB,其地址为 0000HFFFFH;片内 RAM 的容量为 256B,其地址为 00HFFH 分为二块:地址 00H7FH 共128B 为片内 RAM 低区,另 128B 为片内 RAM 高区,其地址空间为 80HFFH,其地址空间与 SFR 功能寄存器地址重叠; 可扩展片外 RAM 的容量为 64KB,其地址为 0000H1FFFH;特殊功能寄存器 SFR 的空间为 128B,其地址为 80HFFH,但实际只定义了 26B 单元,这 26B 单元分散在 80HF0H。程序存储器和数据存储器在逻辑上是完全分开的。CPU 通过指令 MOVC 访问程序存储器。当 8052 第 31 脚接高电平

7、时, EACPU 将从片内程序存储器 0000H 单元开始执行,当 PC 值超出片内程序存储空间,即大于 1FFFH 时,会自动转向片外程序存储空间。当接低电平时,CPU 将从EA片外程序存储器 ROM 的 0000H 单元开始执行。CPU 通过 MOV 指令访问片内数据存储空间 RAM,低区 128B 地址空间00H7FH 中地址为 00H1FH 这 32 个单元分为 4 个工作寄存器组,分别用 R0R7表示,通过工作寄存器指令进行访问。片内 RAM 中的 20H2FH 单元除可作为一般字节寻址单元使用外,这 16 个单元共 128 位中的每一位又可单独作为软件触发器使用,具有位寻址功能,其

8、位地址范围为 00H7FH;对片内高区 128B 寻址只能用寄存器间接寻址,而对特殊功能寄存器建起必须使用直接寻址。CPU 通过指令 MOVX 访问片外数据存储器。2-32-3 DPTRDPTR 的作用是什么?它由哪几个寄存器组成?的作用是什么?它由哪几个寄存器组成?答:相对于地址指针,DPTR 被称为数据指针,但实际上 DPTR 中存放的是一个 16 位的地址,作为访问程序存储器和外部数据存储器的地址指针。当对64KB 外部数据存储器空间寻址时,作为间址寄存器使用,而在访问程序存储器时,作为基址寄存器使用。DPTR 是一个 16 位的特殊功能寄存器,由两个 8 位寄存器 DPH、DPL 组成

9、,使用 SFR 中的 82H 和 83H 单元。2-42-4 简述布尔处理存储器的空间分配。简述布尔处理存储器的空间分配。答:在单片机中位处理又称布尔处理,允许按位处理的存储器称为布尔处理存储器。其地址空间由二部分构成:一部分是片内 RAM 中字节地址为20H2FH 的 16 字节的 128 个位,这些位编址为 00H7FH;另一部分在特殊寄存器中,其地址码能被 8 整除的 12 个特殊功能寄存器可以按位寻址,但其中 4 个未定义,一共有 92 位可按位寻址。这二部分结合起来形成一个具有 220 位的位寻址空间。2-52-5 80528052 单片机设置单片机设置 4 4 组工作寄存器,如何选

10、择确定和改变当前工作寄存组工作寄存器,如何选择确定和改变当前工作寄存器?器?答:8052 片内数据存储器的 00H1FH 这 32 个单元分为 4 级作为 4 个工作寄存器第 0 组地址 00H07H,第一组 08H0FH,第二组 10H17H,第 3 组18H1FH。每个工作寄存器都有 8 个单元,分别用 R0R7 表示。4 组寄存器中每一组都可能被选为 CPU 的工作寄存器,这是通过程序状态字 PSW 的 PSW.3(RS0)和 PSW.4(RS1)两位的状态来选择决定的。见下表:PSW.4(RS1)PSW.3(RS0)当前使用的工作寄存器组 R0R7000 组(00H07H)011 组(

11、08H0FH)102 组(10H17H)113 组(18H1FH)通过程序改变 RS1 和 RS0 的状态,就可方便地更换工作寄存器组。2-62-6 程序状态字寄存器程序状态字寄存器 PSWPSW 的作用是什么?常用的状态标志位有哪些位?的作用是什么?常用的状态标志位有哪些位?作用分别是什么?作用分别是什么?答:PSW 是一个 8 位的特殊功能寄存器,由一些标志位组成,用于存放程序运行中的各种状态信息。它可以进行位寻址。各位的作用如下:Cy:进位标志位。在进行加(或减)法运算时,若操作结果的最高位(D7位)有进位(或借位)时,Cy 由硬件置 1,否则 Cy 清 0。在进行位操作时,Cy又是位累

12、加器,指令助记符用 C 表示。AC:辅助进位标志位。在进行加(或减)运算时,若操作结果的低半字节(D3 位)向高半字节产生进位(或借位)时,AC 位将由硬件自动置 1,否则 AC位清 0。F0:用户标志位。用户根据需要对 F0 置位或复位,作为软件标志。RS1 和 RS0:工作寄存器组选择控制位。由用户用软件改变 RS1 和 RS0 的状态,以选择内 RAM 中的哪组工作寄存器为当前工作寄存器组。OV:溢出标志位。当进行补码运算时,运算结果超出128127 范围时,产生溢出,则 OV 自动置 1,否则 OV 清 0。PSW.1:保留位。8051 中未定义。P:奇偶校验标志位。每条指令执行完后,

13、该位始终跟踪累加器 A 中 1 的数目的奇偶性。如果 A 中有奇数个 1,则 P1;否则 P0。2-72-7 80528052 单片机的单片机的引脚有何功能?在使用引脚有何功能?在使用 80328032 时,时,引脚就如何处引脚就如何处EAEA理?理?答:8052 单片机的 31 脚为, 为访问外部或内部程序存储器控制信EAEA号。当引脚接高电平且 PC 值小于 1FFFH 时,CPU 访问内部程序存储器读取EA指令,当引脚接低电平时,CPU 只访问外部等量齐观存储器读取指令。EA在 8032 芯片中没有内部程序存储器,因此,8032 芯片的 31 脚只能接EA地。2-82-8 8052805

14、2 内部内部 RAMRAM 中低中低 128128 B B 单元划分为哪几个主要部分?各部分主要功单元划分为哪几个主要部分?各部分主要功能是什么?能是什么?答:8052 内部数据存储器 RAM 中低 128B 单元地址空间 00H7FH 被划分为三个部分。第一部分地址为 00H1FH 这 32 个单元分为 4 个工作寄存器组,分别用 R0R7 表示,通过工作寄存器指令进行访问。片内 RAM 中的第二部分20H2FH 单元除可作为一般字节寻址单元使用外,这 16 个单元共 128 位中的每一位又可单独作为软件触发器使用,具有位寻址功能,其位地址范围为00H7FH;第三部分地址 30H7FH,这部

15、分存储区域可作为 8 位数据缓冲区使用,一般地,用户把堆栈就设置在这部分区域。2-92-9 80528052 内部内部 RAMRAM 中高中高 128B128B 单元与特殊功能寄存器区地址空间重叠,使单元与特殊功能寄存器区地址空间重叠,使用中是如何区分这两个空间的?用中是如何区分这两个空间的?答:对 8052 片内高区(80H0FFH)128B 只能 采用寄存器间接寻址,而对特殊功能寄存器 SFR 建起必须采用直接寻址。2-102-10 什么叫堆栈?堆栈指针什么叫堆栈?堆栈指针 SPSP 的作用是什么?的作用是什么?答:堆栈是按照“先进后出,后进先出”的原则来存取数据的一个内部RAM 区域,这

16、个存储器区域的一端是固定的(栈底) ,另一端是活动的(栈顶) ,每个存储单元是不能按字节任意访问的。堆栈指针 SP 始终指向栈顶单元,栈顶随着数据入栈和出栈上下浮动。2-122-12 什么是时钟周期、机器周期和指令周期?什么是时钟周期、机器周期和指令周期?答:(1)时钟周期(又称为振荡周期)是指振荡器产生一个振荡脉冲信号所用的时间,是振荡频率的倒数,称为拍节。(2)机器周期是指 CPU 完成某一个规定操作所需的时间,8051 单片机的一个机器周期包含 6 个状态,并依次表示为 S1S6,每个状态分为 2 个节拍。因此一个机器周期包含 12 个时钟周期(振荡周期) ,依次表示为:S1P1、S1P

17、2、S2P1、S6P1、S6P2。(3)指令周期是指 CPU 执行一条指令所需要的时间称为指令周期。MCS-51单片机指令周期根据指令的不同,可包含有 1 或 2 或 4 个机器周期。第三章第三章 MCS-51 单片机指令系统单片机指令系统3-13-1 指出下列每一条指令的寻址方式及其完成的操作。指出下列每一条指令的寻址方式及其完成的操作。MOVMOV 2FH,#40H2FH,#40H ;立即寻址,将 40H 移入片内 2FH 单元MOVMOV A,2FHA,2FH;直接寻址,将片内 2FH 单元的数移入累加器 AMOVMOV R1,#2FHR1,#2FH;立即寻址,将 2FH 移入当前寄存器

18、组的 R1 单元MOVMOV A,R1A,R1;寄存器间接寻址,将寄存器 R1 中所存地址中的值移入累加器 AMOV 2FH,A;隐含寻址,将累加器 A 中的值移入片内 2FH 单元3-23-2 内部内部 RAMRAM 的的 4FH4FH 单元,可用哪几种寻址方式?分别举例说明。单元,可用哪几种寻址方式?分别举例说明。答:直接寻址:MOV R1,4FH间接寻址:MOV R1,#4FH寄存器间接寻址: MOV A,R13-33-3 指出下列各条指令中,指出下列各条指令中,45H45H 代表什么?代表什么?MOVMOV A,#45HA,#45H;数值MOVMOV A,45HA,45H;源地址MOV

19、MOV 45H,46H45H,46H;目标地址MOVMOV 45H,#45H45H,#45H;目标地址和数值MOVMOV C,45HC,45H;源地址3-43-4 已知:(已知:(A A)=7AH,(R0)=30H=7AH,(R0)=30H, (30H30H)=0A5H=0A5H, (PSWPSW)=80H,=80H,请写出下列请写出下列各条指令的执行结果:各条指令的执行结果:答:答:PSWPSW 的各位为的各位为 11110000,11110000,即即 Cy=1,AC=1,F0=1,RS1=1,RS0=0,OV=0,P=0Cy=1,AC=1,F0=1,RS1=1,RS0=0,OV=0,P=

20、0(1)SUBB(1)SUBB A,30HA,30H结果:(A)=D4H,CY=1,AC=0,OV=1,P=0(2 2)SUBBSUBB A,#30HA,#30H结果:(A)=49H,CY=0,AC=0,OV=0,P=1(3 3)ADDADD A A,R0R0结果:(A)=AAH,CY=0,AC=0,OV=1,P=0(4 4)ADDADD A A,30H30H结果:(A)=1FH,CY=1,AC=0,OV=0,P=1(5 5)ADDADD A,#30HA,#30H结果:(A)=AAH,CY=0,AC=0,OV=1,P=0(6 6)ADDCADDC A A,30H30H结果:(A)=20H,CY

21、=1,AC=1,OV=0,P=1(7)SWAP(7)SWAP A A 结果:(A)=A7H,对标志位无影响(8 8)XCHDXCHD A,R0A,R0结果:(A)=75H, (30H)=AAH, (R0)=AAH,P=1(9 9)XCHXCH A A,30H30H结果:(A)=0A5H, (30H)=7AH,P=0(1010)XCHXCH A,R0A,R0结果:(A)=30H, (R0)=7AH,P=0(1111)MOVMOV A,R0A,R0结果:(A)=0A5H,P=0(1212)XCHXCH A,R0A,R0结果:(A)=0A5H,(30H)=7AH,P=03-53-5 试分析以下程序段

22、的执行结果:试分析以下程序段的执行结果:MOVMOV SP,#3AHSP,#3AHMOVMOV A,#20HA,#20HMOVMOV B,#30HB,#30HPUSHPUSH ACCACCPUSHPUSH B BPOPPOP ACCACCPOPPOP B B结果:(SP)=3AH, (A)=30H, (B)=20H, (3BH)=20H, (3CH)=30H3-63-6 指出下列指令的执行结果,并写出每条指令的机器码。指出下列指令的执行结果,并写出每条指令的机器码。MOVMOV 30H,#52H30H,#52H; ;(30H)=52H01110101(753052H)MOVMOV A,#70H

23、A,#70H; ;(A)=70H01110100(7470H)MOVMOV A,30HA,30H; ;(A)=52H11100101(E530H)MOVMOV R0,#30HR0,#30H; ;(R0)=30H10101000(7830H)MOVMOV A,R0A,R0; ;A=52H11100010(E6H)3-73-7 分析下列指令的执行结果,并写出每条指令的机器码。分析下列指令的执行结果,并写出每条指令的机器码。MOVMOV A,#70HA,#70H;(A)=70H;(A)=70H01110100(74H)MOVMOV DPTR,#2030HDPTR,#2030H;(DPTR)=2030

24、H;(DPTR)=2030H10010000(90H)MOVXMOVX DPTR,ADPTR,A;(2030H)=70H;(2030H)=70H11110000(F0H)MOVMOV 30H,#40H30H,#40H;(30H)=40H;(30H)=40H01110101(75H)MOVMOV R0,#30HR0,#30H;(R0)=30H;(R0)=30H01111000(78H)MOVMOV A,R0A,R0;(A)=40H;(A)=40H11100110(E6H)3-83-8 设设 R0R0 的内容为的内容为 32H32H,A A 的内容为的内容为 48H48H,内部,内部 RAMRAM

25、 的的 32H32H 单元内容为单元内容为80H80H,4040 单元内容为单元内容为 08H08H,指出在执行下列程序段后上述各单元内容的变化。,指出在执行下列程序段后上述各单元内容的变化。MOVMOV A,R0A,R0MOVMOV R0,40HR0,40HMOVMOV 40H,A40H,AMOVMOV R0,#35HR0,#35H结果:(R0)=35H,(A)=80,(32H)=08H,(40H)=80H3-93-9 已知:已知:(A)=81H,(R0)=20H,(20H)=35H(A)=81H,(R0)=20H,(20H)=35H,指出执行完下列程序段后,指出执行完下列程序段后 A A

26、的的内容。内容。ANLANL A,#17HA,#17H; ;(A)=00000001ORLORL 20H,A20H,A; ;(20H)=00110101XRLXRL A,R0A,R0; ;(A)=00110100CPLCPL A A; ;(A)=11001011结果:(A)=CBH3-103-10 用指令实现下述数据传送用指令实现下述数据传送: :(1)(1)内部内部 RAM20HRAM20H 单元送内部单元送内部 RAM40HRAM40H 单元。单元。答:MOV 40H,20H(2)(2)外部外部 RAM20HRAM20H 单元送单元送 R0R0 寄存器。寄存器。答:MOV R1,#20H

27、MOVX A,R1 MOV R0,A(3)(3)外部外部 RAM20HRAM20H 单元送内部单元送内部 RAM20HRAM20H 单元单元答:MOV R1,#20H MOVX A,R1 MOV 20H,A(4)(4)外部外部 RAM1000HRAM1000H 单元送内部单元送内部 RAM20HRAM20H 单元单元答:MOV DPTR,#1000H MOVX A,DPTR MOV 20H,A(5)(5)外部外部 ROM1000HROM1000H 单元送内部单元送内部 RAM20HRAM20H 单元。单元。答:MOV DPTR,#1000H MOV A,#00H MOVC A,A+DPTR M

28、OV 20H,A (6)(6) 外部外部 ROM1000HROM1000H 单元送外部单元送外部 RAM20HRAM20H 单元。单元。答:MOV DPTR,#1000H MOV A,#00H MOVC A,A+DPTR MOV R1,#20H MOVX R1,A3-113-11 已知已知 1616 位二进制数的高位二进制数的高 8 8 位和低位和低 8 8 位分别存放在位分别存放在 20H20H 和和 21H21H 单元,单元,请编写将其右移一们的程序。请编写将其右移一们的程序。CLR CMOV A,20HRRC AMOV 20H,AMOV A,21HRRC AMOV 21H,A3-123-

29、12 编程实现内部编程实现内部 RAMRAM R0R7R0R7 的内容传递到的内容传递到 20H27H20H27H 单元。单元。3-133-13 试编程进行两个试编程进行两个 1616 位数的减法,位数的减法,6F5DH-13B4H,6F5DH-13B4H,结果存入内部结果存入内部 RAMRAM 的的30H30H 和和 31H31H 单元,单元,30H30H 存放差的低存放差的低 8 8 位。位。CLR CMOV A,#5DHSUBB A,#B4HMOV 30H,AMOV A,#6FHSUBB A,13HMOV 31H,A3-143-14 编写程序,若累加器编写程序,若累加器 A A 的内容分

30、别满足下列条件时,程序则至的内容分别满足下列条件时,程序则至 LABELLABEL存储单元,设存储单元,设 A A 中存放的是无符号数。中存放的是无符号数。A=10A=10A0A0(A)=10(A)=10CJNE A,#10H,LABJNZ LABELMOV R0,ALAB:JNC LABELMOV A,#10.CJNE A,R0,LABLABEL:LABEL:LAB:JNC LABEL.LABEL: 3-153-15 已知已知(SPSP)=25H,(PC)=2345H,(24H)=12H,(25H)=34H,(26H)=56H.=25H,(PC)=2345H,(24H)=12H,(25H)=

31、34H,(26H)=56H.问此问此时执行时执行“RET”“RET”指令后指令后,(SP)=?,(PC)=?(SP)=?,(PC)=?答:(SP)=23H,(PC)=3412H执行 RET 时,PCH(SP),SPSP-1,PCL(SP),SPSP-13-163-16 若若(spsp)=25H,(PC)=2345H,=25H,(PC)=2345H,标号标号 LABELLABEL 所在的地址为所在的地址为 3456H3456H,问执行问执行调用指令调用指令“LCALL“LCALL LABEL”LABEL”后后,堆栈指针和堆栈内容发生什么变化堆栈指针和堆栈内容发生什么变化?(?(PCPC)的值的值

32、等于什么等于什么?答:最后堆栈指针 SP=27H。堆栈指针 SP=26H 处 SP 内容为 45H,指针SP=27H 处内容为 23H。最后程序计数器指针 PC=3456H。执行 LCALL 后,PCPC+3,SPSP+1,(SP) PCL,SPSP+1, (SP)PCH,PCaddr16。3-173-17 试编写程序,查找在内部试编写程序,查找在内部 RAMRAM 的的 20H50H20H50H 单元中是否有单元中是否有 0AAH0AAH 这一数这一数据。若有,则将据。若有,则将 51H51H 单元置单元置 01H,01H,若未找到,则将若未找到,则将 51H51H 单元置单元置 00H00

33、H。MOV 51H,#00H;先设没找到MOV R0,#20H;起始地址LOOP: MOV A,R0;取出数字CJNE A,#0AAH,NEXT;不相等就跳转INC 51H;相等将 51 单元置 1SJMP EEE;找到转去结束NEXT: INC R0;下一个地址CJNE R0,#51H,LOOP;地址没找完就继续EEE:SJMP $;暂停3-183-18 试编写程序,统计在外部试编写程序,统计在外部 RAMRAM 2000H205FH2000H205FH 单元中出现单元中出现 00H00H 的次数,的次数,并将统计结果丰收入内部并将统计结果丰收入内部 RAMRAM 50H50H 单元。单元。

34、MOV R0,#00H;RO 设为计数器,初始为 0MOV DPTR,#2000H;置片外 RAM 起始地址MOV R1,#60H;置传送数据个数LOOP: MOVX A,DPTR;外部 RAM 单元内容送 AJNZ NEXT;传送数据不为 0 跳转INC R0;传送数据为 0,计数器加 1NEXT: INC DPTR;下一个地址DJNZ R1,LOOP;地址没找完就继续MOV 50H,R0;统计结果存入 50H 单元SJMP $;暂停3-193-19 已知已知 R3R3 和和 R4R4 中存有一个中存有一个 1616 位的二进制数,高位在位的二进制数,高位在 R3R3 中代位在中代位在 R4

35、R4中。请编程将其求补,并存回原处。中。请编程将其求补,并存回原处。答:首先假设 R3、R4 中是原码,根据原码求补的方法当最高位(R3 的 D7位)为 0 时表示为正数,那么补码与原码相同,当最高位为 1 时,表明是负数,负数的补码是最高位不变,其余位取反加 1.MOV A,R3JB ACC.7,NEGSJMP $NEG:MOV A,R4CPL ACLR CADD A,#01HMOV R4,AMOV A,R3CPL AADDC A,#00HSETB ACC.7MOV R3,ASJMP $3-203-20 编写一个程序,把片外编写一个程序,把片外 RAMRAM 从从 2000H2000H 开始

36、存放的开始存放的 1010 个数传送到片内个数传送到片内RAMRAM 30H30H 开始单元。开始单元。START: MOV R0,#30HMOV R1,#10HMOV DPTR,#2000HLOOP: MOVX A,DPTRMOV R0,AINC R0INC DPTRDJNZ R1,LOOPSJMP $3-213-21 试编程将内部试编程将内部 RAMRAM 的的 30H30H 至至 4FH4FH 单元的内容分别传送到外部单元的内容分别传送到外部 RAMRAM 的的2040H205FH2040H205FH 单元。单元。START: MOV R0,#30HMOV R1,#20HMOV DPTR

37、,#2040HLOOP: MOV A,R0MOVX DPTR,AINC DPTRINC R0DJNZ R1,LOOPSJMP $3-223-22 若外部若外部 RAMRAM 的的(2000H2000H)=X=X, (2001H2001H)=Y,=Y,编程实现编程实现 Z=3X+2Y,Z=3X+2Y,结果存结果存入内部入内部 RAMRAM 的的 20H20H 单元单元,设设 Z=255Z=255。START: MOV DPTR,#2000HMOVX A,DPTRMOV B,#03HMUL ABMOV R0,AINC DPTRMOVX A,DPTRADD A,AADD A,R0MOV 20H,A3

38、-233-23 试对内部试对内部 RAMRAM 20H20H 单元的内容进行判断,若为正数,转向单元的内容进行判断,若为正数,转向 2100H2100H 若为若为负数负数, ,转向转向 2200H2200H;若为;若为 0 0,转向,转向 2300H2300H。START: MOV A,20HJB ACC.7,NEG;为负数JNB ACC.7, POSI;为 0LJMP #2100HSJMP EEENEG:LJMP #2200HSJMP EEEPOSI: LJMP #2300HSJMP EEEEEE:SJMP $3-243-24 已知已知 30H30H、31H31H 中存有一个中存有一个 16

39、16 位二进制数,高位在前低位在后。试编位二进制数,高位在前低位在后。试编程将它们乘程将它们乘 2 2,再存回原单位中。,再存回原单位中。START: MOV A,31HADD A,31HMOV 31H,AMOV A,30HADDC A,30HMOV 30H,ASJMP $3-253-25 已知从外部已知从外部 RAMRAM 2000H2000H 开始的单元中有开始的单元中有 2020 个带符号的补码数,试编个带符号的补码数,试编程把正数和程把正数和 0 0 取出来存放到内部取出来存放到内部 RAM20HRAM20H 开始的存储单元中(负数为作处理)开始的存储单元中(负数为作处理) 。STAR

40、T: MOV R0,#20H;需处理的数的个数MOV DPTR,#2000H;需处理数的起始地址MOV R1,#20H;用于存储的目标地址LOOP: MOVX A,DPTRJB ACC.7,NEG;负数不需处理MOV R1,AINC R1NEG:INC DPTRDJNZ R0,LOOPSJMP $第四章第四章 汇编语言程序设计汇编语言程序设计4-14-1 什么叫伪指令?伪指令与指令有什么区别?什么叫伪指令?伪指令与指令有什么区别?答:伪指令不属于单片机指令集中的指令,在汇编时不产生目标代码,不影响程序的执行,仅指明在汇编时执行一些特定的操作。如为程序指定一个存储区、将一些数据、表格常数存放在指

41、定的存储单元、对地址赋用户名等。指令是计算机所能执行的一种基本操作的描述,是计算机软件的基本单元。51 单片机单片机的指令有二种表达方式:机器码指令和汇编语言指令。4-24-2 循环程序由哪几部分组成?循环程序由哪几部分组成?答:由初始化部分、循环处理部分、循环控制部分、循环结束部分这四部分组成。4-34-3 什么是子程序?对于子程序设计有什么要求?什么是子程序?对于子程序设计有什么要求?答:一段具有某一特定功能,能被其它程序所调用,调用结束后能自动返回到调用处的程序块就称为子程序。对子程序设计的要求:4-4 试对下列程序进行人工汇编,并说明此程序的功能。地址指令码ORG 1000H;ACDL

42、: MOV R0,#25H;1000H7825MOV R1,#2BH;1002H792bMOV R2,#06H;1004H7A06CLR C;1006HC3CLR A;1007HE4LOOP: MOV A,R0;1008HE6ADDC A,R1;1009H37DEC R0;100AH18DEC R1;100BH19DJNZ R2,LOOP;100CHDAFASJMP $;100EH80FEEND;1008H-100EH=-06H,其补码为(11111010)20FAH功能:将 25H 单及前 5 个数与 2BH 单元及前 5 个数分 6 组相加,结果丢弃。4-54-5 从内部从内部 RAMRA

43、M 的的 20H20H 单元开始,有单元开始,有 1515 个数据。试编一程序,把其中的正个数据。试编一程序,把其中的正数、负数分别送到数、负数分别送到 41H41H 和和 61H61H 开始的存储单元,并分别将正数、负数的个数送开始的存储单元,并分别将正数、负数的个数送40H40H 单元和单元和 60H60H 单元。单元。MOV R0,#41H;存放正数的起始地址MOV R1,#61H;存放负数的起始地址MOV SP,#2EH;指明栈顶地址MOV R3,#00H;正数个数MOV R4,#00H;负数个数MOV R7,#15;需判断数的个数LOOP: POP ACC;出栈放入 AJB ACC.

44、7,NEG;负数跳转CJNE A,#00H,LOOP1;非负非零转正数处理SJMP LOOP;零不处理,取下一个数LOOP1:MOV R0,A;正数保存INC R0;正数存放地址加 1INC R3;正数个数加 1SJMP LOOP2;未结束就继续NEG:MOV R1,A;将负数送负数保存地址INC R1;负数地址加 1INC R4;负数个数加 1LOOP2: DJNZ R7,LOOP;未结束就继续MOV 40H,R3;正数个数送 40H 单元MOV 60H,R4;负数个数送 60H 单元SJMP $END4-6 设内部 RAM 的 30H 和 31H 单元中有二个带符号数求出其中的大数存放在

45、32H 单元中。MOV A,30HXRL A,31HJB ACC.7,LOOPMOV A,30HSUBB A,31HJC LOOP1MOV 32H,30HSJMP $LOOP1: MOV 32H,31HSJMP $LOOP: MOV A,30HJB ACC.7,LOOP1MOV 32H,ASJMP $4-74-7 试编制实现试编制实现 ASCIIASCII 码转十进制数的程序。在码转十进制数的程序。在 80328032 单片机内单片机内 RAMRAM 的的 40H40H单元中存放一个代码。若此代码为十进制数的单元中存放一个代码。若此代码为十进制数的 ASCIIASCII 码,则将其相应的十进制

46、码,则将其相应的十进制数送片内数送片内 RAMRAM 的的 50H50H 单元,否则将此单元置成单元,否则将此单元置成 0FFH0FFH。MOV A,40HCLR CSUBB A,#30H;数字比其 ASCII 码值小 30HJC LOOP;存的 ASCII 值小于 0 的 ASCII 码值跳转MOV R0,AMOV A,#09H;减 30H 后差大于 0,是否不SUBB A,R0; 大于 9?JC LOOP;差大于 9,跳转MOV 50H,R0;将数字存入 50H 单元SJMP $LOOP:MOV 50H,#0FFH;不是数字,存入 0FFHSJMP $END4-84-8 试编程将存放在试编

47、程将存放在 80328032 单片机内部单片机内部 RAMRAM 中首址为中首址为 20H20H、长度为、长度为 50H50H 的数的数据快传送到片外据快传送到片外 RAMRAM 以以 20H20H 为首址的连续单元中。为首址的连续单元中。MOV R0,#20HMOV R1,#20HMOV R7,#50HLOOP: MOV A,R0MOVX R1,AINC R0INC R1DJNZ R7,LOOPSJMP $4-94-9 设一个字符串存放在设一个字符串存放在 80328032 单片机内部单片机内部 RAMRAM 以以 20H20H 为首址的连续单元中,为首址的连续单元中,字符串以回车结束。要求

48、统计该字符串中字符字符串以回车结束。要求统计该字符串中字符 C C(C C=43H=43H)的个数)的个数, ,并将其存入并将其存入外部外部 RAMRAM 的的 40H40H 单元。试编写实现上述要求的程序。单元。试编写实现上述要求的程序。MOV R0,#20HMOV R2,#00HLOOP: MOV A,R0XRL A,#0DH;判断是否是回车符JZ EXITMOV A,R0XRL A,#43HJNZ LOOP2INC R2LOOP2: INC R0SJMP LOOPEXIT: MOV DPTR,#0040HMOV A,R2MOVX DPTR,ASJMP $END4-104-10 设有一长度为设有一长度为 20H20H 的字符串,它存放在片外的字符串,它存放在片外 RAM1000HRAM1000H 为首地址的连为首地址的连续单元中。试编制将其中数字与字母分开并将它们送到片内续单元中。试编制将其中数字与字母分开并将它们送到片内 RAMRAM 以以 30H30H 和和 50H50H为首地址的连续单元中的程序。为首地址的连续单元中的程序。MOV DPTR,#1000HMOV R7,#20HMOV R0,#30HMOV R

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

当前位置:首页 > 教育专区 > 教案示例

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

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