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

合集下载

指令系统与汇编语言程序设计

指令系统与汇编语言程序设计

1010011i n
85 n1 n2
MOV DPTR,#d1d2 ;DPTR←d1d2
90 d1 d2
习题1:找出配对指令,实精现选p反pt 向传送。
《单片机原理及应用》教学课件
例2-4-1:顺序执行下列指令序列,求每一步执行结果。
MOV A,#30H
;A= 30H
MOV 4FH,A
;(4FH)= 30H
2-1 指令格式
一. 汇编语言指令格式 [标号:]操作码 操作数1,操作数2[;注释]
换行表示一条指令结束。 例: LOOP: MOV A,#40H ;取参数
1.标号:指令的符号地址 2.操作码:指明指令功能。 3.操作数:指令操作对象 数据、地址、寄存器名及约定符号。 4.注释行:说明指令在程序中的作用。
第2章 指令系统与汇编语言程序设计 2-1 指令格式 2-2 指令寻址方式 2-3 状态标志 2-4 MCS-51指令系统
《单片机原理及应用》教学课件
单片机指令系统概述
一、MCS-51指令分类
MCS-51单片机共有111条指令。 1.按指令所占的字节数分类
①单字节指令49条 ②双字节指令46条 ③三字节指令16条 每条指令的平均字节数:
精选ppt
《单片机原理及应用》教学课件
例:查表法求Y=X2。设X(0≤X≤15)在片内RAM的20H单元中,要 求将查表求Y,存入片内RAM21H单元。
2)指令地址
1000H 1002H 1004H 1005H 1007H 1008H 100BH
源程序
ORG 1000H
;程序起始地址
SQU: MOV A,20H ;取X
操作码和操作数是指令主体。
精选ppt

第三章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)程序优化

第三章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位 可以位寻址)。

第3章MCS1的指令系统

