单片机微型计算机指令系统与程序设计_第1页
单片机微型计算机指令系统与程序设计_第2页
单片机微型计算机指令系统与程序设计_第3页
单片机微型计算机指令系统与程序设计_第4页
单片机微型计算机指令系统与程序设计_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第3章 单片微型计算机指令系统与程序设计1汇编语言程序设计方法2MCS-51MCS-51单片机指令系统3汇编语言程序设计举例第3章 单片微型计算机指令系统与程序设计3.1 汇编语言程序设计方法3.1.1 指令及其表示法 1 指令 一条指令对应着一种基本操作,因此在一条指令中的内容通常包括操作性质和操作对象。 MCS51系列单片机的指令由操作符和操作数两大部分组成,格式可表示为: 操作符 操作数操作数1操作数操作数2(操作数操作数3)(1)操作符)操作符 它指出了它指出了CPU应执行的操作类型,即操作性质。应执行的操作类型,即操作性质。(2)操作数)操作数 指出了参加操作的数据或数据的存放地址。

2、它以一个或几指出了参加操作的数据或数据的存放地址。它以一个或几个空格与操作符隔开,操作数可以有一、二、三个或者没有,操作数个空格与操作符隔开,操作数可以有一、二、三个或者没有,操作数之间以逗号之间以逗号“,”分开。分开。 第3章 单片微型计算机指令系统与程序设计 在MCS51单片机中,机器码指令按指令的字节长度划分,有单字节、双字节和三字节指令。 单字节指令:单字节指令中的8位二进制代码即包含操作码的信息,也包含操作数的信息。如指令“INC A”,其指令代码为04H,格式为: 双字节指令:一个字节的操作码,另一个字节表示操作数或操作数所在的地址。如指令“ADD A,0FH”,操作码为24H,操

3、作数为0FH,该指令在内存中占两个字节,其格式为: 三字节指令:一个字节的操作码,两个字节的操作数,如指令“MOV 40H,39H”,第一个字节的操作码为85H,第二字节为目的操作数40H,第三字节为源操作数30H,它在内存中占三个字节,其格式为:0 0 1 0 0 1 0 00 0 0 0 1 1 1 1 0 0 0 0 0 1 0 01 0 0 0 0 1 0 10 1 0 0 0 0 0 00 0 1 1 0 0 0 0第3章 单片微型计算机指令系统与程序设计2 程序设计语言 (1) 机器语言 机器语言用二进制编码(或十六进制)表示一条指令,是计算机能够直接识别和执行的语言。用机器语言编

4、写的程序称为机器语言程序或指令程序。由于计算机只能直接识别和执行这种机器码程序,所以又称为目标程序。 (2) 汇编语言 汇编语言是用助记符、符号和数字等来表示指令的程序语言,易于理解和记忆,与机器语言指令一一对应,与计算机的内部硬件结构密切相关。用汇编语言编写的程序为汇编语言程序。第3章 单片微型计算机指令系统与程序设计3.1.2 指令中的部分符号说明符 号含 义Rn表示当前选定寄存器组的工作寄存器R0R7Ri表示作为间接寻址的地址指针R0R1#data表示8位立即数,即00HFFH#data16表示16位立即数,即0000HFFFFHaddr16表示16位地址,用于64K范围内寻址addr1

5、1表示11位地址,用于2K范围内寻址direct8位直接地址,可以是内部RAM区的某一单元或某一专用功能寄存器的地址Rel带符号的8位偏移量(-128+127)Bit位寻址区的直接寻址位(X)X地址单元中的内容,或X作为间接寻址寄存器时所指单元的内容将 后面的内容传送到前面去第3章 单片微型计算机指令系统与程序设计3.1.3 寻址方式 所谓寻址方式就是寻找指令中操作数或操作数所在地址。MCS51采用了7种寻址方式,分别为立即数寻址、寄存器寻址、直接寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。 1 立即寻址 立即寻址方式,是指在该条指令操作码的后面紧跟着一字节或两字节操作数,操作数前应冠以

6、前缀号,以便与直接地址相区别。 例如,指令MOV A,#3AH执行的操作是将立即数3AH送到累加器A中,该指令就是立即数寻址。该指令的执行过程如图所示。第3章 单片微型计算机指令系统与程序设计 3AHA3AH立即寻址示意图立即寻址示意图第3章 单片微型计算机指令系统与程序设计2 寄存器寻址 寄存器寻址是指将操作数存放于寄存器中,寄存器包括工作寄存器R0R7、累加器A、通用寄存器B、地址寄存器DPTR等。 例如,指令MOV R1,A的操作是把累加器A中的数据传送到寄存器R1中,其操作数存放在累加器A中,所以寻址方式为寄存器寻址。 如果程序状态寄存器PSW的RS1RS0=01(选中第二组工作寄存器

