022 MCS-51单片机的指令系统(2)

合集下载

单片机4-2

单片机4-2

A
半字节
RAM
半字节
图3-8 半字节交换操作
1.要用传送类指令访问 要用传送类指令访问MCS-51片外 片外RAM,它的指令操作码助 要用传送类指令访问 片外 它的指令操作码助 记符是 1)MOV ) 2)MOVX 3)MOVC 4) 以上都行 2.PSW=18H时,当前工作寄存器 时 1)0组 ) 组 2)1组 ) 组 3)2组 ) 组 4)3组 ) 组
A 一字节 源操作数 一字节
⑵半字节交换指令 汇编指令格式 操作 XCHD A,@Ri ; (A0~3) ((Ri) 0~3) (A0 间接寻址的单元内容与累加器A中的内容的低 位互换, 将Ri间接寻址的单元内容与累加器 中的内容的低 位互换, 间接寻址的单元内容与累加器 中的内容的低4位互换 位内容不变。 高4位内容不变。该操作只影响标志位 。 位内容不变 该操作只影响标志位P。 这条指令为低字节交换指令。该指令将累加器 的低 位与 的低4位与 这条指令为低字节交换指令。该指令将累加器A的低 R0或R1所指出的片内 所指出的片内RAM单元的低 位数据相交换,各自的 单元的低4位数据相交换 或 所指出的片内 单元的低 位数据相交换, 位不变。 所示。 高4位不变。其操作如图 所示。 位不变 其操作如图3-8所示
A寄存器 寄存器
寄存器间接寻址@R1, 寄存器间接寻址 , R0(外RAM0B~255B) ( )
寄存器间接寻址@DPTR 寄存器间接寻址 (外RAM0B~64KB) )
图3-6 外部数据存储器传送操作
8. 栈操作指令(2条) 栈操作指令( 条 ⑴PUSH(入栈)指令 (入栈) 汇编指令格式 操作 字节 PUSH direct 先(SP)+1→SP 2 后(direct)→(SP) ⑵POP(出栈)指令 (出栈) 汇编指令格式 操作 POP direct 先((sp))→direct (SP)后(SP)-1→(SP)

MCS-51单片机的指令系统

MCS-51单片机的指令系统

整理ppt
12
4.2 寻址方式
51汇编语言有42种操作码助记符,用来描述33种操作功 能。一种操作码可以使用一种以上的数据类型,又由于 助记符规定了其访问的存储器空间,所以一种功能可能 有几个助记符(如MOV、MOVX、MOVC)。功能助记 符与寻址方式组合,得到111条指令。
整理ppt
13
4.2 寻址方式
1)无操作数单字节指令
这类指令只有操作码字段,操作数隐含在操作码中。
例如:INC DPTR
指令码为 :
数据指针隐含其中
整理ppt
6
指令的组成及字节数
2)含有操作数寄存器号的单字节指令 单字节的指令码由操作码字段和指示操作数所 在寄 存器号的字段组成。 例如;MOV A,Rn 指令码为:
其中,rrr为寄存器Rn的编号
整理ppt
2
4.1 指令和指令程序
“指令”: CPU能直接识别和执行的命令。 指令系统:CPU所能执行的全部指令的集合。
与CPU的能力、使用的方便灵活性密切相关。 指令的记忆问题?指令本身是二进制代码。
例如以下的51单片机指令:
把10放到累 740AH 加器A中 为பைடு நூலகம்便于记忆 指令助
A加20,结 果仍在A中
整理ppt
8
指令的组成及字节数
3.三字节指令(17条)
这条指令的指令码的第1字节为操作码;第2和第3字节为 操作数或操作数地址,有如下3类。 1)16位数据 例如:MOV DPTR,#26ABH 指令码为:
整理ppt
9
指令的组成及字节数
2)8位地址和8位数据 例如:MOV 74H,#0FFH 指令码为:
在MCS-51指令中,若操作数是以R0~R7来表示操作数时, 就属于寄存器寻址方式。

MCS51单片机指令系统

MCS51单片机指令系统

