资源描述
资料内容仅供您学习参考,如有不当之处,请联系改正或者删除。
单片机原理及接口技术教材习题全部解答
第 1 章 绪论
1-1 解答:
第一台计算机的研制目的是为了计算复杂的数学难题。它的特点是: 计算机字长为 12 位, 运算速 度为 5 000 次/s, 使用 18 800 个电子管, 1 500 个继电器, 占地面积为 150 m2, 重达 30 t, 其造价为 100 多万美元。它的诞生, 标志着人类文明进入了一个新的历史阶段。
1-2 解答: 单片微型计算机简称单片机。一个完整的单片机芯片至少有中央处理器( CPU) 、 随机存储器( RAM) 、
只读存储器( ROM) 、 定时/计数器及 I/O 接口等部件。
1-3 解答: 单片机的发展大致经历了四个阶段: 第一阶段( 1970—1974 年) , 为 4 位单片机阶段; 第二阶段( 1974—1978 年) , 为低中档 8 位单片机阶段; 第三阶段( 1978—1983 年) , 为高档 8 位单片机阶段;
第四阶段( 1983 年至今) , 为 8 位单片机巩固发展阶段及 16 位单片机、 32 位单片机推出阶段。
1-4 解答:
Intel 公司的 MCS-48 系列、 MCS-51 系列、 MCS-96 系列产品; Motorola 公司的 6801、 6802、 6803、 6805、 68HC11 系列产品; Zilog 公司的 Z8、 Super8 系列产品;
Atmel 公司的 AT89 系列产品;
Fairchild 公司的 F8 和 3870 系列产品;
TI 公司的 TMS7000 系列产品;
NS 公司的 NS8070 系列产品;
NEC 公司的 μCOM87( μPD7800) 系列产品;
National 公司的 MN6800 系列产品;
Hitachi 公司的 HD6301、 HD63L05、 HD6305。
1-5 解答:
( 1) 8031/8051/8751 三种型号, 称为 8051 子系列。8031 片内没有 ROM, 使用时需在片外接 EPROM。
8051 片内含有 4KB 的掩模 ROM, 其中的程序是生产厂家制作芯片时烧制的。8751 片内含有 4KB 的
EPROM, 用户能够先用紫外线擦除器擦除, 然后再利用开发机或编程器写入新的程序。
( 2) 8032A/8052A/8752A 是 8031/8051/8751 的增强型, 称为 8052 子系列。其中片内 ROM 和 RAM
的容量比 8051 子系列各增加一倍, 另外, 增加了一个定时/计数器和一个中断源。
( 3) 80C31/80C51/87C51BH 是 8051 子系列的 CHMOS 工艺芯片, 80C32/80C52/87C52 是 8052 子 系列的 CHMOS 工艺芯片, 两者芯片内的配置和功能兼容。
1-6 解答:
8052 子系列片内 ROM 和 RAM 的容量比 8051 子系列各增加一倍, 另外, 增加了一个定时/计数器 和一个中断源。
1-7 解答:
AT89 系列单片机是美国 Atmel 公司的 8 位 Flash 单片机产品。它的最大特点是在片内含有 Flash 存 储器, 在系统的开发过程中能够十分容易地进行程序的修改, 使开发调试更为方便。AT89 系列单片机 以 8031 为内核, 是与 8051 系列单片机兼容的系列。
1-8 解答:
高档型单片机有 AT89S51、 AT89S52、 AT89S53 和 AT89S8252 等型号, 其中 AT89S51 有 4KB 可下 载 Flash 存储器, AT89S52、 AT89S8252 有 8KB 可下载 Flash 存储器, AT89S53 有 12KB 可下载 Flash 存 储器。
第 2 章 MCS-51 系列单片机的结构及原理
2-1 解答:
MCS-51 单片机由 8 个部件组成: 中央处理器( CPU) , 片内数据存储器( RAM) , 片内程序存储器
( ROM/EPROM) , 输入/输出接口( I/O 口, 分为 P0 口、 P1 口、 P2 口和 P3 口) , 可编程串行口, 定时/
计数器, 中断系统及特殊功能寄存器( SFR) 。 中央处理器( CPU) : 单片机的核心部分, 它的作用是读入和分析每条指令, 根据每条指令的功能
要求, 控制各个部件执行相应的操作。 片内数据存储器( RAM) : 存放各项操作的临时数据。 片内程序存储器( ROM/EPROM) : 存放单片机运行所需的程序。
输入/输出接口( I/O 口) : 单片机与外设相互沟通的桥梁。
可编程串行口: 能够实现与其它单片机或 PC 机之间的数据传送。 定时/计数器: 具有可编程功能, 能够完成对外部事件的计数, 也能够完成定时功能。 中断系统: 能够实现分时操作、 实时处理、 故障处理等功能。
特殊功能寄存器( SFR) : 反映单片机的运行状态, 包含了单片机在运行中的各种状态字和控制字, 以及各种初始值。
2-2 解答:
EA 引脚是片内外程序存储器的选择信号。当 EA 端保持高电平时, 访问内部程序存储器, 但在 PC
( 程序计数器) 值超过 0FFFH( 对于 8051/8751/80C51) 或 1FFFH( 对于 8052) 时, 将自动转向访问外 部程序存储器。当 EA 端保持低电平时, 不论是否有内部程序存储器, 则只访问外部程序存储器。
由于 8031 片内没有程序存储器, 因此在使用 8031 时, EA 引脚必须接低电平。
2-3 解答:
在 MCS-51 单片机中, 除 P3 口具有第二功能外, 还有 3 条控制线具有第二功能。
P3 口的第二功能: P3.0—RXD: 串行数据接收端 P3.1—TXD: 串行数据发送端
P3.2— INT0 : 外部中断 0 申请输入端
P3.3— INT1 : 外部中断 1 申请输入端
P3.4—T0: 定时器 0 计数输入端
P3.5—T1: 定时器 1 计数输入端
P3.6— WR : 外部 RAM 写选通
P3.7— RD : 外部 RAM 读选通
3 条控制线的第二功能:
ALE— PROG : 片内 EPROM 编程脉冲。片内具有 EPROM 的芯片, 在 EPROM 编程期间, 此引脚 输入编程脉冲。
RESET—VPD: 备用电源。VCC 掉电期间, 此引脚可接备用电源, 以保持内部 RAM 数据不丢失。
EA —VPP: 片内 EPROM 编程电源。在对片内具有 EPROM 的芯片进行编程时, 此引脚用于施加
21V 编程电源。
2-4 解答:
MCS-51 单片机的内部存储空间分为数据存储器和程序存储器。
内部数据存储器: 共 256 字节单元, 包括低 128 个单元和高 128 个单元。低 128 字节又分成 3 个区 域: 工作寄存器区( 00H~1FH) , 位寻址区( 20H~2FH) 和用户 RAM 区( 30H~7FH) 。高 128 字节是供 给特殊功能寄存器使用的, 因此称之为特殊功能寄存器区。
内部程序存储器: 在 8031 片内无程序存储器, 8051 片内具有 4KB 掩模 ROM, 8751 片内具有
4KBEPROM。
2-5 解答:
MCS-51 单片机提供了 4 组工作寄存器, 对于当前工作寄存器组的选择, 是经过 PSW 中的 RS1 和
RS0 来进行选择。具体关系如下表:
RS1
RS0
当前寄存器组
0
0
第 0 组工作寄存器
0
1
第 1 组工作寄存器
1
0
第 2 组工作寄存器
1
1
第 3 组工作寄存器
2-6 解答:
内部 RAM 低 128 个单元按用途分成 3 个区域: 工作寄存器区( 00H~1FH) , 位寻址区( 20H~2FH) 和用户 RAM 区( 30H~7FH) 。
2-7 解答:
DPTR 是数据指针寄存器, 是一个 16 位寄存器, 用来存放 16 位存储器的地址, 以便对外部数据存 储器 RAM 中的数据进行操作。DPTR 由高位字节 DPH 和低位字节 DPL 组成。
2-8 解答: 所谓堆栈, 顾名思义就是一种以”堆”的方式工作的”栈”。堆栈是在内存中专门开辟出来的按照
”先进后出, 后进先出”的原则进行存取的 RAM 区域。堆栈的用途是保护现场和断点地址。在 8051
单片机复位后, 堆栈指针 SP 总是初始化到内部 RAM 地址 07H。从 08H 开始就是 8051 的堆栈区, 这个 位置与工作寄存器组 1 的位置相同。因此, 在实际应用中, 一般要根据需要在程序初始化时对 SP 重新 赋值, 以改变堆栈的位置。
2-9 解答:
程序状态字寄存器 PSW 是 8 位寄存器, 用于存放程序运行的状态信息。
CY( PSW.7) : 进位标志位。 AC( PSW.6) : 辅助进位标志位。 F0( PSW.5) 、 F1( PSW.1) : 用户标志位。
RS1( PSW.4) 、 RS0( PSW.3) : 工作寄存器组选择位。
OV( PSW.2) : 溢出标志位。
P( PSW.0) : 奇偶标志位。
2-10 解答:
P0 口由一个所存器、 两个三态输入缓冲器、 场效应管、 控制与门、 反相器和转换开关组成; 作为 输出口时, 必须外接上拉电阻才能有高电平输出, 作为输入口时, 必须先向锁存器写”1”; 作为普通 I/O 口使用或低 8 位地址/数据总线使用。
P1 口内没有转换开关, 但有上拉电阻; 只用作普通 I/O 口使用。
P2 口比 P1 口多了一个转换控制开关; 作为普通 I/O 口使用或高 8 位地址线使用。
P3 口比 P1 口增加了与非门和缓冲器; 具有准双向 I/O 功能和第二功能。 上述 4 个端口在作为输入口使用时, 应注意必须先向端口写”1”。
2-11 解答:
指令周期: 执行一条指令所需要的时间。 机器周期: CPU 完成一个基本操作所需要的时间。 状态: 振荡脉冲经过二分频后, 得到的单片机的时钟信号。 拍: 振荡脉冲的周期。
当晶振频率为 12MHz 时, 一个机器周期为 1μs; 当晶振频率为 8MHz 时, 一个机器周期为 3μs。
2-12 解答:
在时钟电路工作后, 只要在单片机的 RESET 引脚上出现 24 个时钟震荡脉冲( 两个机器周期) 以上 的高电平, 单片机就能实现复位。
复位后, CPU 和系统都处于一个确定的初始状态, 在这种状态下, 所有的专用寄存器都被赋予默认 值, 除 SP=07H, P0~P3 口为 FFH 外, 其余寄存器均为 0。
2-13 解答:
8051 单片机应用系统的电压检测电路监测到电源下降时, 触发外部中断, 在中断服务子程序中将外 部 RAM 中的有用数据送入内部 RAM 保存。( 内部 RAM 由备用电源供电)
80C51 单片机应用系统的电压检测电路监测到电源降低时, 也出发外部中断, 在中断服务子程序中, 除了要将外部 RAM 中有用的数据保存以外, 还要将特殊功能寄存器的有用内容保护起来, 然后对电源 控制寄存器 PCON 进行设置。
2-14 解答: 单片机退出空闲状态有两种方法: 中断退出和硬件复位退出。
第 3 章 MCS-51 系列单片机的指令系统
3-1 解答: 指令是规定计算机进行某种操作的命令, 一台计算机所能执行的指令集合称为该计算机的指令系
统。
计算机内部只识别二进制数, 因此, 能别计算机直接识别、 执行的指令时使用二进制编码表示的指 令, 这种指令别称为机器语言指令。
以助记符表示的指令就是计算机的汇编语言指令。
3-2 解答:
[标号: ] <操作码> [操作数] [; 注释]
3-3 解答:
MCS-51 系列单片机提供了 7 种寻址方式:
( 1) 立即寻址: 操作数在指令中直接给出, 立即数前面有”#”。
( 2) 直接寻址: 在指令中直接给出操作数地址。对应片内低 128 个字节单元和特殊功能寄存器。
( 3) 寄存器寻址: 以寄存器的内容作为操作数。对应的寄存器有: R0~R7、 A、 AB 寄存器和数据 指针 DPTR。
( 4) 寄存器间接寻址: 以寄存器的内容作为 RAM 地址, 该地址中的内容才是操作数。对应片内
RAM 的低 128 个单元采用 R0、 R1 作为间址寄存器, 片外 RAM 低 256 个单元可用 R0、 R1 作为间址寄 存器, 整个 64KB 空间可用 DPTR 作为间址寄存器。
( 5) 变址寻址: 以 DPTR 或 PC 作为基址寄存器, 以累加器 A 作为变址寄存器, 并以两者内容相 加形成的 16 位地址作为操作数地址。对应片内、 片外的 ROM 空间。
( 6) 相对寻址: 只在相对转移指令中使用。对应片内、 片外的 ROM 空间。
( 7) 位寻址: 对可寻址的位单独进行操作。对应位寻址区 20H~2FH 单元的 128 位和字节地址能被
8 整除的特殊功能寄存器的相应位。
3-4 解答: 直接寻址方式。
3-5 解答:
寄存器间接寻址方式。
3-6 解答: 立即寻址方式, 直接寻址方式, 寄存器寻址方式, 寄存器间接寻址方式, 位寻址方式。
3-7 解答:
变址寻址方式
3-8 解答:
对于 8052 单片机内部 RAM 的高 128B, 必须采用寄存器间接寻址方式进行访问。
3-9 解答: 外部数据传送指令有 6 条:
MOVX A, @DPTR MOVX @DPTR, A MOVX A, @Ri MOVX @Ri, A MOVC A, @A+DPTR MOVC A, @A+PC
( 1) MOVX A, @R1
MOVX A, @DPTR
都是访问片外 RAM, 但二者寻址范围不同。
前 1 条指令是对片外 RAM 低 256 个单元的”读”操作。 后 1 条指令是对片外 RAM64KB 空间的”读”操作。
( 2) MOVX A, @DPTR MOVX @DPTR, A
访问空间相同, 但数据传送方向不同。
前 1 条指令是对片外 RAM64KB 空间的”读”操作。 后 1 条指令是对片外 RAM64KB 空间的”写”操作。
( 3) MOV @R0, A
二者访问的空间不同。
MOVX @R0, A
前 1 条指令是对片内 RAM 低 128 个单元的”写”操作。 后 1 条指令是对片外 RAM 低 256 个单元的”写”操作。
( 4) MOVC A, @A+DPTR MOVX A, @DPTR
二者访问的空间不同, 寻址方式不同。
前 1 条指令是变址寻址方式, 对 ROM 操作。
后 1 条指令是寄存器间接寻址方式, 对片外 RAM 操作。
3-10 解答: R0←30H, ( R0) =30H A←( ( R0) ) , ( A) =40H R1←( A) , ( R1) =40H
B←( ( R1) ) , ( B) =10H
( R1) ←( P1) , ( ( R1) ) =( 40H) =EFH
P2←( P1) , ( P2) =EFH
10H←20H, ( 10H) =20H
30H←( 10H) , ( 30H) =20H
结果: ( R0) =30H, ( A) =40H, ( R1) =40H, ( B) =10H, ( 40H) =EFH, ( P2) =EFH, ( 10H) =20H,
( 30H) =20H
3-11 解答:
( 1) 由于在工作寄存器与工作寄存器之间不能直接传送数据, 因此需要借助累加器 A。
MOV A, R1
MOV R0, A
( 2) 片外 RAM 向片内 RAM 传送数据, 不能直接进行, 需要借助累加器 A。由于片外 RAM 是 60H
单元, 地址小于 FFH, 因此间址寄存器使用 Ri 即可。
MOV
R1, #60H
MOVX
A, @R1
MOV
R0, A
( 3)
MOV
R1, #60H
MOVX
A, @R1
MOV
40H, A
( 4) 片外数据不能直接送入片外单元, 需要先将片外数据读入累加器, 然后再送到片外。
MOV DPTR, #1000H MOVX A, @DPTR
MOV R1, #40H MOVX @R1, A
( 5) ROM 中的数据需要使用查表指令才能读出来, 因此此题不能使用一般的传送指令从 ROM 中 读数据。
MOV DPTR, # H
MOV A, #00H
MOVC A, @A+DPTR
MOV R2, A
( 6) MOV
DPTR, # H
MOV A, #00H MOVC A, @A+DPTR MOV 40H, A
( 7)
MOV
DPTR, # H
MOV
A, #00H
MOVC
A, @A+DPTR
MOV
DPTR, #0200H
MOVX
@DPTR, A
3-12 解答:
片外 RAM 与片内 RAM 之间的数据传送不能直接进行, 需要借助累加器 A。数据交换需要使用数 据交换指令 XCH。
MOV DPTR, #1000H MOVX A, @DPTR
XCH A, 60H MOVX @DPTR, A
3-13 解答: 本题需要采用查表指令。
ORG 0200H
MOV DPTR, #TAB
MOV A, R7
MOVC A, @A+DPTR
ORG 0300H
TAB: DB
3-14 解答:
0, 1, 4, 9, 16, 25, 36, 49, 64, 81
( 1) 结果: ( A) ←→( R1) , ( A) =40H, ( R1) =5BH, ( PSW) =81H
( 2) 结果: ( A) ←→( 40H) , ( A) =C3H, ( 40H) =5BH, ( PSW) =80H
( 3) 结果: ( A) ←→( ( R1) ) , ( A) =C3H, ( ( R1) ) =( 40H) =5BH, ( PSW) =80H
( 4) 结果: ( A) 0~3←→( ( R1) ) 0~3, ( A) =53H, ( ( R1) ) =( 40H) =CBH, ( PSW) =80H
( 5) 结果: ( A) 0~3←→( A) 4~7, ( A) =B5H, ( PSW) =81H
( 6) 结果: A←( A) +( R1) , ( A) =9BH, ( PSW) =05H
( 7) 结果: A←( A) +( 40H) , ( A) =1EH, ( PSW) =80H
( 8) 结果: A←( A) +40H, ( A) =9BH, ( PSW) =05H
( 9) 结果: A←( A) +( 40H) +CY, ( A) =1FH, ( PSW) =81H
( 10) 结果: A←( A) -( 40H) -CY, ( A) =97H, ( PSW) =85H
( 11) 结果: A←( A) - 40H - CY, ( A) =1AH, ( PSW) =01H
3-15 解答:
( 1) 该组指令执行后( A) =00H, 不影响 CY 位。
( 2) 该组指令执行后( A) =00H, 影响 CY 位。
说明: 单独执行 INC 指令, 只影响奇偶标志位 P, 不影响半进位标志位 AC 和进位位 CY 位。执行
ADD 指令后, 将影响 CY、 AC 和 P 位。
3-16 解答:
本题涉及的是 16 位数的减法运算, 首先应让低 8 位相减, 然后让高 8 位带着借位相减。注意: 应 在低 8 位相减前将进位位 CY 清空 0。
CLR C
MOV A, #56H SUBB A, #78H MOV R0, A MOV A, #23H SUBB A, #45H MOV R1, A
3-17 解答:
A←( A) ∧23H, ( A) =03H
42H←( 42H) ∨( A) , ( 42H) =37H
A←( A) ⊕ ( ( R0) ) , ( A) =34H
A←( A ) , ( A) =CBH
结果: ( A) =CBH
3-18 解答:
( 1)
MOV MOVX
DPTR, #1000H A, @DPTR
( 2)
CPL MOVX MOV MOVX ANL XRL MOVX
A
@DPTR, A
R0, #60H
A, @R0
A, #3FH
A, #03H
@R0, A
3-19 解答:
DA A 指令的作用是对 A 中刚进行的两个 BCD 码的加法结果进行修正, 即继续使 BCD 码加法运 算的结果保持为 BCD 码。使用时, DA A 指令只能使用在加法指令后, 即 ADD 指令和 ADDC 指令。
3-20 解答:
MOV
DPTR, #1000H
MOVX A, @DPTR MOV B, #10
MUL AB
MOV 30H, A
MOV 31H, B
MOV DPTR, # H
MOVX A, @DPTR
MOV B, #32
MUL AB
ADD A, 30H MOV 30H, A MOV A, B ADDC A, 31H MOV 31H, A
3-21 解答:
MOV R7, #10
MOV MOV
DPTR, #block1
R0, #block2
LOOP:
MOVX A, @DPTR
MOV @R0, A
INC DPTR INC R0
DJNZ R7, LOOP
3-22 解答:
MOV LOOP: MOV
A, #01H P0, A
RL A LCALL DELAY SJMP LOOP
DELAY: MOV R7, #00H
DELAY1: MOV
R6, #00H
DJNZ R6, $
DJNZ R7, DELAY1
RET
3-23 解答:
ORL
C, 11H
MOV 11H, C MOV C, P1.0
ORL C, 10H
ANL
C, 11H
MOV P1.0, C
3-24 解答:
( 1) 正确。
( 2) 错误。原因: 清零指令只能用于累加器 ACC 和位操作, 而本题中 E0H 只能是字节地址( 位 地址的范围是 00H~7FH) , 因此该条指令错误。
( 3) 错误。原因: ACC 是直接字节地址, 不能用于清零指令。
( 4) 正确。ACC.0 是一个位, 能够应用到清零指令中。
( 5) 正确。
( 6) 错误。原因: 取反指令只能用于累加器 ACC 和位操作, 而本题中 E0H 只能是字节地址( 位 地址的范围是 00H~7FH) , 因此该条指令错误。
( 7) 错误。原因: ACC 是直接字节地址, 不能用于取反指令。
( 8) 正确。ACC.0 是一个位, 能够应用到取反指令中。
3-25 解答:
ANL A, B ORL A, C
MOV
3-26 解答:
F, C
指令 LJMP addr16 是长转移指令, 指令中提供了 16 位目的地址, 寻址范围是 64KB。
指令 AJMP
addr11 是绝对转移指令, 指令中 11 位目的地址, 其中 a7~a0 在第二字节, a10~a8 则
占据第一字节的高 3 位, 寻址范围是与 PC 当前值( 本指令所在地址+本条指令所占用的字节数 2) 在同 一个 2K 的区域内。
3-27 解答:
( 1) MOV P1, #0CAH
; P1←CAH, P1=CAH=11001010B
MOV A, #56H ; A←56H, A=56H=01010110B
JB P1.2, L1
; 若 P1.2=1, 则转移至 L1
JNB ACC.3, L2 ; 若 ACC.3=0, 则转移至 L2
… L1: … L2: …
执行完本段程序后将转移至 L2, 因为 P1.2=0, ACC.3=0, 因此转至 L2。
( 2) MOV A, #43H ; A←43H, A=43H=01000011B JB ACC.2, L1 ; 若 ACC.2=1, 则转移至 L1
JBC ACC.6, L2 ; 若 ACC.6=1, 则转移至 L2, 同时将 ACC.6 清零
… L1: … L2: …
执行完本段程序后将转移至 L2, 因为 ACC.2=0, ACC.6=1, 因此转至 L2, 而且将 ACC.6 清零。
3-28 解答:
( 1)
( 2) :
MOV A, P1
CPL A
ANL A, #0F0H
SWAP A
MOV P1, A
LOOP: JNB P1.4, L1 ; JNB P1.5, L2 ; JNB P1.6, L3 ; JNB P1.7, L4 ; LJMP LOOP ;
L1: MOV P1, #01H ;
LJMP LOOP ;
L2: MOV P1, #02H ;
LJMP LOOP ;
L3: MOV P1, #03H ;
LJMP LOOP ;
L4: MOV P1, #04H ;
LJMP LOOP
4-1 解答:
ORG 0100H MOV A, 21H
;
第 4 章 汇编语言程序设计
ADD
A, 23H
MOV 25H, A MOV A, 20H ADDC A, 22H MOV 24H, A RET
4-2 解答:
ORG 0200H MOV A, 51H MOV B, #20
MUL AB
MOV 53H, A
MOV 52H, B
MOV A, 50H
MOV B, #3
MUL AB
ADD A, 53H
MOV 53H, A
MOV A, B
ADDC A, 52H
MOV 52H, A
RET
4-3 解答:
开始
X→A 暂存
Y A<20?
N
Y
A<50?
2→B
5→B
N
1→B
A×B→A
A→FUNC 保存结果
返回
题图 4-1 习题 4-3 流程图
ORG 0300H MOV A, DATA
CJNE A, #20, LOP1
LOP1: JC LOP3
CJNE A, #50, LOP2
LOP2: JC LOP4
MOV B, #1
LJMP LOP3: MOV
LJMP
LOP5
B, #2
LOP5
LOP4:
MOV B, #5
LOP5: MUL AB
MOV FUNC, A RET
4-4 解答:
ORG 0400H
MOV A, mun+1
JNB ACC.7, LOOP
CLR C
MOV A, num
SUBB CPL
A, #01H A
MOV MOV SUBB
num, A
A, #num+1
A, #00H
LOOP:
CPL MOV RET
A
num+1, A
4-5 解答:
ORG
0500H
MOV DPTR, #JPTAB MOV A, R2
RL A
JMP @A+DPTR
JPTAB:
AJMP
KEY0
AJMP
KEY1
AJMP
KEY2
……
KEY0:
AJMP
…
KEY15
KEY1:
KEY2:
…
…
…… KEY15: …
4-6 解答:
ORG 0600H
MOV R0, #40H
MOV DPTR, # H
MOV R7, #21H
LOOP: MOV A, @R0
MOVX @DPTR, A
INC R0
INC DPTR
DJNZ RET
ORG
0700H
MOV
DPTR, #DATA
MOV
R7, #10
LOOP:
MOVX
A, @DPTR
4-7 解答:
R7, LOOP
ORL A, #80H MOVX @DPTR, A INC DPTR
DJNZ R7, LOOP RET
4-8 解答:
LOOP:
ORG MOV MOV MOV MOVX MOV
0800H DPTR, #3000H R0, #30H R7, #7
A, @DPTR
@R0, A
INC
DPTR
INC
DPTR
INC DJNZ
R0
R7, LOOP
RET
4-9 解答:
ORG 0900H
MOV DPTR, #1000H
MOV R1, #30H
MOV R7, #31H
LOOP: MOVX MOV
A, @DPTR
@R1, A
CLR A
MOVX @DPTR, A
INC DPTR INC R1
DJNZ R7, LOOP
RET
4-10 解答:
ORG 0A00H
MOV R1, #DAT1
MOV DPTR, #DAT2
MOV LOOP1: MOV
R6, #10H A, @R1
CJNE A, #0DH, LOOP2
LJMP LOOP3
LOOP2: MOVX @DPTR, A
INC R1
INC DPTR
DJNZ R6, LOOP1
LOOP3: RET
4-11 解答:
ORG 0B00H
MOV MOV
DPTR, #3000H R7, #100
MOV one, #00H
MOV two, #00H
MOV three, #00H
LOP1: MOVX A, @DPTR
JZ LOP2
JNB ACC.7, LOP3
INC three
LJMP LOP4
LOP2: INC two
LJMP LOP4
LOP3: INC one
LOP4: INC DPTR
DJNZ R7, LOP1
RET
4-12 解答:
LOP:
ORG MOV MOV MOV ADD
0C00H R0, #50H A, #00H R7, #10
A, @R0
INC DJNZ MOV
R0
R7, LOP
B, #10
DIV MOV
AB
5AH, A
RET
4-13 解答:
ORG
0D00H
MOV R0, #40H MOV A, @R0
MOV R7, #47
LOOP: INC R0
MOV 30H, @R0
CJNE A, 30H, CHK
CHK: JC LOOP1
MOV A, @R0
LOOP1: DJNZ R7, LOOP
MOV MIN, A
RET
4-14 解答:
ORG 0E00H START: MOV R0, #40H
MOV CLR
R7, #19
00H
LOOP: MOV A, @R0
MOV 30H, A
INC R0
MOV 31H, @R0
CLR C
SUBB A, @R0
JNC NEXT
MOV @R0, 30H
DEC R0
MOV @R0, 31H
INC R0
SETB 00H NEXT: DJNZ R7, LOOP
JB 00H, START
MOV MOV
R0, #40H DPTR, # H
MOV R7, #20
LOP1: MOV A, @R0
MOVX @DPTR, A
INC R0
INC DPTR
DJNZ R7, LOP1
RET
4-15 解答:
ORG 0F00H
MOV DPTR, # H
MOV R7, #100
LOOP1: MOVX A, @DPTR
CJNE A, #44H, LOOP2
MOV 30H, DPL
MOV 31H, DPH
MOV DPTR, #20A0H
MOV A, 30H MOVX @DPTR, A INC DPTR
MOV A, 31H MOVX @DPTR, A LJMP LOOP3
LOOP2: INC DPTR
DJNZ R7, LOOP1
LOOP3: RET
4-16 解答:
LOP1:
LOP2:
ORG MOV MOV MOV MOV CJNE JNC ADD
1000H R0, #30H R1, #50H R7, #20
A, @R0
A, #0AH, LOP2
LOP3
A, #30H
LOP3:
LJMP
ADD
LOP4
A, #37H
LOP4:
MOV
@R1, A
INC
R0
INC DJNZ
R1
R7, LOP1
RET
4-17 解答:
ORG
1100H
MOV R0, #40H MOV R1, #60H MOV R7, #N
LOP1: MOV A, @R0
CJNE A, #41H, LOP2
LOP2: JNC LOP3
CLR C
SUBB A, #30H
LJMP LOP4
LOP3: CLR C
SUBB A, #37H
LOP4: MOV @R1, A
INC R0
INC R1
DJNZ R7, LOP1
RET
4-18 解答:
ORG 1200H
MOV DPTR, # H
MOV R0, #30H
MOV R7, #5
LOP1: MOVX A, @DPTR
ANL A, #0FH
ADD A, #30H
MOV INC
@R0, A R0
MOVX A, @DPTR
ANL A, #0F0H
SWAP A
ADD A, #30H
MOV @R0, A
INC R0
INC DPTR
DJNZ R7, LOP1
MOV DPTR, # H
MOV R0, #30H
MOV R7, #10
LOP2: MOV
A, @R0
MOVX @DPTR, A INC R0
INC DPTR
DJNZ R7, LOP2
RET
4-19 解答:
ORG 1300H
MOV DPTR, # H
MOV R0, #30H
MOV R7, #10
LOP1: MOVX A, @DPTR
CL
展开阅读全文