单片机原理与应用技术重点程序高惠芳
合集下载
单片机原理及应用chp04[1]
![单片机原理及应用chp04[1]](https://img.taocdn.com/s3/m/0972b41fb7360b4c2e3f6482.png)
【例4-2】两个无符号双字节数相加.设被加数存放在内部存 储器30H(高位字节),31H(低位字节)单元,加数存放在内 部存储器40H(高位字节),41H(低位字节)单元,和存入30H (高位字节),31H(低位字节)单元. 程序如下: ORG 0000H CLR C MOV R0 ,#31H MOV R1 ,#41H MOV A ,@R0 ADD A ,@R1 MOV @R0 ,A DEC R0 DEC R1 MOV A,@R0 ADDC A,@R1 MOV @R0 , A END
;取数送A ;除数100送B中 ;商(百位数BCD码)在A中,余数在B中 ;百位数送22H ;余数送A做被除数 ;除数10送B中 ;十位数BCD码在A中,个位数在B中 ;十位数BCD码移至高4位 ;并入个位数的BCD码 ;十位,个位BCD码存人21H
分支程序的结构有两种,如图4.2所示.
图4.2 分支程序结构
(4)定义字节指令DB 格式:[标号:] DB 8位二进制数表 DB命令是从指定的地址单元开始,定义若干个8 位内存单元的内容.例如, ORG 1000H TAB; DB 23H,73, "6", "B" TABl: DB 110B 以上伪指令经汇编以后,将对从1000H开始的若干 内存单元赋值: (1000H)=23H (1001H)=49H (1002H)=36H (1003H)=42H (1004H)=06H 其中36H和42H分别是字符6和B的ASCII码,其余 的十进制数(73)和二进制数(110B)也都换算为十 六进制数了.
(5)定义字命令 DW 格式:[标号:] DW 16位二进制数表 例如, ORG 1000H TAB: DW 1234H , 0ABH , 10 汇编后: (1000H)=12H (1001H ) = 34H (1002H ) = 00H ( 1003H ) = ABH (1004H ) =00H (1005H) =0AH DB,DW伪指令都只对程序存储器起作用,不能 用来对数据存储器的内容进行赋值或进行其它初始化 的工作.
单片机原理与应用及C51编程技术 教学课件 高玉芹 第2章 AT89系列单片机的硬件体系结构n

2019/1/23 3
第 2 章 AT89系列单片机的硬件体系结构
ATMEL公司是美国20世纪80年代中期成立并发展起来的 半导体公司。该公司率先将独特的Flash存储技术注入于
单片机产品中。其推出的AT89系列单片机,在世界电子技
术行业中引起了极大的反响,在国内也受到广大用户的欢 迎。 本章以AT89S51为主线叙述AT89XXX系列单片机的内部 结构、引脚功能、工作方式和时序等方面的知识,本章的
看门狗使用户的应用系统更坚固;双数据指针使数据操作更加快
捷方便;速度更高最高可使用33MHZ的晶振; • AT89LS和AT89LV系列
• 可以在更低的电压(2.7V)和更宽的范围下(2.7V~6.0V)工作,
使应用范围更加广泛。
2019/1/23 8
2.1.4 AT89系列单片机的型号编码
AT89 系列单片机的型号编码由三个部分组成,它们是前
6
2019/1/23
2.1.3 AT89系列单片机的主要品种
Atmel公司的AT89系列单片机有多种型号,但以AT89X51和AT89X52为代 表,其主要单片机品种及其特性见表2-1。
2019/1/23
7
2.1.3 AT89系列单片机的主要品种
从表2-1中可以看出,AT89系列单片机主要分为51和52两个 子系列,每个子系列都有四种型号. • 52子系列与51子系列相比不同之处: flash程序内存增至8KB,数据存储器增至256B,有3个定时器 /计数器等; • AT89S和AT89C相比新增加了以下功能: 支持在系统程序设计ISP 使生产及维护更方便;增加了片内
2
本章主要内容
2.1 AT89系列单片机概述 2.2 AT89系列单片机的结构原理
第 2 章 AT89系列单片机的硬件体系结构
ATMEL公司是美国20世纪80年代中期成立并发展起来的 半导体公司。该公司率先将独特的Flash存储技术注入于
单片机产品中。其推出的AT89系列单片机,在世界电子技
术行业中引起了极大的反响,在国内也受到广大用户的欢 迎。 本章以AT89S51为主线叙述AT89XXX系列单片机的内部 结构、引脚功能、工作方式和时序等方面的知识,本章的
看门狗使用户的应用系统更坚固;双数据指针使数据操作更加快
捷方便;速度更高最高可使用33MHZ的晶振; • AT89LS和AT89LV系列
• 可以在更低的电压(2.7V)和更宽的范围下(2.7V~6.0V)工作,
使应用范围更加广泛。
2019/1/23 8
2.1.4 AT89系列单片机的型号编码
AT89 系列单片机的型号编码由三个部分组成,它们是前
6
2019/1/23
2.1.3 AT89系列单片机的主要品种
Atmel公司的AT89系列单片机有多种型号,但以AT89X51和AT89X52为代 表,其主要单片机品种及其特性见表2-1。
2019/1/23
7
2.1.3 AT89系列单片机的主要品种
从表2-1中可以看出,AT89系列单片机主要分为51和52两个 子系列,每个子系列都有四种型号. • 52子系列与51子系列相比不同之处: flash程序内存增至8KB,数据存储器增至256B,有3个定时器 /计数器等; • AT89S和AT89C相比新增加了以下功能: 支持在系统程序设计ISP 使生产及维护更方便;增加了片内
2
本章主要内容
2.1 AT89系列单片机概述 2.2 AT89系列单片机的结构原理
《单片机原理与应用技术》第7章

单片机原理与应用技术( 单片机原理与应用技术(第2版)清华大学出版社
在程序中,函数有 种形态 函数定义,函数调用和函数说明. 种形态: 在程序中,函数有3种形态:函数定义,函数调用和函数说明. 函数定义相当于汇编中的一般子程序.函数调用相当于调用了程序 的CALL语句,要求有函数名和实参数表.函数说明是一个没有函数 体的函数定义.
C51中函数分为两大类:库函数和用户定义函数. 中函数分为两大类:库函数和用户定义函数. 中函数分为两大类 库函数是C51在库文件中已定义的函数,其函数说明在相关的头文 件中.用户函数是用户自己定义,自己调用的一类函数.
单片机原理与应用技术( 单片机原理与应用技术(第2版)清华大学出版社
7.3 C51的数据与运算
单片机原理与应用技术( 单片机原理与应用技术(第2版)清华大学出版社
7.2 C51的程序结构
C51程序的基本单位是函数.函数由函数说明和函数体两部分 组成.一个C源程序至少包含一个主函数,也可以是一个主函数和 若干其他函数.主函数是程序的入口;主函数中的所有语句执行完 毕,则程序结束. C51程序的一般格式如下: C51程序的一般格式如下: 程序的一般格式如下 类型 参数说明; 参数说明 { 数据说明部分; 数据说明部分 执行语句部分; 执行语句部分 } 函数名(参数表 函数名 参数表) 参数表
7.3.1 数据类型
单片机原理与应用技术( 单片机原理与应用技术(第2版)清华大学出版社
7.3.2 数据的存储
1,存储类型与存储空间 ,
单片机原理与应用技术( 单片机原理与应用技术(第2版)清华大学出版社
2,存储模式 ,
单片机原理与应用技术( 单片机原理与应用技术(第2版)清华大学出版社
单片机的C 7.4 单片机的C语言程序设计
绪论-单片机基础知识

(4)二进制数转换成十六进制数
将二进制数转换成十六进制数的方法是,从右至左,每4位二进制
数转换为1位十六进制数,不足部分补0
例如:将二进制数110111110B转换为十六进制数
0001 1011 1110
1B E
所以110111110B=1BEH
高等教育出版社
单片机原理与应用技术
绪论 单片机基础知识
用“1”表示,低电平用“0”表示,其主要特点是:
(1) 二进制数都只由0和1两个数码符号组成,基数是2。
(2) 进位规则是“逢二进一”。一般在数的后面加字母B表 示这个数是二进制数。 对于任意的4位二进制数,可以写成如下形式:
B3B2B1B0=B3×23+ B2×22+ B1×21+ B0×20 例如:1011B= 1×23+ 0×22+ 1×21+ 1×20=11D
绪论 单片机基础知识
单片机的内部结构
1.中央处理器(CPU) CPU是单片机内部的核心部件,是一个8位的中央处理
单元,主要由运算器、控制器和寄存器阵列构成。 (1) 运算器
运算器用来完成算术运算和逻辑运算功能,它是 AT89S51内部处理各种信息的主要部件。 (2) 控制器
控制器是单片机的指挥控制部件,主要任务是识别指令, 并根据指令的要求控制单片机各功能部件,从而保证单片 机各部件能高效而协调地工作。
H3H2H1H0=H3×23+ H2×22+H1×21+ H0×20 例如:2FCBH= 2×163+ 15×162+ 12×161+ 11×160=12235D
高等教育出版社
单片机原理与应用技术
绪论 单片机基础知识
杭电单片机实验报告一

uVision4引入了灵活的窗口管理系统,能够拖放到视图内的任何地方,包括支持多显示器窗口。
uVision4在μVision3 IDE的基础上,增加了更多大众化的功能:
·多显示器和灵活的窗口管理系统
·系统浏览器窗口的显示设备外设寄存器信息
·调试还原视图创建并保存多个调试窗口布局
·多项目工作区简化与众多的项目
JMP START
ORG 0800H
START:MOV A,#01H;即将0000 0001存入A,后面会将最右边1循环左移。
SJMP DELAY;进入延时段起点
LOOP:
RL A;从此处开始跑马灯模块。先将A循环左移
MOV P1,A;将A的值赋给端口P1的8位
SJMP DELAY;从56ms的延迟程序段再跑一遍
⑥、单击点击下图所示圆圈圈起的部分建立一个文件。也可以点击菜单“File”下面的“NEW”来新建一个文件。
⑦、之后输入程序的代码后,单击File—Save as,根据代码语言的格类型,可保存为后缀为.asm(汇编语言)和.c(C语言)的文件。
⑧、单击“Target1”前面的“+”号,并用鼠标右键点击“SourceGroup1”,界面如图10所示。在用鼠标左键点击“AddFiles to Group Source Group1...”即可把刚刚的代码文件添加到工程。最后点击左上角的编译按钮即可完成编译。之后即可进行程序的调试了。
2.实验内容
使用汇编语言完成课本P95的(2)、(5)、(8)三道题以及一个跑马灯程序。
2.1 P95-(2)
设内部RAM 5AH单元中有一个变量X,请编写计算下述函数式的程序,结果存入5BH。
设计思路:显然本题要使用分支语句,不妨使用JZ, JNB等,并通过X-10,X-15综合判断X处于哪个区间。
uVision4在μVision3 IDE的基础上,增加了更多大众化的功能:
·多显示器和灵活的窗口管理系统
·系统浏览器窗口的显示设备外设寄存器信息
·调试还原视图创建并保存多个调试窗口布局
·多项目工作区简化与众多的项目
JMP START
ORG 0800H
START:MOV A,#01H;即将0000 0001存入A,后面会将最右边1循环左移。
SJMP DELAY;进入延时段起点
LOOP:
RL A;从此处开始跑马灯模块。先将A循环左移
MOV P1,A;将A的值赋给端口P1的8位
SJMP DELAY;从56ms的延迟程序段再跑一遍
⑥、单击点击下图所示圆圈圈起的部分建立一个文件。也可以点击菜单“File”下面的“NEW”来新建一个文件。
⑦、之后输入程序的代码后,单击File—Save as,根据代码语言的格类型,可保存为后缀为.asm(汇编语言)和.c(C语言)的文件。
⑧、单击“Target1”前面的“+”号,并用鼠标右键点击“SourceGroup1”,界面如图10所示。在用鼠标左键点击“AddFiles to Group Source Group1...”即可把刚刚的代码文件添加到工程。最后点击左上角的编译按钮即可完成编译。之后即可进行程序的调试了。
2.实验内容
使用汇编语言完成课本P95的(2)、(5)、(8)三道题以及一个跑马灯程序。
2.1 P95-(2)
设内部RAM 5AH单元中有一个变量X,请编写计算下述函数式的程序,结果存入5BH。
设计思路:显然本题要使用分支语句,不妨使用JZ, JNB等,并通过X-10,X-15综合判断X处于哪个区间。
单片机原理与应用技术(第2版)电子课件第4章教材

◆ 方式1
方式1与方式0基本相同,唯一区别在于:方式1计数寄存器的位数为16 位,由THx和TLx 寄存器各提供 8位计数初值,最大计数值为 216=65536。 定时时间: T =(65536-M0)×12/fosc
◆ 方式2
方式2是8位的可自动重装载计数初值的定时/计数方式,最大计数值为 28=256。定时时间: T =(256-M0)×12/fosc
1、中断处理的过程 中断处理过程分为4 个阶段,即中断请求、 中断响应、中断服务和 中断返回。MCS-51系 列单片机的中断处理流 程如图所示。
单片机原理与应用技术(第2版)清华大学出版社
2、中断申请的撤除 1) 定时器中断请求的撤除
对于定时器 T0 或 T1 溢出中断, CPU 在响应中断后即由硬件
◆ 方式3
方式3只适合于定时/计数器0(T0)。当T0工作在方式3时,TH0和TL0成 为两个独立的计数器。这时 TL0 可作定时 / 计数器,占用 T0 在 TCON 和 TMOD寄存器中的控制位和标志位;而TH0只能用作定时器,占用T1的 资源TR1和TF1。在这种情况下,T1仍可用于方式0、1、2,但不能使用 中断方式。
单片机原理与应用技术(第2版)清华大学出版社
单片机原理与应用技术(第2版)清华大学出版社
小 结
• 中断是指当机器正在执行程序的过程中,一旦遇到某些 异常情况或特殊请求时,暂停正在执行的程序,转入必 要的处理(中断服务子程序),处理完毕后,再返回到原 来被停止程序的间断处(断点)继续执行。引起中断的事 情称为中断源。中断请求的优先级由用户编程和内部优 先级共同确定。 • 中断编程包括中断入口地址设置、中断源优先级设置、 中断开放或关闭、中断服务子程序等。本章通过实例分 别介绍了采用汇编语言程序和C语言程序编写中断程序。
最新单片机原理与应用习题参考答案(高惠芳版)

第(6)题:RAM内包含哪些可位寻址单元? 片内RAM中,20H~2FH是位寻址区,共16个单元,每个单元的每一位 都有地址,位地址范围是00H~7FH,共128位可寻址位。
第(7)题:堆栈?SP的作用?为何要对SP重新赋值? 1)堆栈是一种数据结构,是只允许数据在其一端进出的一段存储空 间;为程序调用和中断操作而设立,用作现场保护和断点保护。 2)堆栈指针SP用来存放堆栈的栈顶地址。 3)复位后,SP的初值为07H,由于片内RAM的07H单元的后继区域分 别为工作寄存器区和位寻址区,通常这两个区域在程序中有其它重要用 途,所以用户在设计程序时,一般都将堆栈设在内部RAM的30H~7FH 地址空间的高端区域,而不设在工作寄存器区和位寻址区。
①立即寻址MOV A,#00H ②直接寻址MOV A,50H ③寄存器间接寻址MOV A,@R0 ④寄存器寻址MOV A,R5 ⑤变址寻址MOV A,@A+DPTR ⑥相对寻址SJMP 70H ⑦直接寻址或寄存器寻址CLR A 11、①ANL A,#0FCH累加器A的低2位清零,其余位不变; ②ORL A,#0C0H累加器A的高2位置1,其余位不变; ③XRL A,#0F0H累加器A的高4位取反,其余位不变; ④XRL A,#55H累加器A的第0、2、4、6位取反,其余位不变;
单片机,内部RAM分为两部分,其中地址范围00H ~ 7FH(共128B单 元)为内部静态RAM的地址空间,80H~FFH为特殊功能寄存器的地址 空间,21个特殊功能寄存器离散地分布在这个区域;对于8052系列单片 机还有地址范围为80H~FFH的高128B的静态RAM。 3)64KB的外部数据存储器地址空间:地址范围为0000H~FFFFH,包括 扩展I/O端口地址空间。
MCS-51单片机有7种寻址方式。 (1)立即寻址。操作数直接在指令中给出,它可以是二进制、十进 制、十六进制数,也可以是带单引号的字符,通常把这种操作数称为立
第(7)题:堆栈?SP的作用?为何要对SP重新赋值? 1)堆栈是一种数据结构,是只允许数据在其一端进出的一段存储空 间;为程序调用和中断操作而设立,用作现场保护和断点保护。 2)堆栈指针SP用来存放堆栈的栈顶地址。 3)复位后,SP的初值为07H,由于片内RAM的07H单元的后继区域分 别为工作寄存器区和位寻址区,通常这两个区域在程序中有其它重要用 途,所以用户在设计程序时,一般都将堆栈设在内部RAM的30H~7FH 地址空间的高端区域,而不设在工作寄存器区和位寻址区。
①立即寻址MOV A,#00H ②直接寻址MOV A,50H ③寄存器间接寻址MOV A,@R0 ④寄存器寻址MOV A,R5 ⑤变址寻址MOV A,@A+DPTR ⑥相对寻址SJMP 70H ⑦直接寻址或寄存器寻址CLR A 11、①ANL A,#0FCH累加器A的低2位清零,其余位不变; ②ORL A,#0C0H累加器A的高2位置1,其余位不变; ③XRL A,#0F0H累加器A的高4位取反,其余位不变; ④XRL A,#55H累加器A的第0、2、4、6位取反,其余位不变;
单片机,内部RAM分为两部分,其中地址范围00H ~ 7FH(共128B单 元)为内部静态RAM的地址空间,80H~FFH为特殊功能寄存器的地址 空间,21个特殊功能寄存器离散地分布在这个区域;对于8052系列单片 机还有地址范围为80H~FFH的高128B的静态RAM。 3)64KB的外部数据存储器地址空间:地址范围为0000H~FFFFH,包括 扩展I/O端口地址空间。
MCS-51单片机有7种寻址方式。 (1)立即寻址。操作数直接在指令中给出,它可以是二进制、十进 制、十六进制数,也可以是带单引号的字符,通常把这种操作数称为立
单片机原理与应用技术重点程序高惠芳

