版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章MCS-51指令系统第3章 MCS-51指令系统 实训实训3 指令的应用指令的应用 3.1 简介简介 3.2 寻址方式寻址方式 3.3 指令系统指令系统 本章小结本章小结 习题习题3 第3章MCS-51指令系统实训实训3 指指令令的的应应用用1. 实训目的实训目的(1) 掌握指令格式及表示方法:助记符表示和机器码表示。(2) 了解人工汇编与机器汇编的方法。(3) 了解寻址方式的概念。(4) 掌握常用指令的功能及应用。2. 实训设备和器件实训设备和器件(1) 实训设备:单片机开发系统、微机等。(2) 实训电路:同实训1电路。第3章MCS-51指令系统3. 实训步骤与要求实训步骤与要求(1)
2、 将表3.1中的助记符指令翻译成机器码。(2) 将机器码分别输入到单片机开发系统中,或经机器汇编后分别下载到单片机开发系统中,单步运行,观察并记录实验板上的8个发光二极管的亮灭状态及相关单元的数据,填入表3.1中。第3章MCS-51指令系统表 3.1 实 验 表 格 题号 助记符指令 机器码指令 检查数据 发光二极管状态 MOV P1,#55H MOV 20H,#0F0H (20H)= MOV P1,20H MOV A,#0F0H A= MOV P1,A MOV R4,#0FH R4= MOV P1,R4 第3章MCS-51指令系统题号 助记符指令 机器码指令 检查数据 发光二极管状态 MOV
3、 20H,#0AAH (20H)= MOV R0,#20H R0= MOV P1,R0 MOV A,#55H A= MOV P1,A ANL A,#0FH A= MOV P1,A ORL A,#0F0H A= MOV P1,A CLR A A= MOV P1,A CPL A A= MOV P1,A MOV A,#01H A= MOV P1,A RL A A= MOV P1,A RL A A= MOV P1,A 第3章MCS-51指令系统4. 实训分析与总结实训分析与总结1) 指令形式从实训中可以看出,指令有两种形式:助记符指令和机器码指令(机器指令)。助记符指令只有翻译成机器码后,单片机才能直
4、接执行。机器码指令分为以下三种:单字节指令:机器码只有一个字节的指令称为单字节指令。例如单字节指令CLR A的机器码是E4H。双字节指令:机器码包括两个字节的指令称为双字节指令。例如双字节指令MOV A,#55H的机器码是74H 55H。三字节指令:机器码包括三个字节的指令称为三字节指令。例如三字节指令MOV P1,#55H的机器码是75H 90H 55H。单片机指令系统中,大多数指令是单字节指令和双字节指令。第3章MCS-51指令系统2) 指令分析(1) MOV P1,#55H:将常数55H送入P1口。在助记符指令中,常数被称为立即数。发光二极管的状态为立即数55H: 0 1 0 1 0 1
5、 0 1对应P1口各位:P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0相应的LED状态:亮 灭 亮 灭 亮 灭 亮 灭参照实训1的电路图,若P1口的某一位输出0(低电平),则经过反相后变为高电平,由外部电源VCC驱动发光二极管处于点亮状态;否则,二极管处于熄灭状态。第3章MCS-51指令系统(2) MOV 20H,#0F0H:将立即数0F0H送到内部RAM的20H单元中。MOV P1,20H:将20H单元的内容,即0F0H送到P1口。发光二极管的状态为0F0H: 1 1 1 1 0 0 0 0P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2
6、P1.1 P1.0LED状态: 灭 灭 灭 灭 亮 亮 亮 亮(3) MOV A,#0F0H: 将立即数0F0H送到累加器A中。MOV P1,A:将累加器A的内容,即0F0H送到P1口。发光二极管的状态同(2)。第3章MCS-51指令系统(4) MOV R4,#0FH: 将立即数0FH送到寄存器R4中。MOV P1,R4:将寄存器R4的内容,即0FH送到P1口。发光二极管的状态如下:0FH: 0 0 0 0 1 1 1 1P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0LED状态: 亮 亮 亮 亮 灭 灭 灭 灭 (5) MOV 20H,#0AAH:将立
7、即数0AAH送到内部RAM的20H单元中。 MOV R0,#20H:将立即数20H送到R0寄存器中。 MOV P1,R0:将R0所指向的20H单元的内容,即0AAH送到P1口中。发光二极管的状态如下:第3章MCS-51指令系统0AAH: 1 0 1 0 1 0 1 0P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0LED状态: 灭 亮 灭 亮 灭 亮 灭 亮(6) MOV A,#55H:将立即数55H送到累加器A中。MOV P1,A:将累加器A的内容,即55H送到P1口。发光二极管的状态同(1)。ANL A,#0FH:将累加器A的内容55H与立即数0FH
8、进行逻辑“与”操作,结果为05H,再送回累加器A中。MOV P1,A:将累加器A的内容,即05H送到P1口。发光二极管的状态如下:05H: 0 0 0 0 0 1 0 1P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0LED状态: 亮 亮 亮 亮 亮 灭 亮 灭第3章MCS-51指令系统ORL A,#0F0H:将累加器A的内容05H与立即数0F0H进行逻辑“或”操作,结果为0F5H,再送回累加器A中。MOV P1,A:将累加器A的内容,即0F5H送到P1口。发光二极管的状态如下:0F5H: 1 1 1 1 0 1 0 1P1口: P1.7 P1.6 P1
9、.5 P1.4 P1.3 P1.2 P1.1 P1.0LED状态: 灭 灭 灭 灭 亮 灭 亮 灭(7) CLR A:累加器清0。MOV P1,A:将累加器A的内容,即00H送到P1口。发光二极管的状态是全亮。CPL A:将A的内容00H按位取反,结果为0FFH。MOV P1,A:将累加器A的内容,即0FFH送到P1口。发光二极管的状态是全灭。第3章MCS-51指令系统(8) MOV A,#01H:将立即数01H送到累加器A中。MOV P1,A:将累加器A的内容,即01H送到P1口。发光二极管的状态如下:01H: 0 0 0 0 0 0 0 1P1口: P1.7 P1.6 P1.5 P1.4
10、P1.3 P1.2 P1.1 P1.0LED状态: 亮 亮 亮 亮 亮 亮 亮 灭RL A:移位指令,将A的内容01H循环左移一位,结果为02H。MOV P1,A:将累加器A的内容,即02H送到P1口。发光二极管的状态如下:02H: 0 0 0 0 0 0 1 0P1口: P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0LED状态: 亮 亮 亮 亮 亮 亮 灭 亮第3章MCS-51指令系统RL A:将A的内容02H左移一位,结果为04H。MOV P1,A:将累加器A的内容,即04H送到P1口。发光二极管的状态如下:02H: 0 0 0 0 0 1 0 0P1口:
11、P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0LED状态: 亮 亮 亮 亮 亮 灭 亮 亮3) 现象分析从实训2中看到以下现象:往P1口传送数据的指令中,数据的来源不尽相同。数据是指令的操作对象,叫做操作数。指令必须给出操作数所在的地方,才能进行数据传送。寻找操作数地址的方法,称为寻址方式。下面是在实训中遇到的采用了不同寻址方式的指令:MOV P1,#55H ;把操作数直接写在指令中,称为立即数寻址第3章MCS-51指令系统 MOV P1,20H ;把存放操作数的内存单元的地址直接写在指令;中,称为直接寻址MOV P1,A ;把操作数存放在寄存器中,称为寄存器寻
12、址MOV P1,R0 ;把存放操作数的内存单元的地址放在寄存器;R0中,这种寻址方式称为寄存器间接寻址除了以上4种寻址方式之外,MCS-51单片机还有变址寻址方式、相对寻址方式和位寻址方式等。思考:指出表3.1中每一条指令的寻址方式。注意:P1与寄存器R0R7、累加器A不同,它是内部RAM单元90H的符号地址,只能作为内存单元直接寻址。第3章MCS-51指令系统3.1 简简 介介3.1.1 指令概述指令概述3.1.2 指令格式指令格式从实训2中看到,不同指令翻译成机器码后字节数也不一定相同。按照机器码个数,指令可以分为以下三种: 操作码70操作码70操作码70数据或寻址方式70数据或寻址方式7
13、0数据或寻址方式70单字节指令:双字节指令:三字节指令:第3章MCS-51指令系统MCS-51单片机指令系统包括49条单字节指令、46条双字节指令和16条三字节指令。采用助记符表示的汇编语言指令格式如下:标号是程序员根据编程需要给指令设定的符号地址,可有可无;标号由18个字符组成,第一个字符必须是英文字母;标号后必须用冒号。操作码表示指令的操作种类,如MOV表示数据传送操作,ADD表示加法操作等。标号:操作码操作数或操作数地址;注释第3章MCS-51指令系统操作数或操作数地址表示参加运算的数据或数据的有效地址。操作数一般有以下几种形式:没有操作数项,即操作数隐含在操作码中,如RET指令;只有一
14、个操作数,如CPL A指令;有两个操作数,如MOV A,#00H指令,操作数之间以逗号相隔,前面的操作数称为目的操作数,后面的操作数称为源操作数;有三个操作数,如CJNE A,#00H,NEXT指令,操作数之间也以逗号相隔。注释是对指令的解释说明,用以提高程序的可读性。注释前必须加分号。第3章MCS-51指令系统3.2 寻寻 址址 方方 式式 1. 寄存器寻址寄存器寻址寄存器寻址是指将操作数存放于寄存器中。寄存器包括工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR等。例如,指令MOV R1,A的操作是把累加器A中的数据传送到寄存器R1中,其操作数存放在累加器A中,所以寻址方式为寄
15、存器寻址。如果程序状态寄存器PSW的RS1RS0=01(选中第一组工作寄存器,对应地址为08H0FH),设累加器A的内容为20H,则执行MOV R1,A指令后,内部RAM 09H单元的值就变为20H,如图3.1所示。第3章MCS-51指令系统图3.1 寄存器寻址示意图 第3章MCS-51指令系统寄存器寻址的寻址范围包括如下两部分:(1) 通用寄存器R0R7。MCS-51单片机中共有4组32个通用寄存器,但寄存器寻址只能使用当前寄存器组,指令中的寄存器名称也只能是R0R7。因此,在使用前,需要通过对PSW中的RS1、RS0位的状态进行设置,来选择当前寄存器组。单片机复位时,RS1RS0=00,选
16、中第0组工作寄存器。第3章MCS-51指令系统 (2) 部分专用寄存器。例如累加器A、寄存器B以及数据指针DPTR等。实训3中,采用寄存器寻址的指令如下:MOV P1,A;将累加器A的内容送到P1口MOV P1,R4 ;将寄存器R4的内容送到P1口CLR A;将累加器A清0CPLA;将累加器A中的内容取反RLA;将累加器A的内容循环左移第3章MCS-51指令系统2. 直接寻址直接寻址直接寻址是指把存放操作数的内存单元的地址直接写在指令中。在MCS-51单片机中,可以直接寻址的存储器主要有内部RAM区和特殊功能寄存器SFR区。例如,指令MOV A,3AH执行的操作是将内部RAM中地址为3AH的单
17、元内容传送到累加器A中,其操作数3AH就是存放数据的单元地址,因此该指令采用的是直接寻址方式。设内部RAM 3AH单元的内容是88H,那么指令MOV A,3AH的执行过程如图3.2所示。第3章MCS-51指令系统图3.2 直接寻址示意图 第3章MCS-51指令系统在直接寻址中,指令中直接给出了存放操作数的内部RAM地址,而不是操作数本身,其寻址范围只限于内部RAM中,包括如下两部分:(1) 内部RAM的低128单元,地址范围为00HFFH,在指令中直接以单元地址形式给出。例如:指令MOV A,3AH中,3AH表示内部RAM单元地址。(2) 专用寄存器。专用寄存器除以单元地址形式给出外,还可以用
18、寄存器符号形式给出。直接寻址是访问专用寄存器的惟一方法。实训3中,采用直接寻址的指令如下:MOV P1,20H;将20H单元的内容传送到P1口第3章MCS-51指令系统图3.3 立即数寻址示意图3. 立即数寻址立即数寻址立即数寻址是指将操作数直接写在指令中。例如,指令MOV A,#3AH执行的操作是将立即数3AH送到累加器A中,该指令就是立即数寻址。注意:立即数前面必须加“#”号,以区别立即数和直接地址。该指令的执行过程如图3.3所示。 3AHA3AH第3章MCS-51指令系统实训3中,采用立即数寻址的指令如下:MOVP1,#55H;将立即数55H送P1口MOV20H,#0F0H;将立即数0F
19、0H送20H单元MOVA,#0F0H;将立即数0F0H送累加器A中MOVR4,#0FH;将立即数0FH送寄存器R4中MOVR0,#20H;将立即数20H送寄存器R0中ANL A,#0FH;将累加器A的内容与立即数0FH进行逻辑与操作ORL A,#0F0H;将累加器A的内容与立即数0F0H进行逻辑或操作MOVA,#01H;将立即数01H送累加器A中MOV A,#55H;将立即数55H送累加器A中第3章MCS-51指令系统 除了以上给出的8位立即数寻址的指令例子外,MCS-51指令系统中还有一条16位立即数寻址指令,该指令为 MOV DPTR,#2000H;把16位立即数2000H传送到数据指针D
20、PTR中第3章MCS-51指令系统4. 寄存器间接寻址寄存器间接寻址寄存器间接寻址是指将存放操作数的内存单元的地址放在寄存器中,指令中只给出该寄存器。执行指令时,首先根据寄存器的内容,找到所需要的操作数地址,再由该地址找到操作数并完成相应操作。在MCS-51指令系统中,用于寄存器间接寻址的寄存器有R0、R1和DPTR,它们被称为寄存器间接寻址寄存器。注意:间接寻址寄存器前面必须加上符号“”。 第3章MCS-51指令系统例如,指令MOV A,R0执行的操作是将R0的内容作为内部RAM的地址,再将该地址单元中的内容取出来送到累加器A中。设R0=3AH,内部RAM 3AH中的值是65H,则指令MOV
21、 A,R0的执行结果是累加器A的值为65H,该指令的执行过程如图3.4所示。第3章MCS-51指令系统图3.4 寄存器间接寻址示意图 第3章MCS-51指令系统寄存器间接寻址的寻址范围如下:(1) 内部RAM的低128字节。对内部RAM的低128字节单元的间接寻址,只能使用R0或R1作间接寻址寄存器,其通用形式为Ri(i=0或1)。(2) 外部RAM的64 K字节。对外部RAM的64 K字节的间接寻址,使用DPTR作间接寻址寄存器,其形式为DPTR。例如:MOVX A,DPTR,其功能是把由DPTR指定的外部RAM单元的内容送到累加器A中。第3章MCS-51指令系统(3) 外部RAM的低256
22、字节。外部RAM的低256字节是一个特殊的寻址区,除了可以使用DPTR作间接寻址寄存器外,还可以使用R0或R1作间接寻址寄存器,例如MOVX A,R0,即把由R0指定的外部RAM单元的内容传送到累加器A中。实训3中,采用寄存器间接寻址的指令如下:MOV P1,R0;将R0所指的存储单元的内容送P1口第3章MCS-51指令系统5. 变址寻址变址寻址变址寻址是指将基址寄存器与变址寄存器的内容相加,结果作为操作数的地址。DPTR或PC是基址寄存器,累加器A是变址寄存器。该类寻址方式主要用于查表操作。例如,指令MOVC A,A+DPTR执行的操作是将累加器A和基址寄存器DPTR的内容相加,相加结果作为
23、操作数存放的地址,再按照该地址将操作数取出来送到累加器A中。设累加器A=02H,DPTR=0300H,外部ROM中,0302H单元的内容是55H,则指令MOVC A,A+DPTR的执行结果是累加器A的内容为55H。该指令的执行过程如图3.5所示。第3章MCS-51指令系统图3.5 变址寻址示意图 第3章MCS-51指令系统对变址寻址方式说明如下:(1) 变址寻址是专门针对程序存储器的寻址方式,所以只能对程序存储器进行寻址,寻址范围为64 K字节。(2) 变址寻址的指令只有2条:MOVC A,A+DPTRMOVC A,A+PC(3) 尽管变址寻址比较复杂,但变址寻址的指令都是一字节指令。第3章M
24、CS-51指令系统6. 相对寻址相对寻址相对寻址是指将程序计数器PC的当前内容与指令中的操作数相加,其结果作为跳转指令的转移地址(也称目的地址)。该类寻址方式主要用于跳转指令。第3章MCS-51指令系统例如,指令SJMP 54H执行的操作是将PC当前的内容与54H相加,结果再送回PC中,成为下一条将要执行指令的地址。设指令SJMP 54H的机器码80H 54H存放在2000H处,当执行到该指令时,先从2000H和2001H单元取出指令,PC自动变为2002H;再把PC的内容与操作数54H相加,形成目标地址2056H,再送回PC,使得程序跳转到2056H单元继续执行。该指令的执行过程如图3.6所
25、示。相对寻址是专门为改变程序执行方向而设置的,程序执行的方向由程序计数器PC控制,在程序顺序执行过程中,PC自动加1,按照指令的存放顺序逐一执行;而相对寻址则会修改PC的值,从而使程序跳转到新的目的地址执行。第3章MCS-51指令系统图3.6 相对寻址示意图第3章MCS-51指令系统7. 位寻址位寻址位寻址是指按位进行的寻址操作,而上述介绍的指令都是按字节进行的寻址操作。MCS-51单片机中,操作数不仅可以按字节进行操作,也可以按位进行操作。当我们把某一位作为操作数时,这个操作数的地址称为位地址。例如,指令SETB 3DH执行的操作是将内部RAM位寻址区中的3DH位置1。设内部RAM 27H单
26、元的内容是00H,执行SETB 3DH后,由于3DH对应内部RAM 27H的第5位,因此该位变为1,也就是27H单元的内容变为20H。该指令的执行过程如图3.7所示。第3章MCS-51指令系统图3.7 位寻址示意图内部RAM27H二进制 10 0 1 0 0 0 0 0第3章MCS-51指令系统位寻址区包括专门安排在内部RAM中的如下两个区域:(1) 内部RAM的位寻址区,地址范围是20H2FH,共16个RAM单元,每个单元包括8个位,共计128个位,位地址为00H7FH。对这128个位有两种表示方式:一是位地址,例如:SETB 3DH;二是单元地址加位的方式,即点操作符写法,例如:SETB
27、27H.5。第3章MCS-51指令系统(2) 特殊功能寄存器SFR中的11个寄存器可以位寻址,包括83个位(相关内容可参见有关章节中位地址定义的内容)。对这些位在指令中有如下4种表示方法: 直接使用位地址,例如:MOV C,0D0H。 点操作符表示法,例如:MOV C,0D0H.0。 位名称表示法,例如:MOV C,P。 专用寄存器符号与点操作符表示法,例如:MOV C,PSW.0。第3章MCS-51指令系统8. MCS-51单片机寻址方式小结单片机寻址方式小结以上介绍了MCS-51单片机的7种寻址方式,每一种寻址方式都有各自不同的寻址区域和特点,在此归纳总结如表3.2所示。第3章MCS-51
28、指令系统表表3.2 MCS-51单片机寻址方式小结单片机寻址方式小结寻址方式 定义 寻 址 区 域 指令举例 寄存器 寻址 操作数存放于寄存器中,指令中给出寄存器名 (1) 通用寄存器 R0R7; (2) 部分专用寄存器,例如累加器A、寄存器 B 以及数据指针 DPTR 等 MOV A,R1 MOV P1,R4 CLR A 直接寻址 存放操作数的内存单元地址直接写在指令中 (1) 内部 RAM 中的低 128 地址单元,地址范围为00HFFH; (2) 专用寄存器。专用寄存器除以单元地址形式给出外,还可以以寄存器符号形式给出 MOV A,P1 MOV R1,20H 立即数 寻址 操作数直接写在
29、指令中 源操作数为立即数,立即数前面必须加“#”号,以区别立即数和直接地址 MOV P1,#55H MOV DPTR, #2000H 寄存器 间接寻址 将存放操作数的内存单元的地址放在寄存器中,指令中只给出该寄存器 (1) 内部 RAM 的低 128 字节。对内部 RAM 的低128 字节单元的间接寻址, 只能使用R0 或 R1 作间接寻址寄存器,其通用形式为Ri(i=0 或 1); (2) 外部 RAM 的 64 K 字节。对外部 RAM 的 64 K字节的间接寻址,使用DPTR 作间接寻址寄存器,其形式为DPTR; (3) 外部 RAM 的低 256 字节。外部 RAM 的低 256字节是
30、一个特殊的寻址区, 除了可以使用DPTR 作间接寻址寄存器外,还可以使用 R0 或 R1 作间接寻址寄存器 MOV A,R0 MOVX A,DPTR MOVX A,R0 第3章MCS-51指令系统变址寻址 将基址寄存器与变址寄存器 的 内 容 相加,结果作为操作数的地址 (1) 变址寻址是专门针对程序存储器的寻址方式,所以只能对程序存储器进行寻址,寻址范围为 64 K字节; (2) 变址寻址的指令只有 2 条: MOVC A,A+PC MOVC A,A+DPTR MOVC A,A+PC 相对寻址 将程序计数器 PC 的当前内容与指令中的 操 作 数 相加,其结果作为跳转指令的转移地址 专门为改
31、变程序执行方向而设置的 SJMP 54H 位寻址 按位进行的操作 (1) 内部RAM的位寻址区, 地址范围是20H2FH,共 16 个 RAM 单元,每个单元包括 8 个位,共计 128个位,位地址为 00H7FH; (2) 特殊功能寄存器 SFR 中的 11 个寄存器可以位寻址,包括 83 个位 MOV C,0D0H MOV C,0D0H.0 MOV C,P MOV C,PSW.0 注:指令举例中,寻址方式是指源操作数的寻址方式。第3章MCS-51指令系统3.3 指指 令令 系系 统统MCS-51单片机指令系统包括111条指令,按功能可以划分为以下5类: 数据传送指令(29条)。 算术运算指
32、令(24条)。 逻辑运算及移位指令(24条)。 控制转移指令(17条)。 位操作指令(17条)。第3章MCS-51指令系统3.3.1 指令系统中的符号说明指令系统中的符号说明指令的书写必须遵守一定的规则,为了叙述方便,我们采用表3.3的约定。第3章MCS-51指令系统表表3.3 指令描述约定指令描述约定 符 号 含 义 Rn 表示当前选定寄存器组的工作寄存器R0R7 Ri 表示作为间接寻址的地址指针R0R1 #data 表示 8 位立即数,即 00HFFH #data16 表示 16 位立即数,即 0000HFFFFH addr16 表示 16 位地址,用于 64 K 范围内寻址 addr11
33、 表示 11 位地址,用于 2 K 范围内寻址 direct 8 位直接地址,可以是内部 RAM 区的某一单元或某一专用功能寄存器的地址 Rel 带符号的 8 位偏移量(-128+127) Bit 位寻址区的直接寻址位 (X) X 地址单元中的内容,或 X 作为间接寻址寄存器时所指单元的内容 将后面的内容传送到前面去 第3章MCS-51指令系统3.3.2 数据传送类指令数据传送类指令 数据传送指令是MCS-51单片机汇编语言程序设计中使用最频繁的指令,包括内部RAM、寄存器、外部RAM以及程序存储器之间的数据传送。 数据传送操作是指把数据从源地址传送到目的地址,源地址内容不变,即第3章MCS-
34、51指令系统数据传送类指令分类如图3.8所示. 图3.8 数据传送指令分类第3章MCS-51指令系统1. 内部内部8位数据传送指令位数据传送指令(15条条)内部8位数据传送指令共15条,主要用于MCS-51单片机内部RAM与寄存器之间的数据传送。指令基本格式: MOV ,1) 以累加器A为目的地址的传送指令(4条)助记符格式 机器码(B) 相应操作 指令说明 机器周期 MOV A,Rn 11101rrr ARn n=07,rrr=000111 1 MOV A,direct 11100101 direct A (direct) 1 MOV A,Ri 1110011i A (Ri) i=0,1 1
35、 MOV A,#data 01110100 data A #data 1 第3章MCS-51指令系统例3.1 已知相应单元的内容如下,请指出每条指令执行后相应单元内容的变化。第3章MCS-51指令系统(1) MOV A,#20H (2) MOV A,40H(3) MOV A,R0(4) MOV A,R0解:(1) MOV A,#20H执行后A=20H。(2) MOV A,40H执行后A=30H。(3) MOV A,R0执行后A=50H。(4) MOV A,R0执行后A=10H。第3章MCS-51指令系统助记符格式 机器码(B) 相应操作 指令说明 机器周期 MOV Rn,A 11111rrr
36、Rn A n=07,rrr=000111 1 MOV Rn,direct 10101rrr direct Rn (direct) n=07,rrr=000111 1 MOV Rn,#data 01111rrr data Rn #data n=07,rrr=000111 1 2) 以Rn为目的地址的传送指令(3条)第3章MCS-51指令系统3) 以直接地址为目的地址的传送指令(5条)助记符格式 机器码(B) 相应操作 指令说明 机器周期 MOV direct,A 11111010 direct (direct) A 1 MOV direct,Rn 10001rrr direct (direct
37、)Rn n=07, rrr=000111 1 MOV direct2,direct1 10000101 direct1 direct2 (direct2) direct1 2 MOV direct,Ri 1000011i direct (direct )(Ri) i=0,1 2 MOV direct,#data 01110101 direct data (direct)#data 2 注意:以上传送指令的结果不影响程序状态字寄存器PSW标志。第3章MCS-51指令系统4) 以寄存器间接地址为目的地址的传送指令(3条)助记符格式 机器码(B) 相应操作 指令说明 机器周期 MOV Ri,A 11
38、11011i (Ri)A i=0,1 1 MOV Ri,direct 1110011i direct (Ri)(direct) 2 MOV Ri,#data 0111010i data (Ri)#data 1 注意:以上传送指令的结果不影响程序状态字寄存器PSW标志。第3章MCS-51指令系统例3.2 已知相应单元的内容如下,请指出下列指令执行后各单元内容相应的变化。(1) MOV A,R6 (2) MOV R6,70H(3) MOV 70H,50H(4) MOV 40H,R0(5) MOV R1,#88H第3章MCS-51指令系统第3章MCS-51指令系统解:解:(1) MOV A,R6执行
39、后A=30H。(2) MOV R6,70H执行后R6=40H。(3) MOV 70H,50H执行后(70H)=60H。(4) MOV 40H,R0执行后(40H)=60H。(5) MOV R1,#88H执行后(66H)=88H。第3章MCS-51指令系统助记符格式 机器码(B) 相应操作 指令说明 机器周期 MOV DPTR,#data16 10010000 data158 data70 (DPTR) #data16 把 16 位常数装入数据指针 2 注意:以上指令结果不影响程序状态字寄存器PSW标志。2. 16位数据传送指令位数据传送指令(1条条)第3章MCS-51指令系统3. 外部数据传送
40、指令外部数据传送指令(4条条)助记符格式 机器码(B) 相应操作 指令说明 机器周期 MOVX A,DPTR 11100000 A(DPTR) 把DPTR 所对应的外部 RAM 地址中的内容传送给累加器 A 2 MOVX A,Ri 1110001i A (Ri) i=0,1 2 MOVX DPTR,A 11110000 (DPTR) A 结果不影响 P 标志 2 MOVX Ri,A 1110001i (Ri) A i=0,1,结果不影响 P 标志 2 注意: 外部RAM只能通过累加器A进行数据传送。 累加器A与外部RAM之间传送数据时只能用间接寻址方式,间接寻址寄存器为DPTR、R0、R1。
41、以上传送指令结果(未注明的)通常影响程序状态字寄存器PSW的P标志。第3章MCS-51指令系统例3.3 把外部数据存储器2040H单元中的数据传送到外部数据存储器2560H单元中去。解:MOV DPTR,#2040HMOVX A,DPTR;先将2040H单元的内容传送到累加器A中MOV DPTR,#2560HMOVX DPTR,A;再将累加器A中的内容传送到2560H单元中第3章MCS-51指令系统助记符格式 机器码(B) 相应操作 指令说明 机器周期 XCH A,Rn 11001rrr ARn A 与 Rn 内容互换 1 XCH A,direct 11000101 direct A(dire
42、ct) 1 XCH A,Ri 1100011i A(Ri) i=0,1 1 注意:以上指令结果影响程序状态字寄存器PSW的P标志。2) 低半字节交换指令(1 条) 助记符格式 机器码(B) 相应操作 指令说明 机器周期 XCHD A,Ri 1101011i A30(Ri)30 低 4 位交换,高 4 位不变 1 注意:以上指令结果影响程序状态字寄存器 PSW 的 P 标志。 3) 累加器 A 中高 4 位和低 4 位交换(1 条) 助记符格式 机器码(B) 相应操作 指令说明 机器周期 SWAP A 11000100 A 30A74 高、低 4 位互相交换 1 注意:以上指令结果不影响程序状态
43、字寄存器 PSW 标志。 4. 交换和查表类指令交换和查表类指令(9条条)1) 字节交换指令(3条)第3章MCS-51指令系统例3.4 设内部数据存储区2AH、2BH单元中连续存放有4个BCD码(1个BCD码占4位),试编写一程序把这4个BCD码倒序排序,即第3章MCS-51指令系统解:MOV R0,#2AH;将立即数2AH传送到寄存器R0中 MOV A,R0;将2AH单元的内容传送到累加器A中 SWAP A;将累加器A中的高4位与低4位交换 MOV R0,A;将累加器A的内容传送到2AH单元中 MOV R1,#2BH MOV A,R1;将2BH单元的内容传送到累加器A中 SWAP A ;将累
44、加器A中的高4位与低4位交换XCH A,R0;将累加器A中的内容与2AH单元的内容交换 MOV R1,A;将累加器A的内容传送到2BH单元第3章MCS-51指令系统助记符格式 机器码(B) 相应操作 指令说明 机器周期 MOVC A,A+PC 10000011 A (A+PC) A+PC 所指外部程序存储单元内容送 A 2 MOVC A,A+DPTR 10010011 A (A+DPTR) A+DPTR 所指外部程序存储单元内容送 A 2 注意: 以上指令结果影响程序状态字寄存器PSW的P标志。 查表指令用于查找存放在程序存储器中的表格。4) 查表指令(2条)第3章MCS-51指令系统5) 堆
45、栈操作指令(2条)助记符格式 机器码(B) 相应操作 指令说明 机器周期 PUSH direct 11000000 direct SPSP+1 (SP)(direct) 将 SP 加 1,然后将源地址单元中的数传送到 SP 所指示的单元中去 2 POP direct 11010000 direct (direct) (SP) SPSP-1 将 SP 所指示的单元中的数传送到direct 地址单元中,然后 SPSP-1 2 第3章MCS-51指令系统注意: 堆栈是用户自己设定的内部RAM中的一块专用存储区,使用时一定先设堆栈指针,堆栈指针缺省为SP=07H。 堆栈遵循后进先出的原则安排数据。 堆
46、栈操作必须是字节操作,且只能直接寻址。将累加器A入栈、出栈指令可以写成:PUSH/POP ACC 或 PUSH/POP 0E0H而不能写成:PUSH/POP A 堆栈通常用于临时保护数据及子程序调用时保护现场和恢复现场。 以上指令结果不影响程序状态字寄存器PSW标志。第3章MCS-51指令系统例3.5 设堆栈指针为30H,把累加器A和DPTR中的内容压入,然后根据需要再把它们弹出,编写实现该功能的程序段。解: MOV SP,#30H ;设置堆栈指针,SP=30H为栈底地址PUSHACC ;SP+1SP,SP=31H,ACC (SP)PUSH DPH ;SP+1SP,SP=32H,DPH (SP
47、)PUSH DPL ;SP+1SP,SP=33H,DPL (SP)POP DPL ;(SP)DPL,SP-1SP,SP=32HPOP DPH;(SP)DPH,SP-1SP,SP=31HPOP ACC;(SP)ACC,SP-1SP,SP=30H第3章MCS-51指令系统3.3.3 算术运算类指令算术运算类指令算术运算类指令分类如图3.9所示。图3.9 算术运算类指令分类第3章MCS-51指令系统1. 加、减法指令加、减法指令(22条条)1) 加法指令(8条)助记符格式 机器码(B) 相应操作 指令说明 机器周期 ADD A,Rn 00101rrr AA+Rn n=07,rrr=000111 1
48、ADD A,direct 00100101 AA+(direct) 1 ADD A,Ri 0010011i AA+(Ri) i=0,1 1 ADD A,#data 00100100 data AA+#data 1 ADDC A,Rn 00111rrr AA+Rn+CY n=07,rrr=000111 1 ADDC A,direct 00110101 direct AA+(direct)+CY 1 ADDC A,Ri 0011011i AA+(Ri)+CY i=0,1 1 ADDC A,#data 00110100 data AA+#data+CY 1 第3章MCS-51指令系统2) 减法指令(
49、4条)助记符格式 机器码(B) 相应操作 指令说明 机器周期 SUBB A,Rn 1001rrr AA-Rn-CY n=07,rrr=000111 1 SUBB A,direct 10010101 direct AA-(direct)-CY 1 SUBB A,Ri 1001011i AA- (Ri)-CY i=0,1 1 SUBB A,#data 10010100 data AA-#data-CY 1 注意: 减法指令中没有不带借位的减法指令,所以在需要时,必须先将CY清0。 指令执行结果均在累加器A中。 以上指令结果均影响程序状态字寄存器PSW的CY、OV、AC和P标志。第3章MCS-51指
50、令系统 高 8 位 低 8 位 1 2 A 4 H A4H + E7H = 8BH 进位 1 + 0 F E 7 H 12H + 0FH + 1 = 22H 2 2 8 B 进位 1 1 1 加法指令 ADDC ADD 例3.6 编写计算12A4H+0FE7H的程序,将结果存入内部RAM 41H和40H单元,40H存低8位,41H存高8位。解:单片机指令系统中只提供了8位的加减法运算指令,两个16位数(双字节)相加可分为两步进行,第一步先对低8位相加,第二步再对高8位相加。第3章MCS-51指令系统 程序如下:MOV A,#0A4H ;被加数低8位AADD A,#0E7H ;加数低8位E7H与
51、之相加,A=8BH,CY=1MOV 40H,A;A(40H),存低8位结果MOV A,#12H ;被加数高8位AADDC A,#0FH;加数高8位+A+CY,A=22HMOV 41H,A;存高8位运算结果第3章MCS-51指令系统注意: 该指令结果影响程序状态字寄存器PSW的CY、OV、AC和P标志。3) BCD码调整指令(1条)第3章MCS-51指令系统 BCD(Binary Coded Decimal)码是用二进制形式表示十进制数,例如十进制数45的BCD码形式为45H。BCD码只是一种表示形式,与其数值没有关系。BCD码用4位二进制码表示一位十进制数,这4位二进制数的权为8421,所以B
52、CD码又称为8421码。十进制数码09所对应的BCD码如表3.4所示。表表3.4 十进制数码与十进制数码与BCD码的对应表码的对应表十进制数码 0 1 2 3 4 5 6 7 8 9 二进制码 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 第3章MCS-51指令系统在表3.4中,用4位二进制数表示一个十进制数位,例如56D和87D的BCD码表示为0101 0110 (56D)1000 0111 (87D)0001 0100 0011 (143D) DA A指令将A中的二进制码自动调整为BCD码。 DA A指令只能跟在ADD或ADDC加法指令
53、后,不适用于减法。第3章MCS-51指令系统例3.7 说明指令MOV A,#05H和ADD A,#08H及DA A的执行结果。解:MOV A,#05H ;05HA ADD A,#08H ;05H+08HA,A=0DH DA A ;自动调整为BCD码,A=13H第3章MCS-51指令系统4) 加1减1指令(9条)助记符格式 机器码(B) 相应操作 指令说明 机器周期 INC A 00000100 AA+1 影响 PSW 的 P 标志 1 INC Rn 00001rrr RnRn+1 n=07,rrr=000111 1 INC direct 00000101 direct (direct)(dir
54、ect)+1 1 INC Ri 0000011i (Ri)(Ri)+1 i=0,1 1 INC DPTR 10100011 DPTRDPTR+1 2 DEC A 00010100 AA-1 影响 PSW 的 P 标志 1 DEC Rn 00011rrr RnRn-1 n=07,rrr=000111 1 DEC direct 00010101 direct (direct)(direct)-1 1 DEC Ri 0001011i (Ri)(Ri)-1 i=0,1 1 注意:以上指令结果通常不影响程序状态字寄存器PSW。第3章MCS-51指令系统例3.8 分别指出指令INC R0和INC R0的执
55、行结果。设R0=30H,(30H)=00H。解:INC R0 ;R0+1=30H+1=31HR0,R0=31H INC R0 ;(R0)+1=(30H)+1(R0),(30H)=01H,;R0中内容不变第3章MCS-51指令系统2. 乘、除法指令乘、除法指令1) 乘法指令(1条)助记符格式 机器码(B) 相应操作 指令说明 机器周期 MUL AB 10100100 BAAB 无符号数相乘,乘积高 8 位存 B,低8 位存 A 4 注意:乘法指令结果影响程序状态字寄存器PSW的OV(积超过0FFH则置1,否则为0)和CY(总是清0)以及P标志。第3章MCS-51指令系统2) 除法指令(1条)助记
56、符格式 机器码(B) 相应操作 指令说明 机器周期 DIV AB 10000100 AA/B 的商 BA/B 的余数 无符号数相除,商存 A,余数存 B 4 注意: 除法指令结果影响程序状态字寄存器PSW的OV(除数为0则置1,否则为0)和CY(总是清0)以及P标志。 当除数为0时结果不能确定。第3章MCS-51指令系统3.3.4 逻辑运算及移位类指令逻辑运算及移位类指令逻辑运算及移位类指令逻辑运算指令循环移位指令(4条):RL、RLC、RR、RRC逻辑与指令(6条):ANL逻辑或指令(6条):ORL逻辑异或指令(6条):XRL累加器A清0和取反指令(2条):CLR、CPL逻辑运算及移位类指令
57、分类如图3.10所示。第3章MCS-51指令系统图3.10 逻辑运算及移位类指令分类第3章MCS-51指令系统1. 逻辑运算指令逻辑运算指令(20条条)1) 逻辑与指令(6条)助记符格式 机器码(B) 相应操作 指令说明 机器周期 ANL A,direct 01010101 direct AA(direct) 按位相与 1 ANL A,Rn 01011rrr AARn n=07,rrr=000111 1 ANL A,Ri 0101011i AA(Ri) i=0,1 1 ANL A,#data 01010100 data AA#data 1 ANL direct,A 01010010 direc
58、t (direct)(direct)A 不影响 PSW 的 P 标志 1 ANL direct, #data 01010011 direct data (direct)(direct)#data 不影响 PSW 的 P 标志 2 注意: 以上指令结果通常影响程序状态字寄存器PSW的P标志。 逻辑与指令通常用于将一个字节中的指定位清0,其它位不变。第3章MCS-51指令系统2) 逻辑或指令(6条)助记符格式 机器码(B) 相应操作 指令说明 机器周期 ORL A,direct 01000101 direct AA(direct) 按位相或 1 ORL A,Rn 01001rrr AARn n=0
59、7,rrr=000111 1 ORL A,Ri 0100011i AA(Ri) i=0,1 1 ORL A,#data 01000100 data AA#data 1 ORL direct,A 01000010 direct (direct)(direct)A 不影响 PSW 的 P 标志 1 ORL direct,#data 01000011 direct data (direct) (direct)#data 不影响 PSW 的 P 标志 2 注意: 以上指令结果通常影响程序状态字寄存器PSW的P标志。 逻辑或指令通常用于将一个字节中的指定位置1,其余位不变。第3章MCS-51指令系统3)
60、 逻辑异或指令(6条)助记符格式 机器码(B) 相应操作 指令说明 机器周期 XRL A,direct 01100101 direct AA(direct) 按位相异或 1 XRL A,Rn 01101rrr AARn n=07,rrr=000111 1 XRL A,Ri 0110011i AA (Ri) i=0,1 1 XRL A,#data 01100100 data AA#data 1 XRL direct,A 01100010 direct (direct)(direct)A 不影响 PSW 的 P 标志 1 XRL direct,#data 01100011 direct data
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024商业贷款续期协议模板
- 常年法律顾问服务协议模板2024
- 2024年个人房产买卖协议参考格式
- 2024建筑砌筑施工劳务协议范例
- 定制化健身私教服务协议:2024年
- 2024年货物买卖转让协议模板
- 安装工程劳务分包空调项目协议
- 2024年度医疗器械购销协议
- 2024年款飞机租赁协议范本
- 名词讲解课件教学课件
- 电动葫芦出厂检验报告
- 找次品-华应龙老师课件
- 风电工程项目质量控制管理
- 中小学德育工作评价细则
- 下穿式隧道建设工程监理实施细则
- DB1506T 13-2020 热力站建设技术标准
- 10、20以内加减法口诀表(打印)
- 中药材种植计划书
- 《现代商务礼仪》课程标准(中职)
- ZX7系列手工焊机说明书
- 解放战争-第二次国共内战
评论
0/150
提交评论