7、,对应地址为08H0FH),设累加器A的内容为20H,则执行MOV R1,A指令后,内部RAM 09H单元的值就变为20H,如下图所示。第3章 单片微型计算机指令系统与程序设计 寄存器寻址示意图 20H09H内部RAM20HAR101RS1 RS0第3章 单片微型计算机指令系统与程序设计3 直接寻址 直接寻址是指把存放操作数的内存单元的地址直接写在指令中。在MCS-51单片机中,可以直接寻址的存储器主要有内部RAM区和特殊功能寄存器SFR区。 例如,指令MOV A,3AH执行的操作是将内部RAM 中地址为3AH的单元内容传送到累加器A中,其操作数3AH就是存放数据的单元地址,因此该指令是直接寻

8、址。 设内部RAM 3AH单元的内容是88H,那么指令MOV A,3AH的执行过程如下图所示。 第3章 单片微型计算机指令系统与程序设计直接寻址示意图 88H3AH内部 RAM88HA第3章 单片微型计算机指令系统与程序设计 4 寄存器间接寻址寄存器间接寻址 寄存器间接寻址是指将存放操作数的内存单元的地址放在寄存器中,指令中只给出该寄存器。执行指令时,首先根据寄存器的内容,找到所需要的操作数地址,再由该地址找到操作数并完成相应操作。 在MCS-51指令系统中,用于寄存器间接寻址的寄存器有R0、R1和DPTR,称为寄存器间接寻址寄存器。 间接寻址寄存器前面必须加上符号“”。例如,指令MOV A,

9、R0执行的操作是将R0的内容作为内部RAM的地址,再将该地址单元中的内容取出来送到累加器A中 注意第3章 单片微型计算机指令系统与程序设计设R0=3AH,内部RAM 3AH中的值是65H,则指令 MOV A,R0的执行结果是累加器A的值为65H, 该指令的执行过程如下图所示。65H3AH内部 RAM3AHAR065H第3章 单片微型计算机指令系统与程序设计 5 变址寻址变址寻址 变址寻址是指将基址寄存器与变址寄存器的内容相加,结果作为操作数的地址。DPTR或PC是基址寄存器,累加器A是变址寄存器。该类寻址方式主要用于查表操作。 例如,指令MOVC A,A+DPTR执行的操作是将累加器A和基址寄

10、存器DPTR的内容相加,相加结果作为操作数存放的地址,再将操作数取出来送到累加器A中。 设累加器A=02H,DPTR=0300H,外部ROM中,0302H单元的内容是55H,则指令MOVC A,A+DPTR的执行结果是累加器A的内容为55H。该指令的执行过程如下图所示。 PSEN第3章 单片微型计算机指令系统与程序设计 55H程序存储区02HA0302H03HDPTR00H0302H变址寻址示意图变址寻址示意图第3章 单片微型计算机指令系统与程序设计 6 相对寻址相对寻址 相对寻址是指程序计数器PC的当前内容与指令中的操作数相加,其结果作为跳转指令的转移地址(也称目的地址)。该类寻址方式主要用

11、于跳转指令。 例如,指令SJMP 54H执行的操作是将PC当前的内容与54H相加,结果再送回PC中,成为下一条将要执行指令的地址。 设指令SJMP 54H的机器码80H 54H存放在2000H处,当执行到该指令时,先从2000H和2001H单元取出指令,PC自动变为2002H;再把PC的内容与操作数54H相加,形成目标地址2056H,再送回PC,使得程序跳转到2056H单元继续执行。该指令的执行过程如下图所示。第3章 单片微型计算机指令系统与程序设计54H程序存储区54HA2001H20HPC02H2056HXX80H2056H2000H相对寻址示意图相对寻址示意图第3章 单片微型计算机指令系

12、统与程序设计 7 位寻址位寻址 位寻址是将8位二进制数中的某一位作为操作数,在指令中给出的是位地址,一般用bit表示。例如:CLR bit。 MCS51中单片机片内RAM有两个区域可以位寻址,一个是20H2FH的16个单元中的128位,另一个是字节地址能被8整除的特殊功能寄存器。 一种是直接使用位地址;如20H单元的07位位地址是00H07H,而21H的07位位地址是08H0FH等。 另一种是对于特殊功能寄存器,可以直接用寄存器名字加位数表示,如P0.3、PSW.0等。第3章 单片微型计算机指令系统与程序设计8 寻址空间 第3章 单片微型计算机指令系统与程序设计3 单片机的复位电路 复位是单片

13、机的初始化操作。 单片机复位的条件是:必须使RST/VPD 或RST引脚加上持续两个机器周期(即24个振荡周期)的高电平。 外部复位电路有上电自动复位和按键手动复位。上电时,RST端要保持一段时间高电平。 图2-12(a)为上电复位电路,它是利用电容充电来实现的。图2-12(b)为按键复位电路。该电路除具有上电复位功能外,若要复位,只需按图2-12(b)中的RESET键,此时电源VCC经电阻R1、R2分压,在RESET端产生一个复位高电平。第3章 单片微型计算机指令系统与程序设计 3.1.4 MCS-51系列单片机汇编语言程序格式 汇编语言的每个语句占有一行,典型的汇编语言语句由四个域组成:标

