022 MCS-51单片机的指令系统(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单片机的指令系统

整理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单片机指令系统

第一条指令为远查表指令,可以在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单片机原理及接口技术习题参考答案第一章绪论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系列单片机指令系统及汇编语言程序设计

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

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
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 ;带低字节进位加法 ;准备处理最高位