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
  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 ;带低字节进位加法 ;准备处理最高位
相关文档
最新文档