14、号域,操作符域,操作数域及注释域。例如: 标号:,操作符 操作数,;注释 L09P: MOV R6,#20H ; R6赋值 每个语句必须具有操作符域,说明这条语句的执行功能,操作数域可以是地址或数据,也可以空缺,标号域和注释域可有可无。为了使程序便于编写和阅读可以给一个语句指定一个标号,还可以适当地加上注释,对语句的作用进行说明。第3章 单片微型计算机指令系统与程序设计 例如,指令SETB 3DH执行的操作是将内部RAM位寻址区中的3DH位置1。 设内部RAM 27H单元的内容是00H,执行SETB 3DH后,由于3DH对应内部RAM 27H的第5位,因此该位变为1,也就是27H单元的内容变为

15、20H。该指令的执行过程如图所示。内部RAM27H二进制 10 0 1 0 0 0 0 0 返回第3章 单片微型计算机指令系统与程序设计3.2 MCS-51单片机指令系统按指令的功能分类,MCS51指令系统可分为下面五类:1数据传送类(29条)2算术操作类(24条)3逻辑运算类(24条)4控制转移类(17条)5位操作类(17条) 第3章 单片微型计算机指令系统与程序设计3.2.1 数据传送类指令 数据传送类指令一共29条,是汇编程序中使用最频繁的一类指令。数据传送操作可以在片内RAM和SFR内进行,也可以再累加器A和片外存储器之间进行。 指令中必须指定传送数据的源地址和目的地址,以便机器执行指

16、令时把源地址中的内容传送到目的地址中,但不改变源地址中的内容,一般对标志位不产生影响(目的操作数为A时将影响奇偶标志位P的状态)。目的地址 数 据源地址 第3章 单片微型计算机指令系统与程序设计1 通用传送指令(内部数据传送指令) 内部8位数据传送指令共15条,主要用于MCS-51单片机内部RAM与寄存器之间的数据传送。指令基本格式: MOV , 1) 以累加器A为目的地址的传送指令(4条) 助记符格式机器码(B)相应操作指令说明机器周期MOV A,Rn11101rrrA(Rn)n=07, rrr=0001111MOV A,direct1 1 1 0 0 1 0 1 directA (dire

17、ct) 1MOV A,Ri1110011iA (Ri)i=0,1 1MOV A,#data0 1 1 1 0 1 0 0 dataA #data 1第3章 单片微型计算机指令系统与程序设计 以上传送指令的结果均影响程序状态字寄存器PSW的P标志。 例3.1 已知相应单元的内容如下,请指出每条指令执行后相应单元内容的变化。 累加器A40H寄存器R050H内部RAM:40H30H内部RAM:50H10H 注意第3章 单片微型计算机指令系统与程序设计 (2) MOV A,40H (3) MOV A,R0 (4) MOV A,R0解:(1) MOV A,#20H执行后A=20H。 (2) MOV A,

18、40H执行后A=30H。 (3) MOV A,R0执行后A=50H。 (4) MOV A,R0执行后A=10H。第3章 单片微型计算机指令系统与程序设计 2) 以Rn为目的地址的传送指令(3条)助记符格式机器码(B)相应操作指令说明机器周期MOV Rn,A11111rrr(Rn)An=07, rrr=0001111MOV Rn,direct1 0 1 0 1 r r r directRn (direct)n=07, rrr=0001111MOV Rn,#data0 1 1 1 1 r r r dataRn #datan=07, rrr=0001111 以上传送指令的结果不影响程序状态字寄存器P

19、SW标志。 注意第3章 单片微型计算机指令系统与程序设计 3) 以直接地址为目的地址的传送指令(5条)助记符格式机器码(B)相应操作指令说明机器周期MOV direct,A1 1 1 1 1 0 1 0 direct(direct) A 1MOV direct,Rn1 0 0 0 1 r r r direct(direct )Rnn = 0 7 , rrr=0001111MOV direct2,direct110000101d i r e c t 1 direct2(direct2) direct1 2MOV direct,Ri1 0 0 0 0 1 1 i direct(direct )(R

20、i)i=0,12MOV direct,#data01110101direct data(direct)#data 2 以上传送指令的结果不影响程序状态字寄存器PSW标志。 注意第3章 单片微型计算机指令系统与程序设计 4) 以寄存器间接地址为目的地址的传送指令(3条)助记符格式机器码(B)相应操作指令说明机器周期MOV Ri,A1111011i(Ri)Ai=0,11MOV Ri,direct1 1 1 0 0 1 1 i direct(Ri)(direct) 2MOV Ri,#data0 1 1 1 0 1 0 i data(Ri)#data 1 以上传送指令的结果不影响程序状态字寄存器PSW

21、标志。 注意第3章 单片微型计算机指令系统与程序设计 例3.2 已知相应单元的内容如下,请指出下列指令执行后各单元内容相应的变化。寄存器R050H寄存器R166H寄存器R630H内部RAM:50H60H内部RAM:66H45H内部RAM:70H40H第3章 单片微型计算机指令系统与程序设计(1) MOV A,R6 (2) MOV R6,70H(3) MOV 70H,50H(4) MOV 40H,R0(5) MOV R1,#88H解:(1) MOV A,R6执行后A=30H。(2) MOV R6,70H执行后R6=40H。(3) MOV 70H,50H执行后(70H)=60H。(4) MOV 4