• SWAP A
; 得到高位BCD码
• ADD A,#30H ; 转换为高位ASCII码
• MOV 22H,A
; 保存高位ASCII码
• SJMP $
• END
10
补充举例:三字节无符号数相加,其中被 加数在内部RAM的50H、51H和52H单元中; 加数在内部RAM的53H、54H和55H单元中; 要求把相加之和存放在50H、51H和52H单 元中进位存放在位寻址区的20H单元最低 位中(即20H.0)。
1
[例3-2]设内部RAM中30H单元的内容为40H ,40H单元的内 容为10H,P1口作输入口,其输入数据为0CAH,程序及执行 后的结果如下:
MOV R0,#30H ;单元地址30H送R0中
MOV A ,@R0 ;R0 间址,将30H单元内容送A
MOV R1 ,A
;A送R1
MOV B ,@R1 ;R1间址,将40H单元内容送B
13
• 例4.3.3 求符号函数的值。已知片内RAM的40H单元 内有一自变量X,编制程序按如下条件求函数Y的值, 并将其存入片内RAM的41H单元中。见P65
1 X>0
开始
Y=
0 X=0YX=来自?-1 X<0NY X>0?
N
Y0
Y1
Y -1
14
结束
• ORG 1000H
• START: MOV A, 40H ; 将X送入A中
•
;到LOOP处循环,否则,循环结束
•
SJMP $
•
END
18
• 例4.3.6 编制程序将片 内RAM的30H~4FH 单元中的内容传送至 片外RAM的2000H开 始的单元中。(见 P70)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
; 取低4位BCD码a0
• ADD A, R0
; 求和10×a1+ a0
• MOV 40H, A
; 结果送入40H保存
• SJMP $
; 程序执行完,“原地踏步”
• END
• 例4.3.2 将内部RAM中20H单元的压缩 BCD码拆开,转换成相应的ASC码,存 入21H、22H,高位存22H.(P64)
•
ORG 0000H
•
AJMP main
•
ORG 0100H
• MAIN: MOV 20H,#12H
•
MOV 21H,#34H
•
MOV 30H,#23H
•
MOV 31H,#45H
•
MOV A,20H
•
ADD A,30H
•
MOV 20H,A
•
MOV A,21H
•
ADDC A,31H
•
MOV 21H,A
① MOV 02H ,01H
; 直接寻址 3字节 2周期
② MOV A ,01H
;直接寻址 +寄存器寻址
MOV 02H , A
;4字节 2周期
③ MOV A , R1
; 寄存器寻址 2字节 2周期
MOV R2 , A
④ MOV R0 ,#01H
; 4字节 3周期
MOV 02H ,@R0
; 间接寻址
⑤ PUSH 01H
; 栈操作 4字节 4周期
POP 02H
第三种方法占存储空间少,执行周期短。
补充:设20H,21H单元存放一个16位2进制数X1(高8位存 于21H单元) ;30H,31H单元存放一个16位2进制数 X2,(高8位存于31H单元);求X1+X2,结果存放于20H,21H。 (两数之和不超过16位)
[例3-2]设内部RAM中30H单元的内容为40H ,40H单元的内 容为10H,P1口作输入口,其输入数据为0CAH,程序及执行 后的结果如下:
MOV R0,#30H ;单元地址30H送R0中
MOV A ,@R0 ;R0 间址,将30H单元内容送A
MOV R1 ,A
;A送R1
MOV B ,@R1 ;R1间址,将40H单元内容送B
• ANL A, #0F0H
; 取高4位BCD码a1
• SWAP A
; 高4位与低4位换位
• MOV B, #0AH
; 将二进制数10送入B
• MUL AB
; 将10×a1送入A中
• MOV R0, A
; 结果送入R0中保存
• MOV A, 30H
; 再取两位BCD压缩码a1a0送A
• ANL A, #0FH
分析: 除最低字节可以使用ADD指令之外, 其它字节相加时要把低字节的进位考虑进去, 因此使用ADDC指令.
MOV 00H,C #20H
分支程序是通过转移指令实现的
一、单分支程序 使用条件转移指令实现,即根据条件对程序
的执行进行判断,满足条件则进行程序转移,否 则程序顺利执行。 可实现单分支程序转移的指令有:
传送类指令举例:
[例3-1]已知(R0)=30H,问执行如下程序,A、R4、
30H和31H单元的内容是什么。
MOV A , #10H
(A)=10H
MOV R4 ,#36H
(R4)=36H
MOV @R0 ,#7AH
(30H)=7AH
MOV 31H ,#01H
(31H)=01H
解:8051执行上述指令后的结果为:
开始
Y=0 X=0源自YX=0?-1 X<0
NY X>0?
N
Y0
Y1
Y -1
结束
• ORG 1000H
• START: MOV A, 40H ; 将X送入A中
•
JZ COMP
; 若A为0,转至COMP处
•
JNB ACC.7, POST ; 若A第7位不为1(X为正数),
;则程序转到 POST处,
;否则(X为负数)程序往下执行
JZ、JNZ、CJNE、DJNZ 等 还有以位状态作为条件进行程序分支的指令:
JC、JNC、JB、JNB和JBC (1等)单分支结构举例
• 例4.3.3 求符号函数的值。已知片内RAM的40H单元 内有一自变量X,编制程序按如下条件求函数Y的值, 并将其存入片内RAM的41H单元中。见P65
1 X>0
MOV @R1,P 1 ;将P1内容送40H单元
MOV P2 , P1 ;将P1内容送P2
执行结果:(R0)=30H , (R1)=40H , (A)=40H , (B) =10H ,(P1)=0CAH ,(40H)=0CAH ,
(P2)=0CAH
[例3-5] 已知外部RAM 2020H单元中有一个数X, 内部
•
SJMP $
•
END
• #1234H+#2345H = #3579H
答案
例4.3.1 将片内RAM 30H单元中的两位
压缩BCD码转换成二进制数送到片内
RAM 40H单元中.(P63)
开始
(A )高位 BCD 码
将高位 BCD 码乘 10
与低位 BCD 码相加
存结果
结束
• ORG 1000H
• START:MOV A, 30H ; 取两位BCD压缩码a1a0送A
• SWAP A
; 得到高位BCD码
• ADD A,#30H ; 转换为高位ASCII码
• MOV 22H,A
; 保存高位ASCII码
• SJMP $
• END
补充举例:三字节无符号数相加,其中被 加数在内部RAM的50H、51H和52H单元 中;加数在内部RAM的53H、54H和55H 单元中;要求把相加之和存放在50H、51H 和52H单元中进位存放在位寻址区的20H单 元最低位中(即20H.0)。
•
MOV A, #0FFH ; 将1(补码)送入A中
•
SJMP COMP
; 程序转到COMP处
• POST: MOV A, #01H
; 将+1送入A中
RAM 20H单元一个数Y,试编出可以使它们互相交换的程
序。
指向外部
解: MOV P2 , #20H MOV R1 , #20H
RAM 2020H单元
MOVX A , @R1 XCH A , @R1 MOVX @R1 ,A
指向内部
RAM 20H单元
SJMP $
END
[例3-7] 把01H单元内容送02H单元,有几种不同的实现方法。
• ORG 1000H
• START:MOV A,20H ; 取压缩BCD码
• ANL A,#0FH ; 取低位BCD码
• ADD A,#30H ; 转换为低位ASCII码
• MOV 21H,A
; 保存低位ASCII码
• MOV A,20H
; 重新取压缩BCD码
• ANL A,#0F0H ; 分离高位BCD码