第一条指令为远查表指令,可以在64K的程序存储器空间寻 址。基地址寄存器为DPTR,其意思为,DPTR里面存放的是 程序存储器中数据表格的首地址,A为数据地址的偏移量。
这条指令执行以后,以 (A)+(DPTR)的数值为地址数 据就送进A里面来了,也就是从表格首地址开始以后的第(A) 个数据被送进A了。(举例子说明)
编写好的程序都放在程序存储器中,由于一个存储地址所 指示的存储单元只能存放一字节的数据。所以,在存放指令时, 必须将指令拆分成一个一个字节进行连续存放。
比如: 实现“累加器加10H”这条指令,其机器语言为 0111010000010000, 占用了两个字节,就必须拆成两个字节 进行连续存储。
但是,用二进制来表示比较麻烦,因此,也常用十六进制来 表示如:74H 10H来表示以上这条机器语言。可见,用十六进 制表示指令比较简单,但是,指令系统有上百条指令,不易记 住。所以,一般采用容易记住的一些缩写符号来表示机器语言,
2. 在指令中直接给出操作数的地址, 这种寻址方式就属
于直接寻址方式。在这种方式中, 指令的操作数部分直接 是操作数的地址。
比如:MOV A,30H;将30H里面的数送到A里面 MOV 21H,30H;将30H里面的数存放到21H里面 在MCS -51 单片机指令系统中, 直接寻址方式中可
以访问 3 种存储器空间: (1) 内部数据存储器的低 128 个字节单元(00H~
7. 位寻址 指按照位进行的寻址操作,(前面讲的都是按字节进
行的寻址操作)。该种寻址方式中, 操作数是内部RAM单元 中20H到2FH的128个位地址以及SFR中的11个可进行 位寻址的寄存器中的位地址寻址。
比如:MOV C,20H;就是将RAM中位寻址区中20H位地 址中的内容送给C。区别与MOV A,20H;这个是将内部 RAM中20H单元的内容送给A。

MCS-51单片机原理和接口技术习题参考答案

MCS-51单片机原理和接口技术习题参考答案

MCS-51单片机原理及接口技术习题参考答案第一章绪论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子系列。

第三章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条)

第3章 MCS-51指令系

第3章  MCS-51指令系
bit——内部数据RAM或部分特殊功能寄存器里的可寻址 位的位地址。 • ——表示对该位操作数取反。 • rel——补码形式的8位偏移量。用于相对转移和所有条件 转移指令中。偏移量相对于当前PC计算,在-128~+127 范围内取值。
单片机技术及应用
3.3.2 数据传送类指令 • 数据传送类指令一般的操作是把源操作数传送到
单片机技术及应用
3.2.5 变址寻址
• 这种寻址方式用于访问程序存储器中的数据表格, 它把基址寄存器(DPTR或PC)和变址寄存器A的内 容作为无符号数相加形成16位的地址,访问程序
存储器中的数据表格。操作时是以某个寄存器的
内容为基础,然后在这个基础上再加上地址偏移
量,形成真正的操作数地址。需要特别指出的是, 用来作为基础的寄存器可以是PC或是DPTR,地 址偏移量存储在累加器A中。例如:
要操作数,因此在使用操作数的过程中就存在一个寻找存储 单元的问题。 MCS-51指令系统的寻址方式有下列几种: • ① 直接寻址。 • ② 立即数寻址。 • ③ 寄存器寻址。 • ④ 寄存器间接寻址。 • ⑤ 变址寻址。 • ⑥ 位寻址。 • ⑦ 相对寻址。
单片机技术及应用
3.2.1 直接寻址 • 在指令中含有操作数的直接地址,该地址指出了参与操作
单片机技术及应用
单片机技术及应用
第3章 MCS-51指令系
单片机技术及应用
教学提示 • 本章重、难点在于理解单片机MCS-51指令系统
的寻址方式,以及数据传送类指令、算术运算类 指令、逻辑操作类指令、位操作指令和控制转移 类指令操作的含义和具体使用方法。 教学目标 • 掌握指令系统的寻址方式。 • 掌握汇编语言指令的格式。 • 掌握汇编语言指令的功能及应用。 • 掌握伪指令的格式及应用。

单片机实验报告 (2)

单片机实验报告 (2)

实验项目名称MCS-51系列单片机指令学习实验实验项目类型验证性实验时间2013、5、10、星期五、一二节课一、实验目的MCS-51系列单片机指令系统共有111条汇编语言指令,这些指令按功能的不同可分为五类:29条数据传送类指令,24条算术运算类指令,24条逻辑运算类指令,17条控制转移类指令和17条位操作类指令。

本实验通过单步执行程序中各类指令,来进一步学习和理解各类主要指令的功能,掌握指令的用法。

通过实验掌握Keil软件的使用方法。

二、实验内容(一)、数据传送与算术运算1、体会MOV Rn,direct指令的功能和用法,取n=0,direct=40H。

程序如下:ORG 0000HSUBROUT:MOV 40H ,#0FH;MOV R0 ,40H;MOV A ,R0;HERE:LJMP HERE;ENDA=(OFH ),40H=(OFH ),R0=(OFH )2、体会MOV @Ri,#DATA指令的功能和用法,选择DATA=0FH,i=0。