22、0H,R0执行后(40H)=60H。(5) MOV R1,#88H执行后(66H)=88H。 助记符格式机器码(B)相应操作指令说明机器周期MOV DPTR,#data161 0 0 1 0 0 0 0 d a t a 1 5 8 data70( D P T R ) #data16把 1 6 位 常数装入数据指针2 注意:以上传送指令的结果不影响程序状态字寄存器PSW标志。2. 16位 数据传送指令(1条)第3章 单片微型计算机指令系统与程序设计第3章 单片微型计算机指令系统与程序设计 3. 外部数据传送指令(4条)助记符格式机器码(B)相应操作指令说明机器周期MOVX A,DPTR11100

23、000A(DPTR)把DPTR所对应的外部RAM地址中的内容传送给累加器A2MOVX A,Ri1110001iA (Ri)i=0,12MOVX DPTR,A11110000(DPTR) A结果不影响P标志2MOVX Ri,A1110001i(Ri) Ai=0,1,结果不影响P标志2第3章 单片微型计算机指令系统与程序设计 解:MOV DPTR,#2040HMOVX A,DPTR;先将2040H单元的内容传送到累加器A中 MOV DPTR,#2560H MOVX DPTR,A;再将累加器A中的内容传送到2560H单元中第3章 单片微型计算机指令系统与程序设计4. 交换和查表类指令(9条)1) 字

24、节交换指令(3条)助记符格式机器码(B)相应操作指令说明机器周期XCH A,Rn11001rrr ARn A与Rn内容互换1XCH A,direct11000101 directA(direct) 1XCH A,Ri1100011iA(Ri)i=0,11 :以上传送指令的结果不影响程序状态字寄存器PSW标志。 注意第3章 单片微型计算机指令系统与程序设计助记符格式机器码(B)相应操作指令说明机器周期X CHD A,Ri1101011iA30(Ri)30低4位交换,高4位不变1 注意:上面指令结果影响程序状态字寄存器注意:上面指令结果影响程序状态字寄存器PSW的的P标志。标志。2) 半字节交换指

25、令第3章 单片微型计算机指令系统与程序设计3) 累加器A中高4位和低4位交换(1条)助记符格式机器码(B)相应操作指令说明机器周期SWAP A11000100A 30A74 高、低4位互相交换1 上面指令结果不影响程序状态字寄存器PSW标志。 注意第3章 单片微型计算机指令系统与程序设计 : 外部RAM只能通过累加器A进行数据传送。 累加器A与外部RAM之间传送数据时只能间接寻址方式,间接寻址寄存器为DPTR,R0,R1。 以上传送指令结果通常影响程序状态字寄存器PSW的P标志。 例3.3 把外部数据存储器2040H单元中的数据传送到外部数据存储器2560H单元中去。 注意第3章 单片微型计算

26、机指令系统与程序设计4) 查表指令(2条) 助记符格式机器码(B)相应操作指令说明机器周期MOVC A,A+PC10000011A(A+PC)A+PC所指外部程序存储单元的值送A2MOVC A,A+DPTR10010011A(A+DPTR)A+DPTR所指外部程序存储单元的值送A2 : 以上指令结果影响程序状态字寄存器PSW的P标志。 查表指令用于查找存放在程序存储器中的表格。 注意第3章 单片微型计算机指令系统与程序设计 5) 堆栈操作指令(2条) 助记符格式机器码(B)相应操作指令说明机器周期P U S H direct11000000directSPSP+1(SP)(direct)将SP

27、加1,然后将源地址单元中的数传送到SP所指示的单元中去2POP direct11010000direct(direct) (SP)SPSP-1将SP所指示的单元中的数传送到direct地址单元中,然后SPSP-12 : 堆栈是用户自己设定的内部RAM中的一块专用存储区,使用时一定先设堆栈指针,堆栈指针缺省为SP=07H。 注意第3章 单片微型计算机指令系统与程序设计 堆栈遵循后进先出的原则安排数据。 堆栈操作必须是字节操作,且只能直接寻址。将累加器A入栈、出栈指令可以写成: PUSH/POP ACC 或 PUSH/POP 0E0H而不能写成: PUSH/POP A 堆栈通常用于临时保护数据及子

28、程序调用时保护现场和恢复现场。 以上指令结果不影响程序状态字寄存器PSW标志。第3章 单片微型计算机指令系统与程序设计 例3.5 设堆栈指针为30H,把累加器A和DPTR中的内容压入,然后根据需要再把它们弹出,编写实现该功能的程序段。 解:MOV SP,#30H ;设置堆栈指针,SP=30H为栈底地址 PUSH ACC ;SP+1SP,SP=31H,ACC (SP) PUSH DPH ;SP+1SP,SP=32H,DPH (SP)PUSH DPL ;SP+1SP,SP=33H,DPL (SP)POP DPL ;(SP)DPL,SP-SP,SP=32HPOP DPH ;(SP)DPH,SP-SP