第3章MCS1的指令系统
25
7.位寻址
3.4
MCS-51指令系统分类介绍
MCS-51 的指令系统,共有 111 条指令,按功能分类, 可分为下面5大类: (1)数据传送类(28条) (2)算术操作类(24条 (3)逻辑运算类(25条)
(4)控制转移类(17条)
(5)位操作类(17条)
26
3.4
MCS-51指令系统分类介绍
程序存储器 DPTR
2000H A
2010H 64H 64H(10H) 10H
2000H
变址寻址示意图
18
5.基址寄存器加变址寄存器间址寻址方式(变址寻址) 说明: (1)本寻址方式是专门针对程序存储器的寻址方式,寻址范围 可达到64KB。 (2)本寻址方式的指令只有3条: MOVC A,@A+DPTR
8
3.3
1.寄存器寻址方式
指令系统的寻址方式
以通用寄存器的内容为操作数的寻址方式。 通用寄存器指A、B 、DPTR以及R0~R7 。 寄存器寻址就是从寄存器中读取操作数或存放操作数进寄存
器。
MOV A,Rn ;(Rn)→A,n=0~7 表示把寄存器Rn的内容传送给累加器A 寻址范围: (1)4组通用工作寄存区共32个工作寄存器。 (2)部分特殊功能寄存器,例如A、B 以及数据指针寄存器 DPTR等。
在相对寻址的转移指令中,给出了地址偏移量,以“rel” 表示,即把 PC 的当前值加上偏移量就构成了程序转移的目的
地址:
目的地址=转移指令所在的地址 + 转移指令的字节数 + rel 偏移量rel是一带符号的8位二进制数补码数。 范围是:–128 - +127 向地址增加方向最大可转移(127+转移指令字节)个单元

第3章_MCS-51单片机指令系统及汇编语言程序设计2

第3章_MCS-51单片机指令系统及汇编语言程序设计2

3. 汇编语言的语句格式是什么?使用标号有什么限制?注释段起什么作用? 答案: MCS-51汇编语言的语句格式应符合下列结构: 【标号:】 操作码 【操作数】【;注释】 标号位于语句的开始,由以字母开头的字母和数字组成,它代表该语句的地址。 标号与操作码之间要用“:”隔开,标号与“:”之间不能有空格,“:”与操 作码之间可以有空格。 注释在语句的最后,以“;”开始,是说明性的文字,与语句的具体功能无关。 4. MCS-51汇编语言有哪几条常用伪指令?各起什么作用? 答案: ORG:汇编程序起始地址,用来说明其后程序段在存储器中存放的起始地址; EQU:赋值指令,用来给变量标号赋予一个确定的数值; DB:定义数据字节,指令按字节数的形式把数据存放在存储单元中; DW:定义数据字,按字(双字节)的形式把数据存放在存储单元中; DS:定义存储区,从指定的地址单元开始,保留一定数量的存储单元; BIT:位定义,其功能是把位地址赋给字符名称; END:汇编结束,表明汇编语言程序结束。
2.顺序程序
顺序程序是指程序中没有使用转移类指令的程序段,机器执行这 类程序时也只需按照先后顺序依次执行,中间不会有任何分支、循环, 也不需要调用子程序。 例:将一个单字节十六进制数转换成BCD码。 解:算法分析。单字节十六进制数在0~255之间,将其除以100后, 商为百位数;余数除以10,商为十位数,余数为个位数。 设单字节数存放在40H,转换后,百位数存放在R0中,十位数存 放在R1中,个位数存放在R2中,具体程序如下: ORG 0030H MOV A, 40H ;将单字节十六进制数送入A中 MOV B,#64H ;将100送入B中, #64H可直接写成#100 DIV AB MOV R0,A ;百位数送R0,余数在B中 XCH A,B ;余数送入A中 MOV B,#0AH ;将10送入B中, #0AH可直接写成#10 DIV AB ;商为十位数,余数为个位数 MOV R1,A MOV R2,B SJMP $

第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
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5 MOV
十六位数的传递指令(1条) DPTR,#data16
8051是一种8位机,这是唯一的一条16位立即数传递指 令。功能:将一个16位的立即数送入DPTR中去。其中 高8位送入DPH,低8位送入DPL。 例:MOV DPTR,#1234H 执行完了之后DPH中的值为12H,DPL中的值为34H。 如果我们分别向DPH,DPL送数,则结果也一样。 如下面两条指令: MOV DPH,#35H MOV DPL,#12H。
6
相对寻址
Relative Addressing
以当前程序计数器PC的内容为基础,加 上指令给出的一字节补码数(偏移量)形 成新的PC值的寻址方式。 相对寻址用于修改PC值,主要用于实现程 序的分支转移。 例 如 , SJMP 08H ; PC←PC+2+08H 指令操作示意图如图2-19所示。
如:JC
8 堆栈操作(2条) PUSH direct ;SPSP+1,(SP)(direct) POP direct ; (direct) (SP), SPSP-1 第一条为压入指令,就是将direct中的内容送入堆栈中, 第二条为弹出指令,就是将堆栈中的内容送回到direct中。 例: MOV SP,#10H MOV 40H,#50H PUSH 40H PUSH 30H
7 位寻址
返回本节首页
1
立即寻址 Immediate Addressing
指令中直接给出操作数的寻址方式。立即操作数用 前面加有#号的8位或16位数来表示。 例如:MOV A,# 60H ;A←#60H MOV DPTR,# 3400H ;DPTR←#3400H MOV 30H,# 40H ;30H单元←#40H 上述三条指令执行完后,累加器A中数据为立即数 据60H,DPTR寄存器中数据为3400H,30H单元中 数据为立即数40H。
2.7.1 MCS-51指令系统的分类、格式及一 般说明
1 指令分类 2 指令格式 3 指令描述符号介绍
返回本节首页
1 指令分类
按指令功能,MCS-51指令系统分为数据传 递与交换、算术运算、逻辑运算、程序转 移、布尔处理操作、CPU控制等6类。 布尔处理操作类指令又称位操作指令。
返回本节
2 指令格式
返回本节
2.7.3 分类指令
1 数据传送类指令 2 算术运算类指令
3 逻辑运算与循环类指令
4 程序转移类指令
5 调用子程序及返回指令
6 位操作指令
返回本节首页
§1
数据传送类指令(29条)
Data Transfer Instruction
MCS-51 助记符: 助记符: MOV、MOVX、MOVC XCH、XCHD、SWAP PUSH、POP 源操作数寻址方式(5种):
则就相当于执行了
MOV DPTR,#3512H。
6 累加器A与片外RAM之间的数据传递类指令(4条) MOVX MOVX MOVX MOVX A,@Ri @Ri,A A,@DPTR @DPTR,A
说明: 1.在51中,与外部存储器RAM打交道的只可以是A累加器。所有 需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部 RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进 行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送入 另一个单元(设为0200H单元),也必须先将0100H单元中的内容读 入A,然后再送到0200H单元中去。
Ri——当前选中的寄存器区中的2个工作寄存器 R0、R1(i=0,1)。 direct—8位的内部数据存储器单元中的地址。
#data——包含在指令中的8位常数。
#data16——包含在指令中的16位常数。 addr16——16位目的地址。 addr11——11位目的地址。
rel——8位带符号的偏移字节,简称偏移量。 DPTR——数据指针,可用作16位地址寄存器。 bit——内部RAM或专用寄存器中的直接寻址位。 A——累加器。 B——专用寄存器,用于乘法和除法指令中。 C——进位标志或进位位,或布尔处理机中的累 加器。
@——间址寄存器或基址寄存器的前缀, 如@Ri,@DPTR。 / ——位操作数的前缀,表示对该位操作数 取反,如/bit。 ×——片内RAM的直接地址或寄存器。 (×)——由×寻址的单元中的内容。 ——箭头左边的内容被箭头右边的内 容所代替。
返回本节
2.7.2 寻址方式
1 立即寻址
2 直接寻址
3 寄存器寻址 4 寄存器间接寻址 5 变址寻址 6 相对寻址
7
读程序存储பைடு நூலகம்指令(2条)
MOVC A,@A+DPTR MOVC A,@A+PC
本组指令是将ROM中的数送入A中。本组指令也被称为查表指令, 常用此指令来查一个已做好在ROM中的表格 说明:查找到的结果被放在A中,因此,本条指令执行前后,A 中的值不一定相同。 例:有一个数在R0中,要求用查表的方法确定它的平方值(此 数的取值范围是0-5) 如果R0中的值为2, MOV DPTR,#100H MOV A,R0 则最终地址为 100H+2为102H, MOVC A,@A+DPTR . … 到102H单元中找到 的是4。 ORG 0100H DB 0,1,4,9,16,25
立即寻址、直接寻址、寄存器寻址、 寄存器间接寻址、变址寻址。
MOV XCHG PUSH、POP
目的操作数寻址方式(3种):
直接寻址、寄存器寻址、寄存器间接寻址 除了目的操作数为ACC的指令影响奇偶标志P外,一般不影响 标志位。
直接地址 direct
累加器 A
直接地址 direct
间接地址 @Ri
2.要读或写外部的RAM,当然也必须要知道RAM的地址, 在后两条指令中,地址是被直接放在DPTR中的。而前两条 指令,由于Ri(即R0或R1)只是8位的寄存器,所以只提 供低8位地址。高8位地址由P2口来提供。(演示举例) 3.使用时应先将要读或写的地址送入DPTR或Ri中,然后 再用读写命令。 例:将外部RAM中100H单元中的内容送入外部RAM中200H 单元中。 MOV DPTR,#0100H MOVX A,@DPTR MOV DPTR,#0200H MOVX @DPTR,A
Bit Addressing
位寻址只能对有位地址的单元作位寻址操作。 位寻址其实是一种直接寻址方式,不过其地 址是位地址。 例如:SETB 10H ;将10H位置1 若22H单元中存放着数据40H,22H单元的D0位 的位地址为10H, 执行上述指令后(22H)=41H。 又如:MOV 32H,C ;32H←进位位C ORL C ,32H ;C←C∨32H
以寄存器中内容为地址,以该地址中内容 为操作数的寻址方式。间接寻址的存储器空 间包括内部数据RAM和外部数据RAM。 能用于寄存器间接寻址的寄存器有R0, R1,DPTR,SP。其中R0、R1必须是工作 寄存器组中的寄存器。SP仅用于堆栈操作。
例如:MOV @R0,A ;内部RAM(R0)←A其 指令操作过程示意图如图2-15所示。 又如:MOVX A,@R1;A←外部RAM(P2R1) 其指令操作过程示意图如图2-16所示。 再 如 : MOVX @DPTR , A ; 外 部 RAM(DPTR)←A 其指令操作过程示意图如图2-17所示。
23
指令代码
程序存储区 1000H 1001H 1002H 40 23 30
当前PC

1024H 1025H

47 45
23H
1002H ALU 1025H
程序存储器
PC
2000H SJMP 08H 08H 200AH (2000H) 200AH
2000H+2
图2-19 相对寻址示意图
返回本节
7 位寻址
返回本节
2
直接寻址 Direct Addressing
指令中直接给出操作数地址的寻址方式,能进 行直接寻址的存储空间有SFR寄存器和内部数据 RAM。
例如:MOV PSW,# 20H PSW←#20H ;
PSW为直接寻址寄存器的符号地址。 MOV A,30H ;A←30H内部RAM 单元中的 内容 30H为直接给出的内部RAM的地址。
片内RAM
R0
30H
30H
34H
A
34H
图2-15 MOV @R0,A间接寻址示意
片 外 RAM
P2 34H DPTR 2000H R1 10H 3410H 45H 2000H
片 外 RAM
30H
A
45H
A
30H
图2-16 MOVX A,@R1 间接寻址示意图
图2-17 MOVX @DPTR,A 间接寻址示意图
2.7 MCS-51单片机指令系统
2.7.1 MCS-51指令系统的分类、格式及一般说 明
2.7.2 寻址方式
2.7.3 分类指令
MCS-51单片机指令系统有如下特点:
(1)指令执行时间快。 (2)指令短,约有一半的指令为单字节指令。 (3)用一条指令即可实现2个一字节的相乘 或相除。 (4)具有丰富的位操作指令。 (5)可直接用传送指令实现端口的输入输出 操作。
如:MOVC A,@A+PC 设A=E0H
程序存储区 2040H 2041H 83 … … 47 45 ALU 2121H 指令代码 A 45 E0
当前PC …
2120H 2121H
程序存储器
DPTR 2000H A
10H
2000H
2010H
64H
64H(10H)
图2-18 变址寻址示意图
返回本节
2 以寄存器Rn为目的操作数的指令 (3条)
MOV Rn,A MOV Rn,direct MOV Rn,#data
相关文档
最新文档