程序如下:ORG 0000HSUBR:MOV R0,#50H;R0←50HMOV @R0,#0FH;(R0)←0FHMOV A,50H;A←(50H)HERE:LJMP HERE;ENDR0=(50H ),50H=(OFH ),A=(OFH )3、体会查表指令MOVC A,@A+DPTR的功能和用法。

设定40H单元中的内容为0~9之间的一个整数,用查表的方法求出它的平方值(BCD码),结果存入41H单元。

利用MOVC A,@A+DPTR指令查表程序如下:ORG 0000HSTART:MOV DPTR,#SQR;MOV A ,40H;MOVC A ,@A+DPTR;MOV 41H , A;HERE:LJMP HERE;SQR:DB 00H,01H,04H,09H,16HDB 25H,36H,49H,64H,81HEND41H=(25 )4、用加法指令ADD A,R0实现两数相加,如52H+FCH。

MCS系列单片机指令系统2

MCS系列单片机指令系统2

Y
解:本题是十进制数累加,必 须对和要进行BCD码调整;同
N Cy=1?
Y
时加数的增长不能用INC指令, 千、百位加1
数据保存 结束
也必须进行BCD码调整,因此 只能用ADD A,#01指令, 再进行BCD码调整。
BCD码调整 加数1
【例】在内RAM 30H~3FH 存放符号数,试统计中间负数 的个数,将统计结果存放在 40H单元中,试编制程序。
4)DW伪指令 指令格式:
[标号:]DW 16位二进制数表 说明:DW伪指令是定义字的伪指令,即从指定的地址单元 开始,定义若干个16位二进制数据,每个字占用两个单元, 先存高8位,再存低8位。用法同DB伪指令。
5)DS伪指令
指令格式:
地址
[标号:]DS <表达式>
说明:DS伪指令是定义存储区, 2000H
LOOP2:INC R0 DJNZ R2,LOOP1 END
本章小结
主要掌握立即寻址、直接寻址、寄存器寻址、寄存器间接 寻址等寻址方式。 掌握各指令的格式及用法。 能阅读程序,写出结果。 能编写简单结构化程序。
【例】下列程序存放在ROM中的情
况。 源程序
机器语言
ORG 2000H
START:MOV A,#02H 74 02
MOVC A,@A+PC 83
RET
22
DB 41H,”4”,”A”41 34 41
END
地址 2000H 2001H 2002H 2003H 2004H 2005H 2006H
ROM 74 02 83 22 41 34 41
即从标号指定的单元开始保留表 2001H
达式所代表的存储单元数。
2002H

第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 $

MCS51指令系统的介绍

MCS51指令系统的介绍

(3)增量指令INC
INC INC INC INC A Rn direct @Ri ;A(A)+1 ;Rn (Rn)+1 ;direct (direct)+1 ;(Ri)((Ri))+1
INC
DPTR
;DPTR (DPTR)+1
【例】(A)=12H,(R3)=0FH,(35H)=4AH, (R0)=56H,(56H)=00H 执行如下指令: INC A ;执行后(A)=13H INC R3 ;执行后(R3)=10H INC 35H ;执行后(35H)=4BH INC @R0 ;执行后(56H)=01H
POP DPH POP DPL POP ACC POP PSW 指令执行之后,SP内容修改为60H,而64H、63H、 62、61H单元的内容依次弹出到DPH、DPL、A、PSW中。
5、字节交换指令XCH XCHD SWAP
数据交换主要是在内部RAM单元与累加器A之间进 行,有整字节和半字节两种交换。 (1)整字节交换指令
图3.3 寄存器间接寻址方式示意图
3.2.5 位寻址
位操作指令能对内部RAM中的位寻址区(20H~2FH) 和某些有位地址的特殊功能寄存器进行位操作。
SETB TR0 CLR 00H MOV C,57H ;TR01 ;(00H)0 ;将57H位地址的内容传送到 位累加器C中 ;将5FH位状态与进位位C相与, 结果在C中
(2)带进位加法指令ADDC
ADDC ADDC ADDC A,Rn A,direct A,@Ri ;A(A)+(Rn)+(Cy) ;A(A)+(direct)+(Cy) ;A(A)+((Ri))+(Cy)

51系列单片机指令系统

51系列单片机指令系统