29、,SP=31HPOP ACC ;(SP)ACC,SP-SP,SP=30H第3章 单片微型计算机指令系统与程序设计 : ADD与ADDC的区别为是否加进位位CY。 指令执行结果均在累加器A中。 以上指令结果均影响程序状态字寄存器PSW的CY、OV、AC和P标志。 2) 减法指令(4条)助记符格式机器码(B)相应操作指令说明机器周期SUBB A,Rn1001rrrAA-(Rn)-CYn=07 rrr=0001111SUBB A,direct1 0 0 1 0 1 0 1 directAA-(direct)-CY 1SUBB A,Ri1001011iAA- (Ri)-CYi=0,11SUBB A,#

30、data1 0 0 1 0 1 0 0 dataAA-(#data)-CY 1 注意第3章 单片微型计算机指令系统与程序设计 注意: 减法指令中没有不带借位的减法指令,所以在需要时,必须先将CY清0。 指令执行结果均在累加器A中。 减法指令结果影响程序状态字寄存器PSW的CY、OV、AC和P标志。 例3.6 编写计算12A4H+0FE7H的程序,将结果存入内部RAM 41H和40H单元,40H存低8位,41H存高8位。 解:单片机指令系统中只提供了8位的加减法运算指令,两个16位数(双字节)相加可分为两步进行,第一步先对低8位相加,第二步再对高8位相加。 第3章 单片微型计算机指令系统与程序设

31、计 高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 程序如下: MOV A,#0A4H;被加数低8位A第3章 单片微型计算机指令系统与程序设计 3.2.2 算术运算类指令 1. 加、减法指令(22条) 1) 加法指令(8条)助记符格式机器码(B)相应操作指令说明机器周期ADD A,Rn00101rrrA(A+Rn)n = 0 7 , rrr=0001111ADD A,direct00100101AA+(direct) 1ADD A,Ri0010

32、011iA(A+(Ri)i=0,11ADD A,#data00100100 dataAA+#data 1ADDC A,Rn00111rrrAA+Rn+CYn = 0 7 , rrr=0001111ADDC A,direct00110101 directAA+(direct)+CY 1ADDC A,Ri0011011iAA+(Ri)+CYi=0,11ADDC A,#data00110100 dataAA+#data+CY 1第3章 单片微型计算机指令系统与程序设计 ADD A,#0E7H ;加数低8位E7H与之相加,A=8BH,CY=1 MOV 40H,A ;A(40H),存低8位结果 MOV

33、A,#12H ;被加数高8位AADDC A,#0FH ;加数高8位+A+CY,A=22H MOV 41H,A ;存高8位运算结果3) BCD码调整指令(1条)助记符格式机器码(B)指令说明机器周期DA A11010100BCD码加法调整指令1第3章 单片微型计算机指令系统与程序设计 : 结果影响程序状态字寄存器PSW的CY、OV、AC和P 标志。 BCD(Binary Coded Decimal)码是用二进制形式表示十进制数,例如十进制数45,其BCD码形式为45H。BCD码只是一种表示形式,与其数值没有关系。 BCD码用4位二进制码表示一位十进制数,这4位二进制数的权为8421,所以BCD码

34、又称为8421码。十进制数码09所对应的二进制码如表3.3所示。 注意十 进制 数码0123456789二 进制码0000000100100011010001010110011110001001 在表中,用4位二进制数表示一个十进制数位,例如56D和87D的BCD码表示为 0101 0110 (56D) 1000 0111 (87D) 0001 0100 0011 (143D) 十进制数码与BCD码对应表第3章 单片微型计算机指令系统与程序设计第3章 单片微型计算机指令系统与程序设计 DAA指令将A中的二进制码自动调整为BCD码。 DAA指令只能跟在ADD或ADDC加法指令后,不适用于减法。

35、例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章 单片微型计算机指令系统与程序设计4) 加1减1指令(9条) 助记符格式机器码(B)相应操作指令说明机器周期INC A00000100AA+1影响PSW的P标志1INC Rn00001rrrRnRn+1n = 0 7 , rrr=0001111INC direct0101 direct(direct)(direct)+1 1INC Ri0000011i(Ri)(Ri)+1i

36、=0,11INC DPTR10100011DPTRDPTR+1 2DEC A00010100AA-1影响PSW的P标志1DEC Rn00011rrrRnRn-1n = 0 7 , rrr=0001111DEC direct00010101 direct(direct)(direct)+1 1DEC Ri0001011i(Ri)(Ri)-1i=0,11第3章 单片微型计算机指令系统与程序设计 注意:以上指令结果通常不影响程序状态字寄存器PSW。 例3.8 分别指出指令INC R0和INC R0的执行结果。设R0=30H,(30H)=00H。 解: INC R0 ;R0+1=30H+1=31HR0

37、,R0=31H INCR0 ;(R0)+1=(30H)+1(R0),(30H)=01H,R0中内容不变 第3章 单片微型计算机指令系统与程序设计2 乘、除法指令 1) 乘法指令(2条)助记符格式机器码(B)相应操作指令说明机器周期MUL AB10100100BAA*B无符号数相乘,高位存B,低位存A4 注意:乘法结果影响程序状态字寄存器PSW的OV(积超过0FFH则置1,否则为0)和CY(总是清0)以及P标志。 2) 除法指令(1条)助记符格式机器码(B)相应操作指令说明机器周期DIV AB10000100AA/B的商BA/B的余数无符号数相除,商存A,余数存B4第3章 单片微型计算机指令系统

