《3、89S51单片机指系统.ppt》由会员分享,可在线阅读,更多相关《3、89S51单片机指系统.ppt(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 第第3章章 MCS-51MCS-51的指令系统的指令系统1 1、指令基本格式指令基本格式2 2、指令操作数的指令操作数的寻址方式寻址方式3 3、指令系统概述指令系统概述4 4、指令系统分类指令系统分类及及解读解读5 5、伪指令伪指令6 6、指令记忆指令记忆12/18/20221 3.1 3.1 指令基本格式指令基本格式 指令由四部分组成,如下:指令由四部分组成,如下:标号:标号:操作码操作码 操作数,操作数操作数,操作数 ;注释;注释 *操作码由字母助记符组成,表示指令功能;*操作数由数据或数据存放地址组成,表示指令操作对象;*标号由24个英语字母和0-9十个数字组成,表示该指令首地址或指令
2、段名称;*注释可由中英文或符号组成,说明指令或程序含义;*注意各部分之间的分割符号不同,有方括号部分有时可没有。12/18/20222 3.2 3.2 指令操作数指令操作数的的寻址方式寻址方式 操操作作数数是是参参与与操操作作的的数数据据或或数数据据的的存存放放地地方方,寻寻找找操操作作数数的的方方式式叫叫寻寻址址方方式式。MCS-51MCS-51指指令系统共设置有令系统共设置有7 7种寻址方式,如下:种寻址方式,如下:1 1、立即寻址立即寻址立即寻址立即寻址2 2、直接寻址直接寻址直接寻址直接寻址 3 3、寄存器寻址寄存器寻址寄存器寻址寄存器寻址4 4、寄存器间接寻址寄存器间接寻址寄存器间接
3、寻址寄存器间接寻址5 5、变址寻址变址寻址变址寻址变址寻址6 6、相对寻址相对寻址相对寻址相对寻址7 7、位寻址位寻址位寻址位寻址12/18/20223 3.3 3.3 指令系统概述指令系统概述n n单片机指令有多种表示形式:机器码形式、助记符形单片机指令有多种表示形式:机器码形式、助记符形单片机指令有多种表示形式:机器码形式、助记符形单片机指令有多种表示形式:机器码形式、助记符形式和语言形式等;式和语言形式等;式和语言形式等;式和语言形式等;n nMCS-51MCS-51MCS-51MCS-51指令系统共有指令系统共有指令系统共有指令系统共有33333333种功能、种功能、种功能、种功能、4
4、2424242种助记符、种助记符、种助记符、种助记符、111111111111条指条指条指条指令。令。令。令。n n指令按字节分类有指令按字节分类有指令按字节分类有指令按字节分类有单字节指令单字节指令单字节指令单字节指令、双字节指令双字节指令双字节指令双字节指令和和和和三字节三字节三字节三字节指令指令指令指令。按执行周期分类有。按执行周期分类有。按执行周期分类有。按执行周期分类有单周期指令单周期指令单周期指令单周期指令、双双双双周期周期周期周期指令指令指令指令和和和和四四四四周期周期周期周期指令指令指令指令。n n指令系统越丰富,指令系统越丰富,指令系统越丰富,指令系统越丰富,CPUCPUCP
5、UCPU的功能就越强。的功能就越强。的功能就越强。的功能就越强。12/18/20224 3.43.4、指令系统分类指令系统分类及解读及解读n n 指令系统分类指令系统分类数据传送指令(数据传送指令(29条)条)算术运算指令(算术运算指令(24条)条)逻辑运算指令(逻辑运算指令(24条)条)控制转移指令(控制转移指令(17条)条)位操作指令(位操作指令(17条)条)常用伪指令常用伪指令 12/18/2022575H90HPC:0030H0031H0032H55H操作码目标地址立即数P1口寄存器程序存储区P155H *立即数寻址立即数寻址 在指令中直接给出立即数(常数在指令中直接给出立即数(常数,
6、用,用#data表示表示)例如:例如:MOV 目标地址,目标地址,#data(这里这里datadata为为8 8位常数位常数)MOV DPTR,#data16(这里这里datadata为为1616位常数位常数)实训程序实训程序1:MOV P1,#55H 12/18/20226 *直接寻址直接寻址n在在指令中给出操作数所在的内部指令中给出操作数所在的内部RAM区或区或SFR的地的地址(用址(用direct表示表示)n实训程序实训程序2:MOV 20H,#0F0H MOV P1,20H75H20HF0H程序存储区PC:0033H0034H0033H是该指令存放的起始地址。85H20H90H0035
7、H0036H0037H0038HMOV 20H,#0F0HMOV P1,20H12/18/20227 *直接寻址图示直接寻址图示 片内RAM区20H0F0HP10F0H MOV 20H MOV 20H,#0F0H#0F0H MOV P1 MOV P1,20H 20H#0F0H地址地址地址地址地址地址地址地址12/18/20228 *寄存器寻址寄存器寻址n在指令中给出操作数所在的寄存器,包括A、R0R7、B、DPTR实训程序3:MOV A,#0F0H MOV P1,APC:0039HF0H指令存放的地址F0HF5HACCF0HP174H90H12/18/20229 *寄存器相对寻址寄存器相对寻址
8、n在在指令中给出存放操作数单元地址的间接寻址寄存指令中给出存放操作数单元地址的间接寻址寄存器器 用R0、R1、DPTR表示 实训程序5:MOV 20H,#0AAH MOV R0,#20H MOV P1,R0PC:003DH8690程序存储区782020AA75MOV 20H,#0AAHMOV R0,#20HMOV P1,R012/18/202210 *寄存器相对寻址图例寄存器相对寻址图例20H内部RAM区R0AAHP120HAAH在此它是操作在此它是操作在此它是操作在此它是操作数所在存储单数所在存储单数所在存储单数所在存储单元的地址元的地址元的地址元的地址返回返回 MOV 20H,#0AAH
9、MOV R0,#20H MOV P1,R012/18/202211 *变址寻址变址寻址 (变址变址+基址寄)接寻址基址寄)接寻址 基址寄存器:基址寄存器:基址寄存器:基址寄存器:DPTRDPTR、PCPC。变址寄存器:变址寄存器:变址寄存器:变址寄存器:A A。此类寻址主要用于查表操作。此类寻址主要用于查表操作。此类寻址主要用于查表操作。此类寻址主要用于查表操作。例如:例如:例如:例如:MOVC AMOVC A,A+DPTRA+DPTR (指令代码为指令代码为指令代码为指令代码为1001 00111001 00111001 00111001 0011)93H2040H20E0HDPHDPLAL
10、UA47H47HE020H00H程序存储区12/18/202212 *相对寻址相对寻址 例:SJMP SJMP 54H54H 1056741000801001541002301055BDALU1002PC程序存储区这是两字节指令,代码为1000 0000(80H)0101 0100(54H)10001001下一条指令代码12/18/202213 *位寻址位寻址返回 例:SETB 3DHSETB 3DH 指令代码为指令代码为D2HD2H、3DH3DH单元地址单元地址单元地址单元地址2FH2FH2FH2FH 2EH2EH2EH2EH2DH2DH2DH2DH2CH2CH2CH2CH2BH2BH2BH
11、2BH2AH2AH2AH2AH29H29H29H29H28H28H28H28H 26H26H26H26H25H25H25H25H24H24H24H24H23H23H23H23H22H22H22H22H21H21H21H21H20H20H20H20H7F7F77776F6F67675F5F57574F4F474737372F2F27271F1F17170F0F0707 MSBMSBMSBMSB 位地址位地址位地址位地址 LSBLSBLSBLSB7E7E76766E6E66665E5E56564E4E4646 36362E2E26261E1E16160E0E06067D7D75756D6D6565
12、5D5D55554D4D454535352D2D25251D1D15150D0D05057C7C74746C6C64645C5C54544C4C4444 34342C2C24241C1C14140C0C04047B7B73736B6B63635B5B53534B4B4343 33332B2B23231B1B13130B0B03037A7A72726A6A62625A5A52524A4A4242 32322A2A22221A1A12120A0A020279797171696961615959515149494141 3131292921211919111109090101787870706868
13、60605858505048484040 3030282820201818101008080000 3D3D 3C3C 3B3B3F3F 3E3E3A3A 3939383827H27H112/18/202214 阶段练习阶段练习12/18/202215 寻址比较练习寻址比较练习 MOV 30H,#0FFH ;(30H)=FFHMOV 30H,#0FFH ;(30H)=FFHMOV R0,#30H ;R0=30HMOV R0,#30H ;R0=30HMOV AMOV A,R0 ;R0 ;A=30HA=30H MOV AMOV A,R0 ;R0 ;A=FFHA=FFHMOV P1MOV P1,A
14、;P1=00H A ;P1=00H 返回返回12/18/202216 51 51指令系统分类指令系统分类 指令系统有指令系统有111条指令常分条指令常分5类类1、数据传送指令(、数据传送指令(29条)条)2、算术运算指令(、算术运算指令(24条)条)3、逻辑运算指令(、逻辑运算指令(24条)条)4、控制转移指令(、控制转移指令(17条)条)5、位操作指令、位操作指令 (17条)条)12/18/202217 数据传输类指令数据传输类指令12/18/202218 内部传输类指令内部传输类指令15条条12/18/202219 16位数据传送指令(位数据传送指令(1条)条)外部数据传送指令(外部数据传
15、送指令(4条)条)12/18/202220 交换指令和查表类指令(交换指令和查表类指令(9 9条)条)12/18/202221算术运算类指令 1.加、减法指令(22条12/18/202222 加加1 1、减、减1 1指令(指令(9 9条条)12/18/202223 除法指令 DIV AB 乘法指令 MUL AB 乘、除法指令(各乘、除法指令(各1 1条)条)12/18/202224逻辑运算及移位类指令(逻辑运算及移位类指令(2020条)条)累加器累加器A A清零和取反指令清零和取反指令 CLR A CPL A 12/18/202225 逻辑与指令(逻辑与指令(6 6条)逻辑或指令(条)逻辑或指
16、令(6 6条)条)-逻辑异或指令逻辑异或指令6 6条条12/18/202226.循环移位指令(循环移位指令(4 4条条)12/18/202227 控制转移类指令控制转移类指令12/18/202228 有条件转移指令(有条件转移指令(8 8条)条)12/18/202229 调用和返回指令(调用和返回指令(5 5条)条)12/18/202230 位操作类指令位操作类指令 12/18/202231 常用伪指令常用伪指令12/18/202232*数据传送类指令数据传送类指令n n完成传送或者交换操作完成传送或者交换操作完成传送或者交换操作完成传送或者交换操作n n一般不影响标志位一般不影响标志位一般不
17、影响标志位一般不影响标志位PSWPSWPSWPSW,以累加器以累加器以累加器以累加器A A A A为目的的指为目的的指为目的的指为目的的指令将影响奇偶标志令将影响奇偶标志令将影响奇偶标志令将影响奇偶标志P P P Pn n用到的用到的用到的用到的助记符助记符助记符助记符有有有有MOVMOVMOVMOV,MOVCMOVCMOVCMOVC,MOVXMOVXMOVXMOVX,XCHXCHXCHXCH,XCHDXCHDXCHDXCHD,SWAPSWAPSWAPSWAP,PUSHPUSHPUSHPUSH,POPPOPPOPPOP指令基本格式:指令基本格式:操作码操作码 ,返回返回结束结束12/18/20
18、2233 数据传送类指令数据传送类指令是内部是内部是内部是内部RAMRAM、寄存器、外部寄存器、外部寄存器、外部寄存器、外部RAMRAM以及程序存储器之以及程序存储器之以及程序存储器之以及程序存储器之间的数据传送。间的数据传送。间的数据传送。间的数据传送。将数据从源地址传送到目的地址,源地址内容不变。将数据从源地址传送到目的地址,源地址内容不变。将数据从源地址传送到目的地址,源地址内容不变。将数据从源地址传送到目的地址,源地址内容不变。指令基本格式:指令基本格式:指令基本格式:指令基本格式:MOV MOV ,1 1内部内部内部内部8 8位数据传送指令位数据传送指令位数据传送指令位数据传送指令1
19、.1.以累加器以累加器以累加器以累加器A A为目的地址的传送指令为目的地址的传送指令为目的地址的传送指令为目的地址的传送指令 练习练习练习练习112.2.以以以以RnRn为目的地址的传送指令为目的地址的传送指令为目的地址的传送指令为目的地址的传送指令3.3.以直接地址为目的地址的传送指令以直接地址为目的地址的传送指令以直接地址为目的地址的传送指令以直接地址为目的地址的传送指令4.4.以寄存器间接地址为目的地址的传送指令以寄存器间接地址为目的地址的传送指令以寄存器间接地址为目的地址的传送指令以寄存器间接地址为目的地址的传送指令 练习练习练习练习222 21616位数据传送指令位数据传送指令位数据
20、传送指令位数据传送指令3 3内外数据传送指令内外数据传送指令内外数据传送指令内外数据传送指令 例程演示例程演示例程演示例程演示P46S33.ASMP46S33.ASM12/18/202234*注意:注意:注意:注意:1.1.外部数据只能通过累加器外部数据只能通过累加器外部数据只能通过累加器外部数据只能通过累加器A A进行数据传送。进行数据传送。进行数据传送。进行数据传送。2.2.累加器累加器累加器累加器A A与外部与外部与外部与外部RAMRAM之间只能用间接寻址方之间只能用间接寻址方之间只能用间接寻址方之间只能用间接寻址方 式,式,式,式,间接寻址寄存器间接寻址寄存器间接寻址寄存器间接寻址寄存
21、器为为为为DPTRDPTR、R0R0、R1R1 3.3.部分指令影响部分指令影响部分指令影响部分指令影响PSWPSW中的中的中的中的P P标志。标志。标志。标志。4 4交换和查表类指令交换和查表类指令交换和查表类指令交换和查表类指令 例程演示例程演示例程演示例程演示P47S34.ASMP47S34.ASM 1.1.全字节交换指令全字节交换指令全字节交换指令全字节交换指令1.1.半字节交换指令半字节交换指令半字节交换指令半字节交换指令例如:例如:例如:例如:XCHD AXCHD A,Ri Ri 这里假设这里假设这里假设这里假设i=0i=0A源操作数Rn(direct)(Ri)81F5F581A8
22、 1F 58 5F 1寄存器R05B5B12/18/2022353.3.累加器累加器A中高中高4位和低位和低4位交换位交换 SWAP A4.查表类指令:查表类指令:MOVC A,A+PC MOVC A,A+DPTR注意:除堆栈操作指令外,其他交换和查表类指令执行后注意:除堆栈操作指令外,其他交换和查表类指令执行后大都影响大都影响PSW中的中的P标志。标志。5.堆栈操作指令:堆栈操作指令:例程演示例程演示P48S35.ASM注意:注意:1.堆栈的特点。堆栈的特点。2.堆栈操作必须是字节操作,且只能直接寻址。堆栈操作必须是字节操作,且只能直接寻址。3.堆栈通常用于临时保护数据及子程序调用时保护现场
23、堆栈通常用于临时保护数据及子程序调用时保护现场和恢复现场。和恢复现场。n*110001011100010112/18/202236*片内传送片内传送 MOVMOVn在A累加器、工作寄存器R0R7、片内RAM与SFR(direct、Ri)之间传送数据。AR0R7directRi#datadirect2#data16DPTR12/18/202237 *片内外传送片内外传送-MOVXMOVXn在片外RAM(外扩I/O口)与A累加器之间传送。仅采用寄存器相对寻址方式。RiDPTRA12/18/202238 *ROM ROM 查表传送查表传送MOVCMOVCn读取存放在程序存储器ROM中的数据,通常是表
24、格数据。采用变址寻址变址寻址方式。nMOVC A,A+DPTR MOVC A,A+PC ROM存储器A12/18/202239 *查表查表变址寻址变址寻址 (变址寄存器变址寄存器A+A+基址寄存器基址寄存器DPTR)DPTR)间接寻址间接寻址例如:例如:例如:例如:MOV DPTRMOV DPTR,#2000H#2000H MOV A MOV A,#0E0H#0E0H MOVC A MOVC A,A+DPTRA+DPTR (指令代码为指令代码为指令代码为指令代码为93939393H H H H)93H2040H20E0HE0HDPHDPLALUA47H47H20H00H程序存储区程序段程序存储
25、区表格段12/18/202240 *堆栈操作堆栈操作PUSH/POPPUSH/POPn入栈:PUSH direct;SP+1 SP,(direct)(SP)n出栈:POP direct;(SP)(direct),SP-1 SP例:MOV SP,#50H ;SP=50H MOV A,#01H ;A =01H PUSH ACC ;(51H)=01H POP 30H ;(30H)=01H MOV A,30H ;A=01H 12/18/202241 PUSH/POPPUSH/POP图例图例 堆栈区堆栈区00H7FHSP 50H SP 51H00HAAHAAHACC55HAAH片内RAMSP 返回返回1
26、2/18/202242 *算术运算类指令算术运算类指令算术运算原理类指令主要是对8位无符号数进行算术操作。算术运算类指令都影响PSW的有关位。用到的助记符有ADD,ADDC,SUBB,MUL,DIV,INC,DEC,DA。除INC、DEC指令外,所有加减运算类指令的目的操作数均为A,源操作数可为Rn、direct、#data、Ri乘除指令使用寄存器A、B返返回回结束结束12/18/202243 *算术运算类指令算术运算类指令加、减法指令加、减法指令 程序演示程序演示P49S36.ASMP49S36.ASM注意:执行结果都在累加器注意:执行结果都在累加器A A中,并且均影响中,并且均影响PSWP
27、SW中的中的CYCY、OVOV、ACAC和和P P标志。标志。BCDBCD码调整指令:码调整指令:程序演示程序演示P50S37.ASMP50S37.ASM注意:注意:DA ADA A指令只能跟在指令只能跟在ADDADD或或ADDCADDC加法指令后,不适加法指令后,不适用于减法指令。用于减法指令。乘除法指令乘除法指令12/18/202244 *逻辑运算类指令逻辑运算类指令这类指令主要是对这类指令主要是对这类指令主要是对这类指令主要是对2 2 2 2个操作数进行逻辑操作,个操作数进行逻辑操作,个操作数进行逻辑操作,个操作数进行逻辑操作,结果送结果送结果送结果送到到到到A A A A和直接寻址单元
28、和直接寻址单元和直接寻址单元和直接寻址单元。逻辑运算类指令一般逻辑运算类指令一般逻辑运算类指令一般逻辑运算类指令一般不影响不影响不影响不影响PSWPSWPSWPSW的有关位,的有关位,的有关位,的有关位,只只只只有当目的操作数为有当目的操作数为有当目的操作数为有当目的操作数为ACCACCACCACC时对奇偶位有时对奇偶位有时对奇偶位有时对奇偶位有影响。影响。影响。影响。主要的助记符主要的助记符主要的助记符主要的助记符为为为为ANLANLANLANL(与)与)与)与)、ORLORLORLORL(或)、或)、或)、或)、XRLXRLXRLXRL(异或异或异或异或)、)、)、)、CPLCPLCPLC
29、PL(取反)取反)取反)取反)、CLRCLRCLRCLR(清零)以清零)以清零)以清零)以及循环指令及循环指令及循环指令及循环指令RRRRRRRR、RRCRRCRRCRRC、RLRLRLRL、RLCRLCRLCRLC。结束结束返回返回12/18/202245A.0A.7A.0A.7A.0A.7A.0A.7CYCYn RL An RR An RLC An RRC A执行带进位的循环移位指令之前,必须给执行带进位的循环移位指令之前,必须给执行带进位的循环移位指令之前,必须给执行带进位的循环移位指令之前,必须给CYCY置位或清零。置位或清零。置位或清零。置位或清零。12/18/202246*逻辑运算
30、及移位类指令逻辑运算及移位类指令逻辑运算指令逻辑运算指令1.1.逻辑与指令:逻辑与指令:某数与某数与0 0相与为相与为0,0,与与1 1相与不变相与不变.2.2.逻辑或指令:逻辑或指令:某数与某数与1 1相或为相或为1,1,与与1 1相或不变相或不变.3.3.逻辑异或指令逻辑异或指令:某数与某数与1 1异或取反异或取反,与与0 0异或不变异或不变.4.4.累加器累加器A A清清0 0和取反指令和取反指令循环移位指令循环移位指令12/18/202247 控制转移类指令控制转移类指令作用:控制程序转移到新的PC上,从而改变程序的运行方向,实现分支、循环、子程序调用与返回等程序功能。这类指令是通过修
31、改程序计数器PC的值来实现的,强调:转移的目标地址在编程时用标号来指代,无须写出具体的PC值。分类:无条件(绝对)转移、条件转移及调用子程序和返回指令三类。注意:各指令的转移范围。12/18/202248 绝对转移绝对转移LJMPLJMP、AJMPAJMP、SJMPSJMP、JMPJMP0003H AF32HPCAF32H0003H假设执行该指令前,PC的值为0003H。1.1.长转移指令:长转移指令:长转移指令:长转移指令:LJMP AF32H LJMP AF32H ;AF32H AF32H PCPC12/18/2022492.2.绝对转移指令绝对转移指令绝对转移指令绝对转移指令 AJMP
32、AJMP addr11 addr11;PC+2 PC+2PCPC,addr11 addr11 PC.10PC.0PC.10PC.0 PC高5位(保持不变)PC低11位A10A9A800 001A7A6A5A4A3A2A1A0操作码(第一字节)操作数(第二字节)1111位转移地址的形成示意图位转移地址的形成示意图程序计数器PC12/18/202250 3.相对转移指令:相对转移指令:相对转移指令:相对转移指令:SJMP SJMP rel rel ;PC+2+PC+2+relrel PCPC relrel 是一个是一个是一个是一个8 8位带符号数位带符号数位带符号数位带符号数(2(2的补码的补码的
33、补码的补码),其范围为,其范围为,其范围为,其范围为 128 +127128 +127。后退128字节前移127字节指令执行前PC所指的地址外部ROM1000 0000rel12/18/202251 SJMP SJMP relrel 相对寻址相对寻址 例:SJMP 54HSJMP 54H 1056741000801001541002301055BDALU1000HPC程序存储区 1002H下一条指令代码SJMP 54HSJMP 54H12/18/202252 条件转移条件转移n nJZJZ、JNZJNZ、JCJC、JNCJNC、JBJB、JNBJNB、CJNECJNE、DJNZDJNZn n格
34、式:格式:跳转指令跳转指令 条件条件,目标地址(相对地址,目标地址(相对地址relrel)n n当条件满足时跳转到目标地址,否则顺序向下执行当条件满足时跳转到目标地址,否则顺序向下执行。n n例:例:JZ JZ relrel ;A=0A=0?JNZ JNZ relrel ;A0A0?JC JC relrel ;Cy=1Cy=1?JNC JNC relrel ;Cy 1 Cy 1?JB bit JB bit,relrel ;bit=1bit=1?JNB bit JNB bit,relrel ;bit 1 bit 1?CJNE A CJNE A,#data#data,relrel ;A#data?
35、A#data?DJNZ DJNZ RnRn,relrel ;Rn-1 Rn-1 RnRn ,Rn0 Rn0?12/18/202253 条件转移指令条件转移指令 JZ rel JZ rel ;A=0A=0:PC+2+rel PC+2+rel PC PC 累加器累加器A A判判0 0指令:指令:A0A0:PC+2 PC+2 PC PC JNZ rel JNZ rel ;A0A0:PC+2+PC+2+relrel PC PC A=0 A=0:PC+2PC+2 PC PC 比较转移指令:比较转移指令:CJNE ACJNE A,directdirect,rel rel ;A=(direct)A=(dir
36、ect):PC+3PC+3PCPC,0 0C C A A(direct)(direct):PC+3+relPC+3+relPCPC,0 0C C A A(direct)(direct):PC+3+relPC+3+relPCPC,1 1C CCJNE ACJNE A,#data#data,rel rel ;A=dataA=data:PC+3PC+3PCPC,0 0C C A Adatadata:PC+3+relPC+3+relPCPC,0 0C C A Adatadata:PC+3+relPC+3+relPCPC,1 1C C12/18/202254CJNE CJNE RnRn,#data#da
37、ta,rel rel ;RnRn=data=data:PC+3PC+3PCPC,0 0C C RnRndatadata:PC+3+relPC+3+relPCPC,0 0C C RnRndatadata:PC+3+relPC+3+relPCPC,1 1C C CJNE CJNE RiRi,#data#data,rel rel ;(RiRi)=data)=data:PC+3PC+3PCPC,0 0C C (RiRi)datadata:PC+3+relPC+3+relPCPC,0 0C C (RiRi)datadata:PC+3+relPC+3+relPCPC,1 1C C 减减减减1 1非零转移指
38、令:非零转移指令:非零转移指令:非零转移指令:DJNZ DJNZ RnRn,rel rel ;RnRn11RnRn,Rn0Rn0:PC+2+relPC+2+relPCPC RnRn=0=0:PC+2 PC+2PCPCDJNZ directDJNZ direct,rel rel ;(direct)1(direct)1(direct)(direct),(direct)0 (direct)0:PC+3+rel PC+3+relPCPC (direct)=0 (direct)=0:PC+3 PC+3PCPC12/18/202255 条件转移类指令范例方案一条件转移类指令范例方案一n将00H0FH这16
39、个数顺序地置入片内RAM20H2FH单元中。MOV R0,#20H MOV R7,#0FH CLR ALOOP:MOV R0,A INC A INC R0 DJNZ R7,LOOP SJMP$还有什么方法实还有什么方法实现循环的终止现循环的终止?12/18/202256条件转移类指令范例方案二条件转移类指令范例方案二 MOV R0,#20H MOV R7,#0FH CLR ALOOP:MOV R0,A INC A INC R0 CJNE A,#0FH,LOOP SJMP$12/18/202257 条件转移类指令范例方案三条件转移类指令范例方案三 MOV R0MOV R0,#20H#20H MO
40、V A MOV A,#0FH#0FH MOV 30H MOV 30H,#00H#00H LOOP LOOP:MOV R0MOV R0,30H30H INC 30H INC 30H INC R0 INC R0 DEC A DEC A JNZ LOOP JNZ LOOP SJMP$SJMP$12/18/202258 条件转移类指令范例方案四条件转移类指令范例方案四 MOV R0,#20H MOV A,#0FH MOV 30H,#00H LOOP:MOV R0,30H INC 30H INC R0 SUBB A,#01H JNC LOOP SJMP$返回返回12/18/202259 子程序调用与返回
41、子程序调用与返回n nLCALL addr16LCALL addr16;PC+3 PC PC+3 PC PC+3 PC PC+3 PC 即即即即PCPCPCPC指向当前指向当前指向当前指向当前PCPCPCPC,PCLPCLPCLPCL入栈入栈入栈入栈,PCHPCHPCHPCH入栈,入栈,入栈,入栈,addr16 PCaddr16 PCaddr16 PCaddr16 PC,程序转去执行子程序程序转去执行子程序程序转去执行子程序程序转去执行子程序n nACALL addr11ACALL addr11n nRETRETPCHPCHPCHPCH出栈出栈出栈出栈,PCLPCLPCLPCL出栈,即出栈,即
42、出栈,即出栈,即PCPCPCPC重新指向调用后的下一重新指向调用后的下一重新指向调用后的下一重新指向调用后的下一条指令,程序继续向下执行条指令,程序继续向下执行条指令,程序继续向下执行条指令,程序继续向下执行。n nRETIRETI返回返回12/18/202260 子程序调用与返回范例子程序调用与返回范例n例:例:ORG 0050H ORG 0050H MAIN MAIN:MOV A MOV A,#00H#00H ;PC=0052HPC=0052H,A=00HA=00H0052H0052H:LCALL PROM1 LCALL PROM1 ;PC=0100HPC=0100H,A=00HA=00H
43、0055H0055H:MOV A MOV A,R0 R0 ;PC=0056HPC=0056H,A=01HA=01H SJMP$SJMP$ORG 0100H ORG 0100H PROM1 PROM1:MOV R0MOV R0,A A ;PC=0101HPC=0101H,A=00HA=00H,;R0=00HR0=00H INC R0 INC R0 ;PC=0102HPC=0102H,R0=01HR0=01H RET RET ;PC=0055HPC=0055H,返回返回12/18/202261 位操作类指令位操作类指令位传送指令位传送指令位传送指令位传送指令位置位和位清零指令位置位和位清零指令位置
44、位和位清零指令位置位和位清零指令位运算指令位运算指令位运算指令位运算指令位转移指令位转移指令位转移指令位转移指令判判判判CYCY标志指令标志指令标志指令标志指令应用举例:应用举例:应用举例:应用举例:程序演示程序演示程序演示程序演示P57S310.ASMP57S310.ASM12/18/202262 位操作指令位操作指令位数据传送指令位数据传送指令 MOV CMOV C,bit MOV bitbit MOV bit,C C位修正位修正(复位与置位复位与置位)指令指令 SETB bit CLR bitSETB bit CLR bit位逻辑运算指令位逻辑运算指令 ANLANL、ORLORL、CPL
45、CPL,仅对仅对C C及可位及可位寻址位操寻址位操作,且作,且必须必须以以C C为其中一个操作数为其中一个操作数。返回返回12/18/202263课堂练习:课堂练习:P61 P61 习题习题3.163.16单元地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F776F675F574F473F372F271F170F07 MSB 位地址 LSB7E766E665E564E463E362E261E160E067D756D655D554D453D352D251D150D057C746C645C544C443C342C241C140C047B736
46、B635B534B433B332B231B130B037A726A625A524A423A322A221A120A027971696159514941393129211911090178706860585048403830282018100800R RA AMM 位位位位寻寻寻寻址址址址区区区区位位位位地地地地址址址址表表表表返回返回12/18/202264 常用伪指令常用伪指令n n定位伪指令定位伪指令定位伪指令定位伪指令 ORGORGORGORGn n定义字节数据伪指令定义字节数据伪指令定义字节数据伪指令定义字节数据伪指令 DBDBDBDBn n定义字数据伪指令定义字数据伪指令定义字数据伪
47、指令定义字数据伪指令 DWDWDWDWn n定义空间伪指令定义空间伪指令定义空间伪指令定义空间伪指令 DSDSDSDSn n符号定义伪指令符号定义伪指令符号定义伪指令符号定义伪指令 EQU EQU EQU EQU 或或或或n n数据赋值伪指令数据赋值伪指令数据赋值伪指令数据赋值伪指令 DATADATADATADATAn n数据地址赋值伪指令数据地址赋值伪指令数据地址赋值伪指令数据地址赋值伪指令 XDATAXDATAXDATAXDATAn n汇编结束伪指令汇编结束伪指令汇编结束伪指令汇编结束伪指令 ENDENDENDEND返回返回12/18/202265 本章主要知识点本章主要知识点结束结束返回
48、返回12/18/202266 关于 指令类型记忆指令格式指令格式:标号标号:操作码操作码 操作数操作数1,操作数操作数2 ;注释注释寻址方式寻址方式:立即立即;直接直接;寄存器寄存器;间接寄存器间接寄存器,变址变址;相对相对;位寻址等七种位寻址等七种 指令分类:指令分类:一、传送指令:一、传送指令:1,内部传送;内部传送;2,内外传送;,内外传送;3,查表传送;,查表传送;4,堆栈传送;,堆栈传送;5,交换传送;,交换传送;二、运算指令二、运算指令:1,加减运算;,加减运算;2,乘除运算,乘除运算,3,自增自减运算;,自增自减运算;4,逻辑与或异;,逻辑与或异;5,循环左右移;,循环左右移;6
49、,附带,附带A清清A取反取反三、调转指令三、调转指令;1,长短调;,长短调;2,长短跳;,长短跳;3,减,减1非零跳;非零跳;4,比较不等跳;,比较不等跳;5,判,判A判判C判判B跳;跳;四、位操作指令:四、位操作指令:1,位传送;,位传送;2,位与或;,位与或;3,位置位清位取反;,位置位清位取反;五、伪指令:五、伪指令:1,ORG,END;2,EQU,BIT;2,DB,DW,DS;12/18/202267 练习练习 1 1 设内部设内部设内部设内部RAMRAM中中中中3333HH单元中内容为单元中内容为单元中内容为单元中内容为4444HH,34H34H单元中内容为单元中内容为单元中内容为单
50、元中内容为0 0AFHAFH,R0R0中内容为中内容为中内容为中内容为3333HH,R1R1中内中内中内中内容为容为容为容为0000HH,给出以下每一条指令执行后给出以下每一条指令执行后给出以下每一条指令执行后给出以下每一条指令执行后A A中的值和中的值和中的值和中的值和PSWPSW中中中中P P的值。的值。的值。的值。MOV A,#34HMOV A,#34HMOV A,34HMOV A,34HMOV A,R1MOV A,R1MOV A,R0MOV A,R0 注意:对注意:对注意:对注意:对PSWPSW中中中中P P标志的影响。标志的影响。标志的影响。标志的影响。12/18/202268 练练