MOV DPTR,#1000H MOVX A,@DPTR INC DPTR, MOVX @DPTR,A 7、程序存储器向累加器A传送指令 MOVC A,@A+DPTR MOV DPTR,#100H MOV A,R0 MOVC A,@A+DPTR ORG 0100H. DB 0,1,4,9,16,25 8、堆栈操作指令 PUSH direct POP direct 第一条指令称之为入栈指令,就是将direct中的内容 送入堆栈中,第二条指令称之为弹出指令,就是将堆栈 中的内容送回到direct中。
位寻址时,操作数是二进制数的某一位,其位地 址出现在指令中,例如指令 • SETB bit ;(bit) ← l • 51系列单片机可用于位寻址的空间是内部RAM的可 位寻址区和SFR区中的字节地址可以被8整除(即地址以 “0”或“8”结尾)的寄存器所占空间,寻址方式如表 2-2所示。
表2-2 寻址方式一览表
寻 址 方 式
寻 址 范 围
R0-R7 ,DPTR ACC,B,C(CY位)
内部RAM 00H-7FH 特殊功能寄存器 80H-FFH 内部RAM位寻址区 (20H-2FH): 位地址00H-7FH 可寻址的特殊功能寄存器: 位地址 80H-F7H 以数据指针表示操作数 内部RAM 00H-7FH 外部RAM或I/O端口 00H-FFH / 0000H-FFFFH
图2-3 寄存器间接寻址
图2-4 立即寻址
4、立即寻址

立即寻址时,指令中直接给出操作数。例如指令 MOV A,#76H ;数据76H送累加器 A。 • 立即数寻址过程如图2-4所示。
5、变址寻址

变址寻址时,指定的变址寄存器的内容与指令中 给出的偏移量相加,所得的结果作为操作数的地址。 例如指令MOVC A, @A+DPTR ;((A)+(DPTR))送 A。变址寻址过程如图2-5所示。 不论用DPTR或PC作为基址指针,变址寻址方式都 只适用于51系列单片机的程序存储器,通常用于读取 数据表也就是将程序存储器中的数送入A中。因此也称 为查表指令,常用此指令来查一个已做好在程序存储 器中的表格,这条指令采用变址寻址。

单片机原理与接口技术(电子工业出版社)课件 第3章 MCS-51单片机指令系统

单片机原理与接口技术(电子工业出版社)课件  第3章 MCS-51单片机指令系统

加变址寻址、相对寻址和位寻址等七种。
16:50
单片机原理与接口技术(第2版).李晓林.电子工业出版社
返回目录
17
3.1.4 寻址方式
1.立即寻址
----立即寻址
立即寻址是将操作数直接写在指令中,作为 指令的一部分存放在代码段里,位置在程序存储 器中。立即寻址中的操作数,称为立即数。 例如:MOV A, #30H ;30H→A
16:50
单片机原理与接口技术(第2版).李晓林.电子工业出版社
返回目录
19
3.1.4 寻址方式
直接寻址方式可访问的范围 1) 特殊功能寄存器
----访问范围
这部分存储单元既可以用单元地址给出,也可 以用寄存器符号的形式给出。如:MOV A, 90H 或 MOV A, P1为同一条指令的两种写法(特殊功能寄 存器只能用直接寻址方式访问)。


bit:表示内部RAM和SFR中的具有位寻址功能
的位地址。
单片机原理与接口技术(第2版).李晓林.电子工业出版社
返回目录
16:50
15
3.1.3 指令中的常用符号

@:表示间接寻址寄存器或基址寄存器的前缀
符号。

$: 表示当前指令的地址。
/:位操作数的前缀,表示对该位操作数取反,
如:/bit。 (x):表示存储单元x的内容。 ((x)):表示以寄存器或存储单元x的内容作为 地址的存储单元的内容。 →:表示数据传送方向。
返回目录
14
3.1.3 指令中的常用符号

#data:表示8位立即数,即8位常数,取值范围
为#00H~#0FFH。

#data16:表示16位立即数,即16位常数,取值 范围为#0000H~#0FFFFH。 addr16:表示16位地址。 addr11:表示11位地址。 rel:用补码形式表示的地址偏移量,取值范围 为-128~+127。

第3章 MCS-51指令系统

第3章 MCS-51指令系统

16
MCS-51单片机指令系统
MCS-51单片机指令系统包括111条指令 按功能可以划分为以下5类:
1. 数据传送和交换指令(29条)
2. 算术运算指令(24条) 3. 逻辑运算指令(24条) 4. 控制转移指令(17条) 5. 位操作指令(17条)
17

数据传送和交换类指令主要有以下几种:
1. 2. 3.

30H
Eg:MOV 30H,#33H 33H
30H
XX 30H
33H
30H
31H
Eg:MOV 30H,31H
55H
XX
55H
25
A