38、与程序设计 注意: 除法结果影响程序状态字寄存器PSW的OV(除数为0则置1,否则为0)和CY(总是清0)以及P标志。 当除数为0时结果不能确定。第3章 单片微型计算机指令系统与程序设计3.2.3 逻辑运算及移位类指令1 逻辑运算指令(20条)1) 逻辑与指令(6条)助记符格式机器码(B)相应操作指令说明机器周期ANL A,direct01010101 directAAdirect按位相与1ANL A,Rn01011rrrAARnn = 0 7 , rrr=0001111ANL A,Ri0101011iAA(Ri)i=0,11ANL A,#data01010100 dataAA#data 1A

39、NL direct,A01010010 direct(direct)(direct)A不影响PSW的P标志1ANL direct,#data01010011 direct data(direct)(direct)#data不影响PSW的P标志2第3章 单片微型计算机指令系统与程序设计 注意: 以上指令结果通常影响程序状态字寄存器PSW的P标志。 逻辑与指令通常用于将一个字节中的指定位清0,其它位不变。 2) 逻辑或指令(6条)助记符格式机器码(B)相应操作指令说明机器周期ORL A,direct01000101 directAAdirect按位相或1ORL A,Rn01001rrrAARnn

40、= 0 7 , rrr=0001111ORL A,Ri0100011iAA(Ri)i=0,11ORL A,#data01000100 dataAA#data 1ORL direct,A01000010 direct(direct)(direct)A不影响PSW的P标志1ORL direct,#data01000011 direct data(direct)(direct)#data不影响PSW的P标志2第3章 单片微型计算机指令系统与程序设计 : 以上指令结果通常影响程序状态字寄存器PSW的P标志。 逻辑或指令通常用于将一个字节中的指定位置1,其余位不变。 3) 逻辑异或指令(6条)助记符格式

41、机器码(B)相应操作指令说明机器周期XRL A,direct01100101 directAA(direct)按位相异或1XRL A,Rn01101rrrAARnn=07, rrr=0001111XRL A,Ri0110011iAA (Ri)i=0,11XRL A,#data01100100 dataAA#data 1XRL direct,A01100010 direct(direct)(direct)A不影响PSW的P标志1XRL direct,#data01100011 direct data(direct)(direct)#data不影响PSW的P标志2 注意第3章 单片微型计算机指令系

42、统与程序设计 注意: 以上指令结果通常影响程序状态字寄存器PSW的P标志。 “异或”原则是相同为0,不同为1。 4) 累加器A清0和取反指令(2条)助记符格式机器码(B)相应操作指令说明机器周期C L R A11100100A00HA中内容清0,影响P标志1CPL A11110100AA中内容按位取反,影响P标志1第3章 单片微型计算机指令系统与程序设计2 循环移位指令(循环移位指令(4条)条)助记符格式机器码(B)相应操作指令说明机器周期RL A00100011A7A0循环左移1RLC A00110011CYA7A0带进位循环左移,影响CY标志1RR A00000011A7A0循环右移1RR

43、C A00010011CYA7A0带进位循环右移,影响CY标志1 注意:执行带进位的循环移位指令之前,必须给CY置位或清0。 第3章 单片微型计算机指令系统与程序设计 3.2.4 控制转移类指令 控制转移类指令的本质是改变程序计数器PC的内容,从而改变程序的执行方向。控制转移指令分为:无条件转移指令、条件转移指令和调用/返回指令。 1. 无条件转移指令(4条) 1) 长转移指令(1条) 助记符格式机器码(B)相应操作指令说明机器周期L J M P addr1600000010 addr158 addr70PCaddr16程序跳转到地址为addr16开始的地方执行2第3章 单片微型计算机指令系统

44、与程序设计 注意: 该指令结果不影响程序状态字寄存器PSW。 该指令可以转移到64 KB程序存储器中的任意位置。 2) 短转移指令 (1条)助记符格式机器码(B)相应操作指令说明机器周期A J M P addr11a10a9a800001addr70PC100addr11程序跳转到地址为PC1511addr11开始的地方执行,2 KB内绝对转移2第3章 单片微型计算机指令系统与程序设计 : 该指令结果不影响程序状态字寄存器PSW。 该指令转移范围是2 KB。 例3.9 指令KWR: AJMP KWR1的执行结果。 解:设KWR标号地址=1030H,KWR1标号地址=1100H,该指令执行后PC

45、首先加2变为1032H,然后由1032H的高5位和1100H的低11位拼装成新的PC值0001000100000000B,即程序从1100H开始执行。 注意第3章 单片微型计算机指令系统与程序设计 3) 相对转移指令 (1条)助记符格式机器码(B)相应操作指令说明机器周期SJMP rel10000000 relPCPC+rel-80H(-128)7FH(127)短转移2 : 该指令结果不影响程序状态字寄存器PSW。 该指令的转移范围是以本指令的下一条指令为中心的-128+127字节以内。 在实际应用中,LJMP、AJMP和SJMP后面的addr16、addr11或rel都是用标号来代替的,不一

