MCS 51单片机汇编语言

合集下载

第三章MCS51单片机的指令系统和汇编语言程序示例(第5范文

第三章MCS51单片机的指令系统和汇编语言程序示例(第5范文

第三章MCS51单片机的指令系统和汇编语言程序示例(第5、6、7节)1.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?(1)MOV A,#19HADD A,#66H(2)MOV A,#5AHADD A,#6BH2.已知:A=85H,R0=30H,(30H)=11H, (31H)=0FFH,C=1,试计算单片机执行下列指令后累加器A和C中的值各是多少?(1)ADDC A,R0, (2)ADDC A,31H(3) ADDC A,@R0, (4) ADDC A,#85H3.已知M1和M2中分别存放两个16位无符号数的低8位,M1+1和M2+1中分别存放两个16位无符号数的高8位,计算两数之和(低8位存放在M1,高8位存放在M1+1,设两数之和不超过16位)。

4.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?CLR CMOV A,#52HSUBB A,#0B4H5.已知:A=0DFH,R1=40H,R7=19H,(30H)=00H,(40H)=0FFH,试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?(1) DEC A (2) DEC R7 (3) DEC 30H (4) DEC @R16.试写出能完成85+59的BCD加法程序,并对工作过程进行分析。

7.已知:两个8位无符号乘数分别放在30H和31H单元中,编程实现他们乘积的低8位存放在32H,高8位存放在33H。

8.已知:R0=30H,(30H)=0AAH,试分析执行下列指令后累加器A和30H单元的内容是什么?(1)MOV A, #0FFH ANL A, R0(2)MOV A, #0FH ANL A, 30H(3)MOV A, #0F0H ANL A, @R0(4)MOV A, #80H ANL 30H, A9.设:A=0AAH和P1=0FFH,试编程把累加器A的低四位送入P1口的低四位,P1口的高四位保持不变。

MCS-51单片机指令系统与汇编语言程序设计

MCS-51单片机指令系统与汇编语言程序设计
JBC bit, rel ; 若(bit)=1,则转移(PC)← (PC)+3+rel, 且(bit )←0, 否则顺序执行
docin/sundae_meng
P73 例2.58
ORG 0100H
MOV DPTR,#DATA LOOP2: MOV R1,A
MOV R0,#30H
INC R1
MOV R1,#40H LOOP: MOVX A,DPTR
START:
ORG 1000H MOV DPTR,#TABLE MOV A,20H ANL A,#0FH MOVC A,@A+DPTR MOV 21H,A
docin/sundae_meng
TABLE:
MOV A,20H ANL A,#0F0H
SWAP A MOVC A,@A+DPTR MOV 22H, A SJMP $ DB 30H,31H,32H,33H,34H
docin/sundae_meng
ORG 1000H
START: MOV A, 40H
; 将X送入A中
JZ COMP
; 若A为0,转至COMP处
JNB ACC.7, POST ; 若A第7位不为1(X为正数),则程序转到
POST处,否则(X为负数)程序往下执行
MOV A, #0FFH ; 将1(补码)送入A中
docin/sundae_meng
2.4.1 汇编语言程序设计的步骤
汇编语言程序设计:根据任务要求,采用汇编语言编制程序的过程称为汇编 语言程序设计。 汇编语言程序设计的步骤: (1)拟订设计任务书 (2)建立数学模型 (3)确定算法 (4)分配内存单元,编制程序流程图 (5)编制源程序
进一步合理分配存储器单元和了解I/O接口地址;按功能设计程序,明确 各程序之间的相互关系;用注释行说明程序,便于阅读和修改调试和修改。 (6)上机调试 (7)程序优化

单片机c51汇编语言51单片机汇编语言

单片机c51汇编语言51单片机汇编语言

单片机c51汇编语言51单片机汇编语言单片机C51汇编语言单片机(C51)是指一种集成电路上只包含一个集中式控制器的微处理器,具有完整的CPU指令集、RAM、ROM、I/O接口等功能。

汇编语言是一种低级语言,是用于编写单片机指令的一种语言。

汇编语言能够直接操作单片机的寄存器和输入/输出端口,因此在嵌入式系统的开发中非常重要。

本文将介绍单片机C51的汇编语言编程。

一、了解单片机C51单片机C51是目前应用最广泛的一种单片机系列,广泛用于各种电子设备和嵌入式系统的开发。

C51指的是Intel公司推出的一种基于MCS-51架构的单片机。

该系列单片机具有较高的性能和低功耗的特点,可用于各种控制和通信应用。

二、汇编语言的基本概念汇编语言是一种低级语言,与机器语言紧密相关。

它使用助记符来代替机器指令的二进制表示,使程序的编写更加易读。

在单片机C51汇编语言中,每一条汇编指令都对应着特定的机器指令,可以直接在单片机上执行。

三、汇编语言的基本指令在单片机C51汇编语言中,有一些基本的指令用于控制程序的执行和操作寄存器。

以下是一些常用的指令:1. MOV指令:用于将数据从一个寄存器或内存单元复制到另一个寄存器或内存单元。

2. ADD指令:用于将两个操作数相加,并将结果存储到目的寄存器中。

3. SUB指令:用于将第一个操作数减去第二个操作数,并将结果存储到目的寄存器中。

4. JMP指令:用于无条件跳转到指定的地址。

5. JZ指令:用于在条件为零时跳转到指定的地址。

6. DJNZ指令:用于将指定寄存器的值减一,并根据结果进行跳转。

四、编写单片机C51汇编程序的步骤编写单片机C51汇编程序需要按照以下步骤进行:1. 确定程序的功能和目标。

2. 分析程序的控制流程和数据流程。

3. 设计算法和数据结构。

4. 编写汇编指令,实现程序的功能。

5. 调试程序,并进行测试。

六、实例演示以下是一个简单的单片机C51汇编程序的示例,用于实现两个数的相加,并将结果输出到LED灯上:org 0H ; 程序的起始地址为0mov a, 05H ; 将05H赋值给累加器mov b, 07H ; 将07H赋值给B寄存器add a, b ; 将A寄存器和B寄存器的值相加mov P1, a ; 将相加结果输出到P1口end ; 程序结束在这个例子中,首先将05H赋值给累加器A,然后将07H赋值给B寄存器,接着使用ADD指令将A和B的值相加,将结果存储到累加器A中,最后将累加器A的值输出到P1口。

第三章MCS51系列单片机指令系统及汇编语言程序设计

第三章MCS51系列单片机指令系统及汇编语言程序设计
AJMP addr11 绝对转移指令为2K地址范围内的转移指令,对转移目的地址的要求与 ACALL指令中对子程序入口地址的要求相同。 【3】短转移指令
SJMP rel ;PC+ 2 + rel→PC 短转移指令为一页地址范围内的相对转移指令。因为rel为1字节补码 偏移量,且SJMP rel指令为2字节指令,所以转移范围为-126D~+ 129D 【4】间接转移指令
表3.4 程序存储器空间中的32个基本2K地址范围
0000H~07FFH 0800H~0FFFH 1000H~17FFH 1800H~1FFFH 2000H~27FFH 2800H~2FFFH 3000H~37FFH 3800H~3FFFH 4000H~47FFH 4800H~4FFFH 5000H~57FFH
3. 寄存器寻址
以通用寄存器的内容为操作数的寻址方式。通用寄存 器包括:A,B,DPTR,R0~R7。其中,R0~R7必须在 工作寄存器组之中。
例如:INC R0 ;(R0)+1→R0
需要注意的是,A和B既是通用寄存器,又是具有直 接地址的特殊功能寄存器。
4. 寄存器间接寻址
以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够 用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP。其中,R0,R1必 须在工作寄存器组之中,SP仅用于堆栈操作。
MCS-51单片机共有111条指令,按功能分类, MCS-51指令系统可分为5大类:
➢ 数据传送类指令(共29条) ➢ 算术操作类指令(共24条) ➢ 逻辑操作类指令(共24条) ➢ 控制转移类指令(共17条) ➢ 布尔变量操作类指令(共17条)
1.数据传送类指令(共29条)
以累加器A为目的操作数类指令(4条)

大学课件MCS51单片机指令系统与汇编语言程序设计

大学课件MCS51单片机指令系统与汇编语言程序设计

ANL C, P ; (C)← (C)∧(P)
其中:P是PSW的第0位,C是PSW的第7位。
(4)字节符号地址(字节名称)加位序号的形式。对于部分特 殊功能寄存器(如状态标志寄存器PSW),还可以用其字节名 称加位序号形式来访问某一位。AC 如:
定义:操作数存放在MCS-51内部的某个工作寄存器Rn (R0~R7)或部分专用寄存器中,这种寻址方式称为 寄存器寻址。
特点:由指令指出某一个寄存器的内容作为操作数。 存放操作数的寄存器在指令代码中不占据单独的一个 字节,而是嵌入(隐含)到操作码字节中。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用 寄存器( A, B, DPTR, Cy )。
伪指令只出现在汇编前的源程序中,仅提供汇编用的某些控制 信息,不产生可执行的目标代码,是CPU不能执行的指令。
(1)定位伪指令ORG
格式:ORG n
其中:n通常为绝对地址,可以是十六进制数、标号或表达式。
功能:规定编译后的机器代码存放的起始位置。在一个汇编 语言源程序中允许存在多条定位伪指令,但每一个n值都应和前
2.2.2 直接寻址
定义:将操作数的地址直接存放在指令中,这种寻址方式称为 直接寻址。 特点:指令中含有操作数的地址。该地址指出了参与操作的数 据所在的字节单元地址或位地址。计算机执行它们时便可根据 直接地址找到所需要的操作数。
寻址范围:ROM、片内RAM区、SFR和位地址空间。P42
2.2.3 寄存器寻址
定义:指令中给出的操作数是一个可单独寻址的位地址,这种寻址 方式称为位寻址方式。
特点:位寻址是直接寻址方式的一种,其特点是对8位二进制数中 的某一位的地址进行操作。
寻址范围:片内RAM低128B中位寻址区、部分SFR(其中有83位 可以位寻址)。

51单片机汇编语言4-MCS51硬件结构-2

51单片机汇编语言4-MCS51硬件结构-2

第1章
单片机硬件系统
(2) PC的内容自动加1变为0001H,指向下一个指令字节。 (3) 地址寄存器中的内容0000H通过地址总线送到存储器,
经存储器中的地址译码选中0000H单元。 (4) CPU通过控制总线发出读命令。 (5) 被选中单元的内容74H送内部数据总线,该内容通过 内部数据总线送到单片机内部的指令寄存器。至此,取指令 过程结束,进入执行指令过程。
第1章
单片机硬件系统
MCS-51单片机片内有256B的数据存储器,它分为低
128B的片内RAM区和高128B的特殊功能寄存器区。低128B 的片内RAM又可分为工作寄存器区(00H~1FH)、位寻址区 (20H~2FH)和数据缓冲器(30H~7FH)。累加器A、程序状态 寄存器PSW、堆栈指针SP、数据存储器地址指针DPTR、程 序存储器地址指针PC,均有着特殊的用途和功能。 MCS-51单片机有4个8位的并行I/O口,它们在结构和特 性上基本相同。当需要片外扩展RAM和ROM时,P0口分时 传送低8位地址和8位数据,P2口传送高8位地址,P3口常用 于第二功能,通常情况下只有P1口用作一般的输入/输出引脚。
第1章
单片机硬件系统
图1.15 MCS-51单片机的取指/执行时序 (a) 单片机的机器周期;(b) 单字节单周期指令,如INC A;(c) 双字节单 周期指令,如ADD A,data;(d) 单字节双周期指令,如INC DPTR
第1章
单片机硬件系统
1.5 单片机的工作过程
单片机的工作过程实质上是执行用户编制程序的过程。 一般程序的机器码都已固化到存储器中,例如实训1中的步骤 (3),因此开机复位后,就可以执行指令。执行指令又是取指 令和执行指令的周而复始的过程。 例如指令MOV A,#56H表示把立即数56H这个值送入A 累加器。该指令对应的机器码是74H、56H,假设它们已存在 0000H开始的单元中。下面我们来说明单片机的工作过程。 接通电源开机后,PC =0000H,取指令过程如下: (1) PC中的0000H 送到片内的地址寄存器。

第4章 MCS-51单片机汇编语言程序设计

第4章 MCS-51单片机汇编语言程序设计
开始
程序清单:
送转移地址序号
A,R3 ;取序号 A ;序号乘2 DPTR, #JTAB ;32个子程序 首地址送DPTR JMP @A+DPTR ;根据序号转移 JTAB: AJMP ROUT00 ;32个子程序首地址 AJMP ROUT01 … MP: MOV RL MOV AJMP ROUT31
第 四 章 MCS-51 单 片 机 汇 编 语 言 程 序 设 计
【例4-1】
双字节二进制数求补。
程序说明:对R3(高8位)、R2(低8位)中的二进制定 点数取反加1即可得到其补码。
开始
程序清单:
BINPL:MOV A,R2 CPL A ADD A,#01H MOV R2,A MOV A,R3 CPL A ADDC A,#00H MOV R3,A RET ;低位字节取反 ;加1 ;低位字节补码送R2 ;高位字节取反 ;加进位 ;高位字节补码送R3
散转生成正确偏移号
置换指令地址表首址
转入R3指示的程序
AJMP
……
AJMP
第 四 章 MCS-51 单 片 机 汇 编 语 言 程 序 设 计
3.循环程序
包括:循环初始化、循环处理、循环控制
开始 置初值 循环体 循环结束? Y 循环修改 N 循环体 循环结束? N Y 结束 循环修改 结束 开始 置初值
;调用查表子程序 ; 暂存R1中 ;调查表子程序 ;平方和存A中 ;等待
取第一个数→A 调查表子程序 结果存入R1 取下一个数→A 调查表子程序 两数平方相加 存结果
子程序清单:
SQR: INC A ;加RET占的一个字节 MOVC A,@A+PC ;查平方表 RET TAB: DB 0,1,4,9,16 DB 25,36,49,64,81 END

MCS-51汇编语言程序设计

MCS-51汇编语言程序设计

01:31
单片机原理与接口技术(第2版).李晓林.电子工业出版社
返回目录
2
本章目录
4.2.1 顺序结构程序 4.2.2 分支结构程序 4.2.3 循环结构程序 4.2.4 查表程序 4.2.5 子程序 4.3 汇编语言程序设计实例 习题与思考题
4.1 程序设计概述 4.1.1 程序设计的步骤 4.1.2 程序设计的方法 4.1.3 汇编语言的规范 4.1.4 汇编语言程序编辑和 汇编 4.2 结构化程序设计方法
01:31
单片机原理与接口技术(第2版).李晓林.电子工业出版社
返回目录
15
4.1.3 汇编语言的规范
(5)定义字伪指令 )定义字伪指令DW
[标号:] 标号: DW 16位二进制数表 16位二进制数表
---伪指令 伪指令DW 伪指令
功能: DW 指令是在程序存储器 ( ROM ) 中 , 从指定的 指令是在程序存储器( 功能 : DW指令是在程序存储器 ROM) 地址单元开始,定义若干个16位数据 一个16位数 位数据。 地址单元开始,定义若干个16位数据。一个16位数 要占两个存储单元,其中高8位存入低地址单元, 要占两个存储单元, 其中高 8位存入低地址单元, 位存入高地址单元。 低8位存入高地址单元。 例如: 例如: ORG 1100H 1100H TAB : DW 1234H, 0ABH 10 1234H, 以上伪指令经汇编以后, 将对从1100H 以上伪指令经汇编以后 , 将对从 1100H 开始的若 干内存单元赋值。 干内存单元赋值。
01:31
单片机原理与接口技术(第2版).李晓林.电子工业出版社
返回目录
16
4.1.3 汇编语言的规范
例如:ORG 1100H 例如: TAB :DW 1234H, 0ABH 10 (1100H)=12H (1101H)=34H (1102H)=00H (1103H)=ABH (1104H)=00H (1105H)=0AH
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

000EH 000FH
000EH 000FH 000EH 000FH
000EH 000FH
000EH 000FH
000EH 000FH
ORG 0000H MOV P2, #0H ;送地址高八位至P2口 MOV R0, #0EH ;R0= 0EH MOV R1, #0FH ;R1=OFH MOVX A, @R0 ;A=(000EH) MOV 20H, A ;(20H)=(000EH) MOVX A, @R1 ;A=(000FH) XCH A, 20H ; A=(000EH),(20H)=(000FH) MOVX @R1, A MOV A, 20H MOVX @R0, A ; 交换后的数送各单元 SJMP $ END
ORG 3000H TAB: DB 23H ,100,‘A'
2.字节定义 标号: DB(字节常数,或字符或表达式)
功能:指示在程序存储器中以标号 地址 数据
为起始地址的单元里存放的数为
LN
20
字节数据(八位二进制数)。
LN+1 43
例如 LN:DB 32,' C',25H,-1 LN+2 25
;LN~LN+2 地址单元依次存放
6. 位定义 标号 BIT [位地址] 作用: 同EQU指令,不过定义的是位操作地址。 例如 AIC BIT P1.1 。
7.汇编结束 END 作用: 指示源程序段结束。
END指令放在程序的最后。
A51汇编程序还有一些其它的伪指令,列在教材表 3-1 中,以备查阅。
4-2 汇编语言程序设计步骤
一.确定方案和计算方法 二.了解应用系统的硬件配置、性能指标
支持写入单片机或仿真调试的目标程序有两种文 件格式:
·BIN文件和 ·HEX文件,
·BIN 文件是由编译器生成的二进制文件,是程 序的机器码,
·HEX文件是由 INTER公司定义的一种格式,这 种格式包括地址、数据和校验码,并用 ASCII 码来存储,可供显示和打印。 ·HEX 文件需通 过符号转换程序 OHS51进行转换
两种语言的操作过程见图 3-1。
编译器C51
C语言程序
汇编语言 源程序 汇编器A51


地 址 目
绝对地址 目标程序

.BIN


·HEX
连接/定位器 L51
符号转换程序 OHS51
图 3-1 两种语言源程序转换成目标程序
目前很多公司将编辑器、汇编器、编译器、连 接/定位器、符号转换程序做成集成软件包,用户进 入该集成环境,编辑好程序后,只需点击相应菜单 就可以完成上述的各步,如 WAVE 、
三.建立系统数学模型,确定控制算法和操作步骤
四.合理分配存储器单元和了解 I/O接口地址
五. 编制源程序 1.按功能设计程序,明确各程序之
间的相互关系
2. 用流程图表示程序结构和功能
3.程序中用注释说明指令在程序中 的作用,方便阅读、调试和修改
开始
?
Y
N
1
常用程序结构 顺序程序、分支程序、
循环程序、子程序 顺序程序设计
第三章 MCS-51单片机汇编语言 程序设计
第三章 MCS-51单片机汇编语言 程序设计
3.1 概述
MCS-51单片机的编程语言可以是汇编语言 也可以是高级语言(如 C语言),高级语言编 程快捷,但程序长,占用存储空间大,执行慢; 汇编语言产生的目标程序简短,占用存储空间 小,执行快,能充分发挥计算机的硬件功能。 无论是高级语言还是汇编语言,源程序都要转 换成目标程序(机器语言)单片机才能执行。
1.起始指令 ORG nn
功能:定义程序或数据块的起始地址。指示此语句后 面的程序或数据块以 nn为起始地址,连续存放在程序 存储器中。
指令地址 机器码
源程序
ORG 2000H
2000H 2002H
78 30 E6
MAIN: MOV R0 ,#30H
MOV A ,@R0 …
3000H 23 3001H 64 3002H 41
用计算机中的汇编程序对用户源程序进行汇编。 用机器汇编要提供给汇编一些信息,遵循汇编程序 的一些约定。这些由伪指令指定。
汇编的主要任务:
1)确定程序中每条汇编语言指令的指令机器码 2)确定每条指令在存储器中的存放地址 3)提供错误信息 4)提供目标执行文件 (*.OBJ/*.HEX) 和列表文件 (*.LST)
作用: 指示在程序存储器中保留以标号为起始地
址的若干字节单元,其单元个数由数值表达式指定。
例如 L1:DS 32 ; 从L1地址开始保留 32个存储单元。 5. 等值指令 标号 EQU(数值表达式)
表示EQU两边的量等值,用于为标号或标识符赋值。 例如: X1 EQU 2000H
X2 EQU 0FH … MAIN: MOV DPTR ,#X1 ; DPTR=2000H ADD A ,#X2 ; A=A+0FH
3. 宏指令 宏汇编功能:将需要反复多次执行的程序段定义
成一个宏指令名(宏定义)。编程时,可在程序中 使用宏指令名来替代被定义的ຫໍສະໝຸດ 序段(宏调用)。宏定义过程 :
宏指令名
MACRO …
ENDM
宏调用过程: …
宏指令名 …
宏指令名
形式参数 ;被定义的程序段
实际参数 实际参数
二.伪指令 常用伪指令及功能:
000EH 000FH
例3-1 编程将外部数据存储 器的 000EH 和000FH 单 元的内容相换。
分析: 外部数据存储器的数据操 作只能用 MOVX 指令,且只能 和A之间传送,因此必须用一个 中间环节作暂存,设用 20H单元。 用R0、R1指示两单元的低八位 地址,高八位地址由 P2指示。 编程过程如下:
LN+3 FF
20H , 43H , 25H ,FFH
3. 字定义 标号:DW (字常数或表达式) GH 12
作用: 指示在程序存储器中以标号为 起始地址的单元里存放的数为字数据
34 GH+2 56
78
(即16位的二进制数),例如:
GH+4 00
GH :DW 1234H ,5678H,08
08
4.保留字节 标号:DS (数值表达式)
KEIL ,WAVE 集成软件的使用见附录 。
? 汇编:将汇编语言源程序转换成机器语言目标 程序的过程称为汇编。
? 汇编程序:能将汇编语言源程序转换成机器语 言目标程序的系统软件称为汇编程序。
汇编的方法:汇编的方法有两种 1.手工汇编:
人工查指令表,查出程序中每条指令对应的机器 代码。早期的计算机使用。 2.机器汇编:
地址
2000H 2002H
机器码
78 30 E6
源程序 ORG 2000H MAIN: MOV R0,#30H
MOV A,@R0 …
一. 汇编语言指令类型
1. 机器指令:指令系统中的全部指令。每条机器 指令都有对应的机器代码,可以被 CPU执行。
2. 伪指令: 汇编控制指令,没有指令代码,只用 于汇编过程,为汇编程序提供汇编信息。
相关文档
最新文档