30H XX
地址
30H 33H
Eg:MOV 30H, A
33H
R0
Eg:MOV 30H,@R0
55H
取出
30H 78H 30H
55H
R3
78H
30H XX

55H
MOV A , 30H
XX 55H
30H
A
6
3、寄存器寻址
寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄 存器R0~R7、累加器A、通用寄存器B、地址寄存器DPTR等。 数据存放在R0~R7中的某个通用寄存器内,或者放在某个专用 寄存器中。 e.g.: MOV A,R7 ADD A,R0
DPTR
2000H
DPTR 2000H
XXXX
Eg:将数据指针DPTR指向存于ROM中的表格首地址。
MOV DPTR,#TABLE
27
三、片外数据传递指令
使用DPTR和Ri进行间接寻址 MOVX A, @DPTR ;A ←((DPTR))片外 MOVX A,@Ri ;A ←((Ri))片外 MOVX @DPTR,A ;(DPTR)片外←(A) MOVX @Ri,A ;(Ri)片外←(A) 注意: 该指令用于在单片机和外部RAM、扩展I/O的数据传送; 使用Ri时,只能访问低8位地址为00H~FFH地址段; 使用DPTR时,能访问0000H ~ FFFFH地址段。

单片机第3章1

单片机第3章1

相对寻址是以程序计数器PC的当前值(指读出该2字节或 3字节的跳转指令后,PC指向的下条指令的地址)为基准,
加上指令中给出的相对偏移量 rel 形成目标地址的寻址方式 。
该类寻址方式主要用于跳转指令。
目的地址=转移指令所在的地址 + 转移指令的字节数+ rel 偏移量rel是一带符号的8位二进制数补码数 范围是:–128 - +127
3.3
2、直接寻址
指令系统的寻址方式
指令操作码之后的字节存放的是操作数的地址,操作 数本身存放在该地址指示的存储单元中的寻址方式称为直 接寻址。
如: MOV A,50H
50H 3AH E5H 50H RAM 3AH SFR A ROM MOV A,50H
寻址范围为:片内RAM低128字节;SFR。 指令中直接给出操作数存放的地址,机器码 中直接出现一个字节的操作数的地址。 SFR经常采用符号形式表示。
第3章 MCS-51单片机的指令系统 3.1 指令系统概述
3.2 指令格式
3.3 指令系统的寻址方式
3.4 MCS-51指令系统的分类介绍 3.4.1 数据传送类指令
几个概念
3.1 指令系统概述
程序设计语言:是实现人机交换信息的基本工具,分为 机器语言、汇编语言和高级语言。 机器语言:用二进制编码表示每条指令,是计算机能直 接识别和执行的语言。
程序存储区
字节数 PC 20H 02H 1000H+02H=1002H PC值
A
54H
1000H 1001H 1002H
80H
40H 75H
JC rel
2000H 2001H
RAM PSW 10000000 SFR
② 1002H+75H=1077H

第三章MCS-51指令系统

第三章MCS-51指令系统
第三章 MCS-51单片机指令系统
3.1 概述
3.2
3.3
寻址方式
MCS-51的指令系统
3.4
伪指令
3.1
概述
指令:使计算机完成某种操作的命令。 指令系统 :计算机能够执行的全部操作所对应的指 令集合。 机器语言: 采用二进制编码表示指令,是计算机能够直 接识别和执行的语言。 汇编语言: 采用助记符 、符号、数字来表示指令的程序 语言,它与机器语言指令时一一对应的。
如果我们分别向DPH,DPL送数,则结果也一样。
如下面两条指令: 则就相当于执行了 MOV DPH,#35H MOV DPTR,#3512H。 MOV DPL,#12H。
(6) 累加器A与片外RAM之间的数据传递类指令(4条)
MOVX A,@Ri MOVX @Ri,A MOVX A,@DPTR MOVX @DPTR,A 说明: 1.在51中,与外部存储器RAM打交道的只可以是A累加器。所 有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外 部RAM中的数据也必需通过A读入。 在此我们可以看出内外部RAM的区别了,内部RAM间可以直接 进行数据的传递,而外部则不行。 比如,要将外部RAM中某一单元(设为0100H单元的数据)送 入另一个单元(设为0200H单元),也必须先将0100H单元中的内 容读入A,然后再送到0200H单元中去。
MOV B,R0
PUSH ACC
;R0→B,R0为寄存器寻 址,B为直接寻址。
;A的内容压入堆栈
3.2.4
寄存器间接寻址
例:MOV A, @R0
• 以寄存器中内容为地址,以该地址中内容为操作数的
寻址方式。间接寻址的存储器空间包括内部RAM和
外部RAM。 • 能用于寄存器间接寻址的寄存器有R0,R1,DPTR, SP。其中R0、R1必须是工作寄存器组中的寄存器。 SP仅用于堆栈操作。