46、定写出它们的具体地址。 注意第3章 单片微型计算机指令系统与程序设计1) 累加器A判0指令(2条) 助记符格式机器码(B)相应操作机器周期JZ rel0110000若A=0, 则PCPC+rel, 否则程序顺序执行 2JNZ rel01110000若A0, 则PCPC+rel, 否则程序顺序执行2 注意: 以上指令结果不影响程序状态字寄存器PSW。 转移范围与指令SJMP相同。第3章 单片微型计算机指令系统与程序设计 2) 比较转移指令(4条) 助记符格式机器码(B)相应操作机器周期CJNE A,#data,rel10110100 data rel若A#data, 则PCPC+rel,否则顺序

47、执行;若 A#data,则CY=1,否则CY=02CJNE Rn,#data,rel10111rrrdata rel若 Rn#data,则PCPC+rel,否则顺序执行;若Rn#data,则CY=1,否则CY=02CJNE Ri,#data,rel1011011idata rel若(Ri)#data,则PCPC+rel,否则顺序执行;若(Ri)#data,则CY=1,否则CY=02CJNE A,direct,rel10110101direct rel若A(direct),则PCPC+rel,否则顺序执行;若A(direct),则CY=1,否则CY=02 注意: 以上指令结果影响程序状态字寄存器

48、PSW的CY标志。 转移范围与SJMP指令相同。第3章 单片微型计算机指令系统与程序设计 3) 减1非零转移指令(2条)助记符格式机器码(B)相应操作机器周期D J N Z Rn,rel11011rrr relRnRn-1,若Rn0,则PCPC+rel, 否则顺序执行2D J N Z direct,rel11010101 d i r e c t rel(direct)(direct)-1,若 ( d i r e c t ) 0 , 则PCPC+rel,否则顺序执行2 : DJNZ指令通常用于循环程序中控制循环次数。 转移范围与SJMP指令相同。 以上指令结果不影响程序状态字寄存器PSW。 注意

49、第3章 单片微型计算机指令系统与程序设计 3. 调用和返回指令(5条) 1) 绝对调用指令(1条)助记符格式机器码(B)相应操作机器周期A C A L L addr11a10a9a810001addr70PC PC+2SP SP+1,(SP)PC07SP SP+1,(SP)PC815PC010 addr112 注意: 该指令结果不影响程序状态字寄存器PSW。 调用范围与AJMP指令相同。 第3章 单片微型计算机指令系统与程序设计4) 间接寻址的无条件转移指令(1条) 助记符格式机器码(B)相应操作指令说明机器周期JMP A+DPTR01110011PCA+DPTR64 KB内相对转移2 注意:

50、 该指令结果不影响程序状态字寄存器PSW。 该指令通常用于散转(多分支)程序。 2. 条件转移指令(8条) 第3章 单片微型计算机指令系统与程序设计 2) 长调用指令(1条) 助记符格式机器码(B)相应操作机器周期L C A L L addr1600010010addr158addr70PCPC+3SP SP+1,SPPC07SP SP+1,SPPC815PC addr162 : 该指令结果不影响程序状态字寄存器PSW。 调用范围与LJMP指令相同。 注意第3章 单片微型计算机指令系统与程序设计3) 返回指令(2条) 助记符格式机器码(B)相应操作机器周期RET00100010PC815 (S

51、P), SP SP-1PC07 (SP), SP SP-1子程序返回指令2RETI00110010PC815 SP, SP SP-1PC07 SP, SP SP-1中断返回指令2 :该指令结果不影响程序状态字寄存器PSW。 注意第3章 单片微型计算机指令系统与程序设计4) 空操作(1条)助记符格式机器码(B)相应操作指令说明NOP00000000空操作消耗1个机器周期 :该指令结果不影响程序状态字寄存器PSW。 注意第3章 单片微型计算机指令系统与程序设计 3.2.5 位操作类指令 位操作指令的操作数是“位”,其取值只能是0或1,故又称之为布尔操作指令。位操作指令的操作对象是片内RAM的位寻址

52、区(即20H2FH)和特殊功能寄存器SFR中的11个可位寻址的寄存器。片内RAM的20H2FH共16个单元128个位,我们为这128个位的每个位均定义一个名称:00H7FH,称为位地址,如表3.4所示。对于特殊功能寄存器SFR中可位寻址的寄存器的每个位也有名称定义,如表3.5所示。 第3章 单片微型计算机指令系统与程序设计表3.4 片内RAM位寻址区的位地址分布位地址/位名称 字节地址D7D6D5D4D3D2D1D07F7E7D7C7B7A79782FH77767574737271702EH6F6E6D6C6B6A69682DH67666564636261602CH5F5E5D5C5B5A59

