单片机不挂科-2-单片机指令.pdf

上传人:暗伤 文档编号:4238111 上传时间:2021-07-02 格式:PDF 页数:95 大小:1,005.81KB
返回 下载 相关 举报
单片机不挂科-2-单片机指令.pdf_第1页
第1页 / 共95页
单片机不挂科-2-单片机指令.pdf_第2页
第2页 / 共95页
点击查看更多>>
资源描述

《单片机不挂科-2-单片机指令.pdf》由会员分享,可在线阅读,更多相关《单片机不挂科-2-单片机指令.pdf(95页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、单片机指令系统 不挂科 单片机 第二讲 不挂科 3大模块11道题目 单片机 汇编语言介绍模块1 指令寻址方式模块2 指令分类介绍模块3 单片机 指令系统 2.单片机指令系统不挂科 单片机 指令分类 指令格式 小节1 小节2 伪指令小节3 汇编语言介绍 1.汇编语言介绍不挂科 单片机 2.单片机指令系统 不挂科 单片机 1.汇编语言介绍2.单片机指令系统 指令格式小节2 伪指令小节3 汇编语言介绍 指令分类小节1 1.指令分类 指令分类 不挂科 单片机 1.汇编语言介绍2.单片机指令系统 指令是规定计算机基本操作的语句或命令。 按指令所占字节数划分: 按指令执行时间划分: 单机器周期(12个振荡

2、周期)64条 四机器周期(48个振荡周期)2条 双机器周期(24个振荡周期)45条 单字节指令,有49条 双字节指令,有45条 三字节指令,有17条 1.指令分类 指令分类 不挂科 单片机 1.汇编语言介绍2.单片机指令系统 按指令功能划分: 数据传送类指令(29条) 算术运算类指令(24条) 逻辑运算及移位类指令(24条) 控制转移类指令(17条) 位操作类指令(17条) 不挂科 单片机 1.汇编语言介绍2.单片机指令系统 指令分类小节1 伪指令小节3 指令格式小节2 汇编语言介绍 2.指令格式 指令格式 不挂科 单片机 1.汇编语言介绍2.单片机指令系统 指令一般分为两部分:操作码和操作数

3、 操作码:规定指令进行什么操作。 操作数:表示指令操作的对象,可以是数或是数据所在地址,但最终对象都是数据。 汇编语言格式为:标号: 操作码助记符 目的操作数, 源操作数 ;注释 例:MAIN: MOV A , #20H ; # 通用格式:助记符 , 传送指令的约定:从右向左传送数据,是将源操作数送到目的操作数。 指令执行后,源操作数不变,目的操作数被源操作数取代。 direct:8位的内部数据存储器单元中的地址,可以是内部RAM单元地址或专用寄存器地址。 2.指令格式 描述符 不挂科 单片机 1.汇编语言介绍2.单片机指令系统 例:75H、0A5H、P1 Rn:当前选中的寄存器组中的8个工作

4、寄存器R0R7(n=07)。 Ri:当前选中的寄存器组中的可作为间接寻址寄存器使用的2个工作寄存器R0、R1。 例:#75H、#80H、#0A5H#data:包含在指令中的8位立即数。 例:#2480H、 #0D256H#data16:包含在指令中的16位立即数。 2.指令格式 描述符 不挂科 单片机 1.汇编语言介绍2.单片机指令系统 addr16:16位目的地址。 用于长转移指令中,能转移到64KB程序存储器地址空间的任何地方。 addr11:11位目的地址。 目的地址应与下一条指令第一个字节在同一个2KB程序存储器的地址空间之内。 rel:8位带符号的偏移字节,简称偏移量。 偏移量相对于

5、下一条指令的第一个字节计算,在-128+127范围内取值。 注意:若十六进制的操作数以字符AF中的某个开头时,则需要在 #0FH:表示十六进制立即数#12 :表示十进制立即数 #00001010B:表示二进制立即数 例: 它前面加一个“0”,以便在汇编时把它和字符AF区别开来。 不挂科 单片机 1.汇编语言介绍2.单片机指令系统 伪指令小节3 汇编语言介绍 指令分类小节1 指令格式小节2 伪指令介绍 如果不用ORG规定,则汇编得到的目标程序将从0000H开始。 不挂科 单片机 3.伪指令1.汇编语言介绍2.单片机指令系统 假如ORG规定了标号MAIN代表地址2000H,即目标程序的第一条指令从

6、2000H开始。 ORG: 指令地址源程序 ORG 2000H MAIN: MOV A, R0 例: 1起始伪指令Origin, 指明程序和数据块起始地址。 2000H 2002H MOV R0, #30H 伪指令介绍 不挂科 单片机 3.伪指令1.汇编语言介绍2.单片机指令系统 注意:在一个源程序中只能存在一条END命令,并且只能位于程序的后面。 END: 汇编结束伪指令。 例:START: END 2 伪指令介绍 不挂科 单片机 3.伪指令1.汇编语言介绍2.单片机指令系统 赋值命令EQU(EQUate) 该命令用于给字符名称赋值。赋值后,其值在整个程序中有效。 命令格式为:EQU 其中可

7、以是常数、地址、标号或表达式,其值为8位或16位二进制数。 X1 EQU 2000H X2 EQU 0FH MOV DPTR, #X1 ADD A, #X2 例: 赋值以后的字符名称既可以做地址使用,也可以做立即数使用。 3 MAIN: 伪指令介绍 不挂科 单片机 3.伪指令1.汇编语言介绍2.单片机指令系统 该命令用于从指令的地址开始,在程序存储器的连续单元中定义字节数据。 命令格式为: DB 可以是1字节常数或字符,或用逗号分开的字节串,或用引号括起来的字符串。 常使用本命令存放数据表格。 DB C0H, F9H, A4H, B0H DB 99H, 92H, 82H, F8H DB 80H

8、, 90H, 88H, 83H DB C6H, A1H, 86H, 84H 定义字节命令DB(Defi ne Byte)4 例如,存放数码管显示的十六进制的字码,可使用多条DB命令定义为: 伪指令介绍 不挂科 单片机 3.伪指令1.汇编语言介绍2.单片机指令系统 该命令用于从指定地址开始,在程序存储器的连续单元中定义16位的数据字。 命令格式为: DW 存放时,数据字的高8位在前(低地址),低8位在后(高地址)。例如: DW “AA” ; 存入41H,41H DW “A” DW “ABC” DW 100H,1ACH,-804 ; 存入00H,41H ; 不合法,因超过两字节 ; 按顺序存入01

9、H、00H、01H、0ACH、0FCH、0DCH DB和DW定义的数据表,数的个数不得超过80,若数据的数目较多,可使用多个定义命令。 在80C51程序设计应用中,常以DB来定义数据,以DW来定义地址。 定义数据字命令DW(Defi ne Word)5 指令寻址方式 直接寻址类 间接寻址类 小节1 小节2 不挂科 单片机 2.指令寻址方式2.单片机指令系统 不挂科 单片机 2.指令寻址方式2.单片机指令系统 直接寻址类 间接寻址类 小节1 小节2 指令寻址方式 寻址方式介绍 不挂科 单片机 2.指令寻址方式2.单片机指令系统1.直接寻址类 指令的寻址方式即取得操作数的方式。80C51单片机指令

10、系统共有7种寻址方式。 1寄存器寻址 2直接寻址 4 3立即寻址 寄存器间接寻址5 变址寻址6 相对寻址7 位寻址 寄存器寻址方式 不挂科 单片机 2.指令寻址方式2.单片机指令系统1.直接寻址类 寄存器寻址就是操作数在寄存器中,因此,只要指定了寄存器就能得到操作数。 MOV A , R0 由于操作数在R0中,因此,在指令中指定了R0,就能从中取得操作数,所以称为寄存器寻址方式。 寄存器寻址方式的寻址范围包括: 通用寄存器 部分专用寄存器 1寄存器寻址 在寄存器寻址方式的指令中,以符号名称来表示寄存器。 例如,下列指令的功能是把寄存器R0的内容传送到累加器A中: 寄存器寻址范围 不挂科 单片机

11、 2.指令寻址方式2.单片机指令系统1.直接寻址类 例如,累加器A、AB寄存器对以数据指针DPTR等。 寄存器寻址的主要对象是通用寄存器,有4组共32个通用寄存器, 在使用本指令前,常须通过对PSW中RS1、RS0位的状态设置来进行当前寄存器组的选择。 因此,指令中的寄存器名称只能是R0R7。 但寄存器寻址只能使用当前寄存器组。 通用寄存器 部分专用寄存器 直接寻址方式 不挂科 单片机 2.指令寻址方式2.单片机指令系统1.直接寻址类 应当指出,直接寻址是访问专用寄存器的惟一方法。 专用寄存器:但专用寄存器除以单元地址形式给出外,还可以寄存器符号形式给出。 因为直接寻址方式只能使用8位二进制数

12、表示的地址,因此,这种寻址范围只限于内部RAM。 3AH就是被寻的直接地址。直接寻址的操作数在指令中以存储单元形式出现, MOV A , 3AH 例如,下列指令的功能是把内部RAM 3AH单元中的数据传送给累加器A。 直接寻址方式是指令中操作数直接以存储单元地址的形式给出。 低128单元:在指令中直接以单元地址形式给出。 2直接寻址 具体如下: 立即寻址方式 不挂科 单片机 2.指令寻址方式2.单片机指令系统1.直接寻址类 所谓立即寻址就是操作数在指令中直接给出。 MOV A , #3AH假定立即数是3AH,则立即寻址方式的传送指令为: 在指令格式中,8位立即数用data表示。 因为通常把在指

13、令中给出的数称为立即数,所以就把这种寻址方式称为立即寻址。 MOV DPTR , #data16指令格式为: 80C51指令系统中还有一条16位立即寻址指令,用“ #data16”表示16位立即数。 3立即寻址 为了与直接寻址指令中的直接地址相区别,在立即数前面加“ # ”标志。 位寻址方式 不挂科 单片机 2.指令寻址方式2.单片机指令系统1.直接寻址类 80C51具有位处理功能,可以对数据位进行操作,因此,就有供其使用的位寻址方式。 位寻址指令中应直接使用位地址,例如,下列指令功能是把3AH位的状态送入进位位C. MOV C , 3AH 位寻址的寻址范围包括: 内部RAM中的位寻址区20H

14、2FH: 专用寄存器中的可寻址位。 4位寻址 在指令中,寻址位有两种表示方法:一种是位地址,另一种是单元地址加位数。 例如,7FH单元第0位,用单元地址加位数表示为7FH.0。 16个单元共有128位,位地址范围00H7FH。 不挂科 单片机 2.指令寻址方式2.单片机指令系统 直接寻址类小节1 小节2 指令寻址方式 间接寻址类 寄存器间接寻址方式 不挂科 单片机 2.指令寻址方式2.单片机指令系统2.间接寻址类 为区别寄存器寻址和寄存器间接寻址,在寄存器间接寻址方式中,应在寄存器前加前缀标志。 寄存器寻址方式中,寄存器中存放的是操作数,而是寄存器间接寻址方式中, 寄存器间接寻址也需以寄存器符

15、号形式表示。 寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的。 寄存器间接寻址5 MOV A , R0 上述指令的功能是以R0寄存器内容3AH为地址,把该地址单元的内容送累加器A。 假定R0寄存器的内容是3AH: 寄存器间接寻址方式 不挂科 单片机 2.指令寻址方式2.单片机指令系统2.间接寻址类 76H 内部RAM 3AH 3AHR0 76HA MOV A , R0 上述指令的功能是以R0寄存器内容3AH为地址,把该地址单元的内容送累加器A。 假定R0寄存器的内容是3AH: 寄存器间接寻址方式 不挂科 单片机 2.指令寻址方式2.单片机指令系统2.间接寻址类 有关寄存器间接寻址

16、方式寻址范围及其说明如下: 其通用形式为“Ri”(i=0或1) 内部RAM低128单元 其形式为“DPTR”。 MOVX A , DPTR 外部RAM 64 KB 堆栈操作指令(PUSH和POP)也应算作是寄存器间接寻址。 对内部RAM低128单元的间接寻址,只能使用R0或R1作间址寄存器(地址指针)。 对外部RAM 64 KB存储空间的间接寻址,通常使用DPTR作间址寄存器。 下列指令的功能是把DPTR指定的外部RAM单元的内容送累加器A: 变址寻址方式 不挂科 单片机 2.指令寻址方式2.单片机指令系统2.间接寻址类 MOVC A , A+DPTR 其功能是把DPTR和A的内容相加得到一个

17、程序存储器地址,再把该地址单元的内容送累加器A。 因此,符号应理解为是针对“A+DPTR”的,而不是只针对A。 变址寻址是为了访问程序存储器中的数据表格。 并以两者内容相加形成的16位地址作为操作数地址,以达到访问数据表格的目的。 应注意,A中的数为无符号数。例如,指令: 变址寻址6 80C51的变址寻址以DPTR或PC作基址寄存器,以累加器A作变址寄存器, 变址寻址方式 不挂科 单片机 2.指令寻址方式2.单片机指令系统2.间接寻址类 假设( A )=54H , ( DPTR )=3F21H,该指令的操作示意图如图所示: 3F21H 3F75H DPTR 54HA + MOVC A , A+

18、DPTR 变址寻址6 7FH ROM 7FH 变址寻址方式 不挂科 单片机 2.指令寻址方式2.单片机指令系统2.间接寻址类 对80C51指令系统的变址寻址方式作如下说明: 变址寻址的指令只有3条,即: 其中前两条是程序存储器指令,后一条是无条件转移指令。 变址寻址方式只能对程序存储器进行寻址,或者说它是专门针对程序存储器的寻址方式, 寻址范围可达 64 KB。 MOVC A , A+DPTR MOVC A , A+PC JMP A+DPTR 相对寻址方式 不挂科 单片机 2.指令寻址方式2.单片机指令系统2.间接寻址类 目的地址=转移指令地址+转移指令字节数+rel 偏移量rel是一个带符号

19、的8位二进制补码数。所能表示的数的范围是128+127. 因此,相对转移是以转移指令所在地址为基点,向前最大可转移(127+转移指令字节数)个 单元地址,向后最大可转移(128转移指令字节数)个单元地址。 在相对寻址方式的转移指令中,若给出地址偏移量(在80C51指令系统中用rel表示), 则把PC的当前值加上偏移量就构成了程序转移的目的地址。 注意:这里的PC当前值是指执行完该转移指令后的PC值,即本转移指令的PC值加上它的字节数。 在80C51的7种寻址方式中,前面讲述的6种主要用来解决操作数的给出问题,而第7种 相对寻址方式则是为解决程序转移而设置的,只为转移指令所采用。 相对寻址7 因

20、此转移的目的地址可用如下公式表示: 不挂科 单片机 3.指令分类介绍2.单片机指令系统 小节1 指令分类介绍 功能指令介绍 1.功能指令介绍 指令功能分类 不挂科 单片机 3.指令分类介绍2.单片机指令系统 按指令功能划分: 位操作类指令(17条) 控制转移类指令(17条) 逻辑运算及移位类指令(24条) 算术运算类指令(24条) 数据传送类指令(29条) 1.功能指令介绍 数据传送类 不挂科 单片机 3.指令分类介绍2.单片机指令系统 注意:数据传送类指令用到的助记符包括 通用格式为: MOV , 传送指令的约定: 指令执行后,源操作数不变,目的操作数被源操作数取代。 MOV、MOVX、MO

21、VC、XCH、XCHD、SWAP、PUSH、POP 8种。 从右向左传送数据,是将源操作数送到目的操作数。 1.功能指令介绍 数据传送类 不挂科 单片机 3.指令分类介绍2.单片机指令系统 单片机芯片内部的数据传送最频繁。 指令可以实现寄存器、累加器、RAM单元以及专用寄存器之间的相互数据传送。 MOV A,Rn 如:MOV A,R2 MOV A,direct 如: MOV A,30H MOV A,Ri 如: MOV A,R0 MOV A,#data 如: MOV A,#36H 以A为目的操作数的指令(4条) 1 ; A (Rn) ; A (direct) ; A (Ri) ; A data

22、MOV Rn ,A ; (Rn) (A)如:MOV R0,A MOV Rn ,direct ; (Rn) (direct) 如:MOV R3,30H MOV Rn ,#data ; (Rn) data如:MOV R7,#36H MOV R1,#30 MOV R6,#01101100B 数据传送类 不挂科 单片机 2.单片机指令系统 以Rn为目的操作数的指令(3条) 2 1.功能指令介绍 数据传送类 不挂科 单片机 3.指令分类介绍2.单片机指令系统 MOV direct,A 如:MOV 30H,A MOV direct,Rn 如:MOV P1,R2 MOV direct1,direct2 如:

23、MOV 38H,60H MOV direct,Ri 如:MOV TL0,R1 MOV direct,#data 如:MOV 58H,#36H 以直接地址为目的操作数的指令(5条) 3 ;direct (A) ;direct (Rn) ;(direct1) (direct2) ;direct (Ri) ;direct data 1.功能指令介绍 数据传送类 不挂科 单片机 3.指令分类介绍2.单片机指令系统 MOV Ri,A 如:MOV R0,A MOV Ri,direct 如:MOV R1,36H MOV R0,SBUF MOV Ri,#data 如:MOV R1,#48 MOV R0,#0D

24、6H 以间接地址为目的操作数的指令(3条)4 ;(Ri) (A) ;(Ri) (direct) ;(Ri) data 数据传送类 不挂科 单片机 2.单片机指令系统 MOV DPTR,#data16 如:MOV DPTR,#2368H MOV DPTR,#35326 MOV DPL,#68H 十六位数据传送指令(1条)5 MOV DPH,#23H ;(DPH) dataH8 ,(DPL) dataL8 1.功能指令介绍 数据传送类 不挂科 单片机 3.指令分类介绍2.单片机指令系统 MOV指令在片内RAM的允许操作图如下: RidirectRn #dataACC 不允许的操作有:Ri Ri R

25、n RnRi Rn 1.功能指令介绍不挂科 单片机 3.指令分类介绍2.单片机指令系统 设内部RAM40H单元的内容为30H,30H单元的内容为20H,20H单元的内容为10H, 问:R0=? R1=? B=? (40H)=? (30H)=? P2=? (20H)=? 例题2-1 端口P1的内容为AAH,试问结果如何? MOV R0, #40H MOV A ,R0 MOV R1,A MOV B,R1 MOV R1,P1 MOV P2,P1 MOV 40H,#10H 1.功能指令介绍不挂科 单片机 3.指令分类介绍2.单片机指令系统 MOV R0, #40H MOV A ,R0 MOV R1,A

26、 MOV B,R1 MOV R1,P1 MOV P2,P1 MOV 40H,#10H ;A=30H ;R1=30H ;B=20H ;(30H)=AAH ;(40H)=10H ;P2=AAH 解析2-1 例题2-1 问:R0=? R1=? B=? (40H)=? (30H)=? P2=? (20H)=? R0=40H ,R1=30H ,B=20H ,(40H)=10H ,(30H)=0AAH , P2=AAH ,(20H)=10H。 设内部RAM40H单元的内容为30H,30H单元的内容为20H,20H单元的内容为10H, 端口P1的内容为AAH,试问结果如何? 1.功能指令介绍不挂科 单片机

27、3.指令分类介绍2.单片机指令系统 若(R1)=30H,(A)=40H,(30H)=60H,(40H)=08H。试分析执行下列程序段后上述各单元内容的变化。 MOV A,R1 MOV R1,40H MOV 40H,A MOV R1,#7FH MOV A,R1 MOV R1,40H MOV 40H,A MOV R1,#7FH ;(A)=60H ;(30H)=08H ;(40H)=60H ;(R1)=7FH 例题2-2 解析2-2 1.功能指令介绍 数据传送类 不挂科 单片机 3.指令分类介绍2.单片机指令系统 单片机对程序存储器(包括内部和外部程序存储器)的数据只能读不能写,读指令为MOVC。

28、程序存储器读操作只能通过累加器A进行。 查表范围为最大为256B空间,称为近程查表。 注意:内外程序存储器在逻辑上连续统一,传送单向,只读。 程序存储器数据传送指令(查表指令)(2条)6 一般DPTR放表的首地址,A放所查数据在表中的偏移;查表范围为64KB空间,称为远程查表。 PC的值为下条指令的地址, A放所查数据相对PC值的偏移; 这类指令用于访问程序存储器中的数据表格 MOVC A,A+DPTR ; A ( (A)+(DPTR) ) MOVC A, A+PC ; A ( (A) + (PC) ) 1.功能指令介绍 数据传送类 不挂科 单片机 3.指令分类介绍2.单片机指令系统 外部数据

29、存储器读/写指令为MOVX。 外部数据存储器读/写只能通过累加器A使用间接寻址方式进行,间址寄存器可以是Ri或DPTR。 累加器A与片外RAM的数据传送指令(4条)7 MOVX A,DPTR ; A (DPTR) MOVX A,Ri MOVX Ri,A MOVX DPTR,A ; A (Ri) ; (Ri) (A) ; (DPTR) (A) 1.功能指令介绍不挂科 单片机 3.指令分类介绍2.单片机指令系统 将外部RAM中F5H单元中的内容送到0645H单元中,请写出实现上述功能的核心代码。 MOV DPTR , #0645H MOV R0 , #0F5H MOVX A , R0 MOVX D

30、PTR , A ;A (0F5H) ;(DPTR) (0F5H) 例题2-3 解析2-3 1.功能指令介绍不挂科 单片机 3.指令分类介绍2.单片机指令系统 数据传送类 XCH A,Rn XCH A,direct XCH A,Ri ;(A) ( Rn ) 交换指令(5条)8 字节交换指令 ;(A) ( direct ) ;(A) ( Ri ) 1.功能指令介绍不挂科 单片机 3.指令分类介绍2.单片机指令系统 (1)低半字节交换指令 如:设( A ) =36H, ( R1 ) =65H, ( 65H ) =42H XCHD A,Ri (2)累加器A高、低半字节交换指令 SWAP A 如:设(A

31、)=36H 半字节交换指令 A36H R165H65H42H XCHD A,R1 ;( A ) =32H, ( 65H ) =46H ;(A)03 (A)47 SWAP A ;(A)=63H 交换指令(5条)8 数据传送类 ;(A)03 (Ri)03 1.功能指令介绍 数据传送类 不挂科 单片机 3.指令分类介绍2.单片机指令系统 PUSH direct POP direct 如:PUSH ACC 注意:其操作数为直接地址,不能用寄存器名。 堆栈操作指令(2条) 9 POP ACC 正确POP A 错误 POP 0F3H ;实际是(SP)+1 SP, (A) (SP) ;先(SP) direc

32、t,后(SP)1 SP ;实际是(SP) 0F3H , (SP)1 SP Data 堆栈:PUSH (ACC) SP (SP)+1 Data2 堆栈:POP Data1SP (SP)-1Data10F3H 加个动画 ;先(SP)+1 SP,后 (direct) (SP) 1.功能指令介绍不挂科 单片机 3.指令分类介绍2.单片机指令系统 7010H:02H 7011H:04H 7012H:06H 7013H:08H 例题2-4 远程查表,设程序中的数据表格为: 执行程序: 1000H:MOV A,#10H 1002H:PUSH DPH 1004H:PUSH DPL 1006H:MOV DPTR

33、,#7000H 1009H:MOVC A,A+DPTR 100AH: POP DPH 100CH:POP DPL 结果为:(A)= ? (PC)=? (DPTR)=? 1.功能指令介绍不挂科 单片机 3.指令分类介绍2.单片机指令系统 7010H:02H 7011H:04H 7012H:06H 7013H:08H 远程查表,设程序中的数据表格为: 执行程序: 1000H:MOV A,#10H 1002H:PUSH DPH 1004H:PUSH DPL 1006H:MOV DPTR,#7000H 1009H:MOVC A,A+DPTR 100AH: POP DPH 100CH:POP DPL ;

34、A (10H+7000H) ;DPTR 7000H (DPH) 堆栈 (DPL)DPH DPL 结果为:(A)= 02H (PC)= 100EH (DPTR)= 原值高低字节互换 例题2-4 解析2-4 SP 1.功能指令介绍不挂科 单片机 3.指令分类介绍2.单片机指令系统 例题2-5进入中断服务程序前要将DPTR、PSW和A的内容保护起来,设DPTR0123H、PSW25H、A10H, 当前SP=30H,当程序执行完毕,结果为? PUSH DPL PUSH DPH PUSH PSW PUSH ACC 问:(30H)=? (31H)=? (32H)=? (33H)=? (34H)=? SP=

35、? POP DPL POP DPH POP PSW POP ACC 问:DPTR=? A=? SP=? 1.功能指令介绍不挂科 单片机 3.指令分类介绍2.单片机指令系统 例题2-5进入中断服务程序前要将DPTR、PSW和A的内容保护起来,设DPTR0123H、PSW25H、A10H, 当前SP=30H,当程序执行完毕,结果为? PUSH DPL PUSH DPH PUSH PSW PUSH ACC 此时,(30H)=data1 ,(31H)=23H ,(32H)=01H ,(33H)=25H ,(34H)=10H ,SP=34H。 POP DPL POP DPH POP PSW POP AC

36、C 解析2-5 (DPL)=23H 堆栈 (DPH)=01H SP=30Hdata1 (PSW)=25H (ACC)=10H 31H 32H 33H 34H DPH DPL PSW ACC 解:DPTR=2510H ,A=23H ,SP=30H。 1.功能指令介绍 算术运算类指令 不挂科 单片机 3.指令分类介绍2.单片机指令系统 该类指令主要是对8位无符号数进行算术运算。算术运算结果将影响PSW的有关位。 算数运算类指令共包含24条指令,分成七个小类: 不带进位加法指令(4条)1 带进位加法指令(4条)2 带借位减法指令(4条)3 加1指令(5条)4 减1指令(4条)5 进制数调整指令(1条

37、)6 乘除法指令(2条)7 1.功能指令介绍 算术运算类指令 不挂科 单片机 3.指令分类介绍2.单片机指令系统 算数运算类指令共包含24条指令,分成七个小类: 程序状态字 位序 位标志 PSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0 CYACF0RS1RS0OVP AC:半进位标志位,表示低4位对高4位有进位或借位时的标志位。 CY:进位标志位。该位在加减法中存放进位和借位,在移位操作中可能会用到。 F0:用户标志位,由用户进行定义和使用。 OV:溢出标志位。加减运算中,OV=1时,表示运算结果超过A的表示范围; P:奇偶标志位,表示累加器A中1的个数,若1

38、的个数为偶数,则P=0。 在乘法运算中,OV=1表示乘积存放在A和B中;除法运算中,OV=1表示除数为0,无法进行计算。 该类指令主要是对8位无符号数进行算术运算。算术运算结果将影响PSW的有关位。 1.功能指令介绍 算术运算类指令 不挂科 单片机 3.指令分类介绍2.单片机指令系统 ADD A,Rn ADD A,direct ADD A,Ri ADD A,#data 不带进位加法指令(4条)1 ;(A) (A)+(Rn) ;(A) (A)+(direct) ;(A) (A)+(Ri) ;(A) (A)+#data 如果位3有进位,则半进位标志位AC置1,否则清零。 如果位7有进位,则进位标志

39、位CY置1,否则清零。 如果两个数(看作有符号数时)相加溢出,则OV置1,否则清零。 如果两个同符号数相加的结果变号即溢出,则OV置1,否则清零。 1.功能指令介绍 算术运算类指令 不挂科 单片机 3.指令分类介绍2.单片机指令系统 ADDC A,Rn ADDC A,direct ADDC A,Ri ADDC A,#data 带进位加法指令(4条)2 ;(A) (A)+(Rn)+CY ;(A) (A)+(direct)+CY ;(A) (A)+(Ri)+CY ;(A) (A)+#data+CY 带进位加法指令多用于多字节数的加法。 指令功能是把源操作数指出的内容和进位标志CY都同累加器A的内容

40、相加,结果放于A中。 CY为来自PSW状态寄存器中的进位位C。 1.功能指令介绍不挂科 单片机 3.指令分类介绍2.单片机指令系统 例题2-6三字节无符号数相加,被加数放在内部RAM 20H-22H单元,加数放在内部RAM 2AH-2CH单元(低位在前)。 解析2-6 MOV R0,#20H MOV R1,#2AH MOV R7,#03H CLR C LOOP: MOV A,R0 ADDC A,R1 MOV R0,A INC R0 INC R1 DJNZ R7,LOOP CLR A ADDC A,#00H MOV R0,A 1.功能指令介绍 算术运算类指令 不挂科 单片机 3.指令分类介绍2.

41、单片机指令系统 SUBB A,Rn SUBB A,direct SUBB A,Ri SUBB A,#data 带借位减法指令(4条)3 ;(A) (A) - (Rn) - CY ;(A) (A) - (direct) - CY ;(A) (A) - (Ri) - CY ;(A) (A) - #data - CY 如果位3有借位,则半进位标志位AC置1,否则清零。 如果位7有借位,则进位标志位CY置1,否则清零。 如果两个数(看作有符号数时)相减溢出,则OV置1,否则清零。 如果两个异号数相减的结果与被减数符号不同即溢出,OV置1,否则清零。 无不带借位减法指令,需要时,先执行一条CLR C指令

42、既可。 1.功能指令介绍不挂科 单片机 3.指令分类介绍2.单片机指令系统 算术运算类指令 SUBB A,Rn SUBB A,direct SUBB A,Ri SUBB A,#data 带借位减法指令(4条)3 ;(A) (A) - (Rn) - CY ;(A) (A) - (direct) - CY ;(A) (A) - (Ri) - CY ;(A) (A) - #data - CY 例:(A)=0D1H,(R0)=54H (CY)=1,执行“SUBB A,R0”的结果为 7CH , 其中标志位CY = 0 ,OV = 1 ,AC = 1 ,P = 1 209-84-1=124 = 1101

43、0001B-01010100B-00000001B=01111100B = 7CH , 1.功能指令介绍 算术运算类指令 不挂科 单片机 3.指令分类介绍2.单片机指令系统 INC A INC Rn INC direct INC Ri INC DPTR 说明:INC A 除了影响P外,不影响PSW其它位(即标志位CY、AC、OV)。 加1指令(5条)4 ;(A) (A) + 1 ;(A) (Rn) + 1 ;(direct) (direct) + 1 ;(DPTR) (DPTR) + 1 ;(Ri) (Ri) + 1 例:MOV A,#0FEH ;P=1 INC A ;P=0 1.功能指令介绍

44、 算术运算类指令 不挂科 单片机 3.指令分类介绍2.单片机指令系统 DEC A DEC Rn DEC direct DEC Ri DEC DPTR ;无此指令 说明:DEC A 除了影响P外,不影响PSW其它位(即标志位CY、AC、OV)。 减1指令(4条)5 ;(A) (A) - 1 ;(A) (Rn) - 1 ;(direct) (direct) - 1 ;(Ri) (Ri) - 1 例:MOV A,#0FFH ;P=0 DEC A ;P=1 1.功能指令介绍 算术运算类指令 不挂科 单片机 3.指令分类介绍2.单片机指令系统 说明: (1) 的BCD码的结果。 的两个操作数是BCD码,

45、即两个BCD码相加必须经过DA A指令后,才能得到正确 此指令跟在ADD或ADDC指令之后,将A中的和调整为BCD码,并且ADD或ADDC (2) 调整方法: 若( A03 ) 9或AC=1,则( A03 ) +6 ( A03 ) ; 若( A47 )9或CY=1,则( A47 ) +6 ( A47 ); 若( A47 )9且( A03 )9,则( A )66H ( A ); DA A ; 调整累加器内容为BCD码(二进制编码的十进制) 进制数调整指令(1条)6 1.功能指令介绍 算术运算类指令 不挂科 单片机 3.指令分类介绍2.单片机指令系统 DA A ; 调整累加器内容为BCD码(二进制

46、编码的十进制) 进制数调整指令(1条)6 执行DA A后,CPU根据累加器的值,以及AC、CY的状态,来自动的对A进行修正。 注意:DA指令不对减法进行修正。 20H MOV A,#16 ADD A,#16 DA A A=? 例: 1.功能指令介绍 算术运算类指令 不挂科 单片机 3.指令分类介绍2.单片机指令系统 MUL AB 说明: (1)为无符号乘法; (2)若结果的B0 (乘积大于255) ,则OV=1,若B=0,则OV=0; DIV AB ;(A)/(B)的商 A,余数 B 说明: (1)为无符号除法; 除法指令 乘法指令 CY总是清零,AC不影响,P影响。 ;(A) (B) B158, A70 (2)若除数B=0 (除法无意义) ,则OV=1,若B 0,则OV=0; CY总是清零,AC不影响,P影响。 乘除法指令(2条)7 1.功能指令介绍 逻辑运算及移位类指令 不

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com