第2章 单片机的指令

第2章 单片机的指令

2.3.1 通用传送指令: MOV 通用传送指令:
• 4. 目的地址传送 • MOV DPTR , #data16 ;DPTR ←#data16 ; 直接/立即 • MOV DPTR,#2003H ;把16位立即常数装入数 据地址指针,其中DPTR的高八位(DPH)=20H, 低八位(DPL)=03H。 • 例如:若片外数据存储器单元(3007H)=60H, 执行 MOV DPTR, #3007H; DPTR存放的是数 据3007H,而执行 MOVX A,@DPTR; @DPTR 存放的是地址,结果A=60H.
例如:试编制根据累加器A中的数(0~9之间)查其平方表的子程序。 COUNT:PUSH DPH ;保护DPTR内容 • PUSH DPL • MOV DPTR,#TABLE ;赋表首址到DPTR • MOVC A,@A+DPTR ;据A中内容查表 • POP DPL ;恢复DPTR原内容 • POP DPH • RET ;返回主程序 TABLE: DB 00 • DB 01 • DB 04 • DB 09 • DB 16 • DB 25 • DB 36 • DB 49 • DB 64 • DB 81
2.2.2 寻址方式 5. 变址寻址 MOVC A,@A十 DPTR ; A←((A)十(DPTR)), 累加器/变址。 在变址寻址时,由指令指定的偏移量寄存器中 的内容和变址寄存器PC或DPTR中的内容相加所得 的结果作为操作数的地址, A为偏移量寄存器,内容为无符号位数,它和 DPTR中的内容相加,得到操作数地址。 不论用DPTR或PC作为基址指针,变址寻址方 式都只适用于MCS-51的程序存贮器,通常用于读 取数据表格寻址方式
7. 位寻址 SETB bit ; bit ←l,位寻址。 • 在位寻址时,操作数是二进制数的某一 位 其位地址出现在指令中, • 可用于位寻址的空间是,内部RAM的可 寻址区和SFR区中的字节地址可以被8整除 (即地址以“0”或“8”结尾)的寄存器所占空 间。

第三章MCS-51指令系统及汇编语言程序设计

第三章MCS-51指令系统及汇编语言程序设计