53、582BH57565554535251502AH4F4E4D4C4B4A494829H474645444342414028H第3章 单片微型计算机指令系统与程序设计3F3E3D3C3B3A393827H373635343332313026H2F2E2D2C2B2A292825H272625242322212024H1F1E1D1C1B1A191823H171615141312111022H0F0E0D0C0B0A090821H070605040302010020H 续表(2)第3章 单片微型计算机指令系统与程序设计SFR位地址/位名称字节地址D7D6D5D4D3D2D1D0BF7HF6HF5H

54、F4HF3HF2HF1HF0HF0HACCE7HE6HE5HE4HE3HE2HE1HE0HE0HACC.7ACC.6ACC.5ACC.4ACC.3ACC.2ACC.1ACC.0PSWD7HD6HD5HD4HD3HD2HD1HD0HD0HCYACF0RS1RS0OVF1P表3.5 SFR中的位地址分布第3章 单片微型计算机指令系统与程序设计 续表(2)IPBFHBEHBDHBCHBBHBAHB9HB8HB8HPSPT1PX1PT0PX0P3B7HB6HB5HB4HB3HB2HB1HB0HB0HP3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0IEAFHAEHADHACHABHAAH

55、A9HA8HA8HEAESET1EX1ET0EX0P2A7HA6HA5HA4HA3HA2HA1HA0HA0HP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0第3章 单片微型计算机指令系统与程序设计SCON9FH9EH9DH9CH9BH9AH99H98H98HSM0SM1SM2RENTB8RB8TIRIP197H96H95H94H93H92H91H90H90HP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0TCON8FH8EH8DH8CH8BH8AH89H88H88HTF1TR1TF0TR0IE1IT1IE0IT0P087H86H85H84H83H82H81H80

56、H80HP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0 续表(3)第3章 单片微型计算机指令系统与程序设计 注意:位传送指令的操作数中必须有一个是进位位C,不能在其它两个位之间直接传送。进位位C也称为位累加器。 2. 位置位和位清零指令(4条)助记符格式机器码(B)相应操作指令说明机器周期CLR C11000011CY 0位清0指令,结果影响CY标志1CLR bit11000010 bitbit 0位清0指令,结果不影响PSW1SETB C11010011CY1位置1指令,结果影响CY标志1SETB bit11010010 bitbit 1位置1指令,结果不影响PSW1第3章

57、 单片微型计算机指令系统与程序设计3. 位运算指令(6条) 助记符格式机器码(B)相应操作机器周期JB bit,rel00100000 bit rel若bit=1,则PCPC+rel,否则顺序执行2JNB bit,rel00110000 bit rel若bit=0,则PCPC+rel,否则顺序执行2JBC bit,rel00010000 bit rel若 bit=1,则PCPC+rel,bit0,否则顺序执行2 注意: JBC与JB指令的区别是:前者转移后并把寻址位清0,后者只转移不清0寻址位。 以上指令结果不影响程序状态字寄存器PSW。第3章 单片微型计算机指令系统与程序设计5. 判CY标志

58、指令(2条) 助记符格式机器码(B)相应操作机器周期JC rel01000000若CY=0,则PCPC+rel,否则顺序执行2JNC rel01010000若CY0,则PCPC+rel,否则顺序执行2 注意:以上结果不影响程序状态字寄存器PSW。 例 3 . 1 0 用 位 操 作 指 令 编 程 计 算 逻 辑 方 程P1.7=ACC.0(B.0+P2.1)+ ,其中“+”表示逻辑或,“”表示逻辑与。第3章 单片微型计算机指令系统与程序设计 对于位寻址,有以下三种不同的写法。 第一种是直接地址写法, 如 MOV C,0D2H,其中,0D2H表示PSW中的OV位地址。 第二种是点操作符写法,如

59、 MOV C , 0D0H.2。 第三种是位名称写法,在指令格式中直接采用位定义名称,这种方式只适用于可以位寻址的SFR,如MOV C,OV。 1. 位传送指令(2条)助记符格式机器码(B)相应操作指令说明机器周期MOV C,bit10100010CY bit位传送指令,结果影响CY标志2MOV bit,C10010010bit CY位传送指令,结果不影响PSW2第3章 单片微型计算机指令系统与程序设计解: 程序段如下:MOV C,B.0;B.0CORL C,P2.1 ;C或P2.1CANL C,ACC.0;C与ACC.0C,即ACC.0(B.0+P2.1) CORL C,/P3.2 ;C 或

60、/P3.2, 即ACC.0(B.0+P2.1)+ CMOV P1.7,C;C P1.7第3章 单片微型计算机指令系统与程序设计 3.2.6 常用伪指令 单片机汇编语言程序设计中,除了使用指令系统规定的指令外,还要用到一些伪指令。伪指令又称指示性指令,具有和指令类似的形式,但汇编时伪指令并不产生可执行的目标代码,只是对汇编过程进行某种控制或提供某些汇编信息。下面对常用的伪指令作一简单介绍。第3章 单片微型计算机指令系统与程序设计 1. 定位伪指令ORG 格式:标号: ORG 地址表达式 功能:规定程序块或数据块存放的起始位置。 例如:ORG 1000H;表示下面指令MOV A,#20H存放于10

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论