指 令 系 统 的 寻 址 方 式
MCS-51指令系统及一般说明 MCS-51指令系统及一般说明
在介绍指令之前, 在介绍指令之前 , 先对指令中使用的一些符号意义进行简单 的说明。 的说明。 direct---直接地址, ---直接地址 ① direct---直接地址,即8位的内部数据存储器单元或特殊 功能寄存器的地址。 功能寄存器的地址。 #data--包含在指令中的8位常数。 --包含在指令中的 ② #data--包含在指令中的8位常数。 #datal6--包含在指令中的16位常数 包含在指令中的16位常数。 ③ #datal6--包含在指令中的16位常数。 rel-- 位的带符号的偏移量。用于SJMP --8 SJMP及所有的条件转移 ④ rel--8位的带符号的偏移量。用于SJMP及所有的条件转移 指令中。 指令中 。 偏移量按相对于下一条指令的第一个字节地址与跳转 后指令第一个字节地址之差计算, 范围内取值。 后指令第一个字节地址之差计算,在-128~+127范围内取值。 128 +127范围内取值 DPTR--数据指针,可用作16位的地址寄存器。 --数据指针 16位的地址寄存器 ⑤ DPTR--数据指针,可用作16位的地址寄存器。
指 令 系 统 的 寻 址 方 式
寄存器间接寻址
寄存器间接寻址方式可用于访问内部RAM 或外部数据存储器 寄存器间接寻址方式可用于访问内部 RAM或外部数据存储器 。 RAM 或外部数据存储器。 这种寻址方式是由指令指定某一寄存器的内容作为操作数的 地址。 地址。 其中(Ri)=40H (Ri)=40 例如 MOV A,@Ri ;(i=0或1),其中(Ri)=40H 这条指令表示从Ri中找到源操作数所在单元的地址, Ri中找到源操作数所在单元的地址 这条指令表示从Ri中找到源操作数所在单元的地址,把该地 址中的内容传送给A 即把内部RAM 40H单元的内容送到累加器A RAM中 址中的内容传送给A。即把内部RAM中40H单元的内容送到累加器A 中。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章
MCS-51单片机的指令系统
4.4 算术运算类指令
包括+、-、×、÷、加1、减1、十进制调整指 令,共有24条,一般影响PSW中的CY、AC、 OV、P等标志位。
1.加法指令
ADD A,Rn
;A← A + Rn
ADD A,direct ;A← A +(direct)
ADD A,@Ri
;A← A +(Ri)
2.带进位加指令 ADDC A,Rn ADDC A,direct ADDC A,@Ri ADDC A,#data ;A← A + Rn + C ;A← A +(direct)+ C ;A← A +(Ri)+ C ;A← A + #data + C
C为来自PSW状态寄存器中的进位位C。带进位加法指令 中的累加器A除了加源操作数外,还需要加上程序状态字 PSW寄存器中的进位标志Cy。设置带进位加法指令的目 的是为了实现多字节加法运算。
指令名称 指令格式 INC A INC Rn 增量指令 机器码 00000100 00001rrr 00000101 direct 0000011i 10100011 功 能 A←A+1 Rn←Rn+1 ( direct)←(direct )+1 (Ri)←(Ri)+1 DPTR←DPTR+ 1 指令周期 1 1
该指令除了影响奇偶标志位P外,不影响其他标志位。 ADD A,#01H ;通过加法指令使累加器A内容加1
该指令同样会使累加器A内容加1,但这条指令将影响Cy、 OV、Ac以及P标志位,且该指令的机器码占用两个字节。
当操作数是某一I/O口,如“ INC P1 ”时,先将P1口锁存器 内容读出,加1后,再写入P1口锁存器中,因此INC Pi(i=0,1,2,3) 属于“读—改—写”指令。
加“6”调正后就是“100H”)。
例4-2-7:假设两位BCD码形式的被减数、减数分别存放在R1和 R2单元中,试编写一程序段求“R1-R2”,结果存放在R3单元中。 参考程序如下:
CLR
MOV
C
A, #9AH
; 清进位标志Cy
; 把BCD码“100”等效表示码送累加器A ; 计算“100-R2”,结果为BCD形式 ; 加被减数 ; 调整
值得注意的是:十进制调整指令一般放在加法指令后, 用于十进制加法调整,不能单独使用“DA A”指令将累加 器A中的内容转化为BCD码。 MCS-51没有提供BCD码减法调整指令,但可以通过 “补码”概念,将BCD码减法运算变成BCD码加法运算。 我们知道两位BCD可以表示00~99,需要用8位二进制存 放;三位BCD可以表示000~999,需要用12位二进制存 放;四位BCD可以表示0000~9999之间的数,需要用16 位二进制存放,因此: xy的“补码” XY-xy=XY+100-xy
BA←A×B
指令周期 4
被乘数放在累加器A(8位无符号数)中,乘数放在寄存 器B(8位无符号数)中,乘积(16位无符号数)的高8位放在寄 存器B中,低8位放在累加器A中。
该指令影响标志位:当结果大于255时,OV为1;反之 为0。进位标志Cy总为0;AC保持不变;奇偶标志P随累加 器A中“1”的个数变化而变化。
减1指令 DEC direct 1
DEC @Ri
1
没有对DPTR减1的指令,如果要完成对DPTR减1的操 作,则需要以下几条指令来完成:
CLR MOV SUBB MOV MOV SUBB MOV
C A,DPL A,#1 DPL,A A,DPH A,#00H DPH,A
6. 乘法指令
表4-2-3 MCS-51乘法指令 指令名称 A×B 指令格式 MUL AB 机器码 10100100 功能
(21H) (20H)
× (30H) (41H) (40H) + B A . (42H) (41H) (40H)
8. 十进制调整指令
表4-2-5 MCS-51十进制调整指令
指令名称 指令格式 机器码 功能
根据进位标志 Cy、辅助进位 标志Ac以及累 加器A中结果, 将累加器A内容 转化为BCD码形 式
ADD A,#data ;A← A + #data
例4-2-1:设A=D3H,(30H)=E8H 执行: ADD A,30H 无符号数 211
1101 0011 (D3) (-45)补
+) 1110 1000 (E8) (-24)补
= 1 1011 1011 (-69) 补
232
443
结果:Cy=1,AC=0,P=0,OV=0,A=BBH
DA
A
(低4位>9,加6 调整)
ADD
A,R1
0001 1000 + 0001 1001 0011 0001
(18)BCD (19)BCD (31)H
DA
A
(AC=1,加6 调整)
0011 0001 + 0000 0110 0011 0111
(31)H (06) (37)BCD
(2)同样,若累加器高4位大于9或者进位位标志Cy=1 (包括由于低4位调整后导致上述结果),则高4位加6调 整,即A ←A+60H。 例如:若作加法后A=9BH,Cy=0,AC=0,则执行 DA A 指令后,A的低4位作加6调整,调整后高4位为 1010,大于9,所以也需要调整: 1001 1011 + 0000 0110 1010 0001 + 0110 0000 1 0000 0001 低4位调整 高4位调整 (101)BCD
INC direct
INC @Ri INC DPTR
1
1 2
加1指令 不影响标志位 ,只有操作对象为累加器A时,才 影响奇偶标志位P。
当操作数初值为0FFH,则加1后,将变为00H。
尽管加1指令与加数为1的加法指令同样会使操作数增1,但 彼此并不完全相同,例如:
INC A ;通过增量指令使累加器A内容加1
在计算机中,通常把两位十进制数用一字节BCD码 来表示,这也叫做压缩BCD码。 如: (0101 1001)BCD = (59)D
十进制调整指令的原理(过程): (1)若累加器低4位大于9或者辅助进位位标志AC=1,则 低4位加6调整,即A ←A+06H。 ADD A,R1 0001 0111 + 0001 0101 0010 1100 0010 1100 + 0000 0110 0011 0010 (17)BCD (15)BCD (2C)H (2C)H (06) (32)BCD
40H, A
41H, A A,42H A,#00H
MOV
SJMP
42H, A

3.带借位减指令 SUBB A,Rn SUBB A,direct SUBB A,@Ri SUBB A,#data ;A← A - Rn - C ;A← A -(direct)- C ;A← A -(Ri)- C ;A← A - #data – C
7. 除法指令
表4-2-4 MCS-51除法指令
指令名称
A÷B
指令格式
DIV AB
机器码
10000100
功能
A(商)←A÷B B(余数)←A÷B
指பைடு நூலகம்周期
4
被除数放在累加器A(8位无符号数)中,除数放在寄存 器B(8位无符号数)中,商(8位无符号数)放在累加器A中, 余数(8位无符号数)放在寄存器B中。
方法一、部分积右移算法(略) 方法二、 7 × + 2 3 5 4 0
.
2 8 0
0
分析:将16位被乘数分为高8位和低8位,首先由低8位与8 位乘数相乘,积的低8位存入40H,高8位暂存于41H。再 用被乘数的高8位与乘数相乘,所得积的低8位与41H中暂 存的内容相加,高8位与Cy位相加存入42H作为积的高8位。 如下所示:
例4-2-5:试编制4位十六进制数减法程序:
(21H20H)-(31H30H)→ 41H40H
分析:先低字节作不带进位相减,再作带进位高字节减法。 流程图如下: main
(20H)-(30H) →(40H) (不带借位位)
(21H)-(31H) →(41H) (带借位位) 动态暂停
4.加1指令
表4-2-1 MCS-51加1指令
100的BCD需要用三位二进制存放,其中的1自然丢失。 当XY≥xy时,“XY+100-xy”就是XY-xy;当XY<xy时, “XY+100-xy”是“XY-xy”的补码。 为了能用减法指令求出“100-xy”的BCD码,可用 “9AH”表示“100-xy”算式中十进制数“100”(因为“9AH”
该指令影响标志位:如果除数(即寄存器B)不为0,执 行该指令后,溢出标志OV、进位标志Cy总为0;如果除 数为0,执行后,结果将不确定,且OV为1,Cy仍为0。 AC保持不变;奇偶标志P位随累加器A中“1”的个数变 化而变化。
例4-2-6:试编制乘法程序,完成如下计算:
(21H20H)×(30H)→ (42H41H40H)
例如,设A=39H,R0=20H,(20H)=32H,Cy=1,执行 指令 SUBB A,@R0后,A=06H。
例4-2-4:设(A)=49H,CY=1, 执行: SUBB A, #54H 0100 1001 (49H) 0101 0100 (54H) -) 1 1111 0100 (借位1) 结果:Cy=1,AC=0,P=1,OV=0,A=F4H(真值-12, 正确)
例4-2-3:试编制4位十六进制数加法程序,假定和数超过 双字节(21H20H)+(31H30H)→ 42H41H40H 分析:先低字节作不带进位求和,再作带进位高字节求和。 流程图(略),程序如下: MAIN: MOV ADD MOV MOV ADDC MOV MOV ADDC A, A, A, A, 20H 30H 21H 31H ;带低字节进位加法 ;准备处理最高位
相关文档
最新文档