MCS51单片机指令系统及汇编语言程序设计.ppt
《MCS51单片机指令系统及汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《MCS51单片机指令系统及汇编语言程序设计.ppt(103页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章第三章 MCS-51MCS-51单片机指令系单片机指令系 统及汇编语言程序设计统及汇编语言程序设计内容提要:3-1汇编语言与指令系统简介汇编语言与指令系统简介3-2数据传送类指令数据传送类指令3-3算术运算类指令算术运算类指令3-4逻辑运算类指令逻辑运算类指令3-5控制转移类指令控制转移类指令3-6位操作类指令位操作类指令3-7汇编语言的汇编过程汇编语言的汇编过程3-8汇编语言的程序设计及应用汇编语言的程序设计及应用高级语言高级语言:3-1 3-1 汇编语言与指令系统简介汇编语言与指令系统简介 一、汇编语言程序设计的意义一、汇编语言程序设计的意义什么是程序?什么是程序?完成某项特定任务的
2、指令的集合。完成某项特定任务的指令的集合。计算机按程序一条一条地依次执行指令,从而完成指定任务。计算机按程序一条一条地依次执行指令,从而完成指定任务。要让计算机完成各项任务,就应设计各种程序。要让计算机完成各项任务,就应设计各种程序。汇编语言汇编语言:机器语言机器语言:程序设计语言:程序设计语言:用二进制代码表示指令和数据。用二进制代码表示指令和数据。用助记符表示指令操作功能,用标号表示操作对象。用助记符表示指令操作功能,用标号表示操作对象。独立于机器独立于机器,面向过程面向过程,接近自然语言和数学表达式接近自然语言和数学表达式.汇编语言程序的每一条语句都与计算机的某一条指令对应,所汇编语言程
3、序的每一条语句都与计算机的某一条指令对应,所以必需熟悉指令系统。以必需熟悉指令系统。指令指令=操作码操作码+操作数操作数操作码操作码表示了该指令所能执行的操作功能表示了该指令所能执行的操作功能。操作数操作数表示参加操作的数的本身或操作数所在的地址。表示参加操作的数的本身或操作数所在的地址。MCS-51指令格式:指令格式:标号:标号:操作码助记符操作码助记符 第一操作数第一操作数,第二操作数,第二操作数;注释;注释二、二、MCS-51MCS-51系列单片机的指令系统系列单片机的指令系统111111条条指令,共分指令,共分五大类五大类:数据传送类;(数据传送类;(29条)条)算术运算类;(算术运算
4、类;(24条)条)逻辑运算类;(逻辑运算类;(24条)条)控制转移类;(控制转移类;(17条)条)位操作类。(位操作类。(17条)条)指令中操作数的描述符号指令中操作数的描述符号:Rn工作寄存器工作寄存器R0R7Ri间接寻址寄存器间接寻址寄存器R0、R1Direct直接地址,包括内部直接地址,包括内部128BRAM单元地址、单元地址、26个个SFR地址。地址。#data8位常数位常数#data1616位常数位常数addr1616位目的地址位目的地址addr1111位目的地址位目的地址rel8位带符号的偏移地址位带符号的偏移地址DPTR16位外部数据指针寄存器位外部数据指针寄存器bit可直接位寻
5、址的位可直接位寻址的位A累加器累加器B寄存器寄存器BC进、借位标志位,或位累加器进、借位标志位,或位累加器间接寄存器或基址寄存器的前缀间接寄存器或基址寄存器的前缀/指定位求反指定位求反(x)x中的内容中的内容(x)x中的地址中的内容中的地址中的内容当前指令存放的地址当前指令存放的地址三、寻址方式三、寻址方式寻找操作数存放单元的地址的方式,寻找操作数存放单元的地址的方式,共共6种方式。种方式。1、立即数寻址、立即数寻址所要找的操作数是一二进制数或十进制数,出现在指令中,所要找的操作数是一二进制数或十进制数,出现在指令中,用用“#”作前缀作前缀MOVA,#20H2、寄存器寻址寄存器寻址操作数存放在
6、工作寄存器操作数存放在工作寄存器R0R7中,或寄存器中,或寄存器B中。中。MOVA,R23、直接寻址直接寻址指令中直接给出操作数的地址。指令中直接给出操作数的地址。MOVA,30HMOV30H,DPH;书书放在放在甲甲抽屉中抽屉中;甲甲抽屉的钥匙放在抽屉的钥匙放在乙乙抽屉中抽屉中;取取书书,A中中 20HMOV30H,#20HMOVR0,#30HMOVA,R0此例中,此例中,20H就当成是那本就当成是那本书书;30H就当成是就当成是甲甲抽屉;抽屉;R0就当成是就当成是乙乙抽屉,执行的结果就是将抽屉,执行的结果就是将20H这个立即数装入这个立即数装入A中。中。期间也经历了两次寻址,即间接寻址。期
7、间也经历了两次寻址,即间接寻址。4、寄存器间接寻址、寄存器间接寻址指令中寄存器的内容作为操作数存放的地址,在工作上间接寻指令中寄存器的内容作为操作数存放的地址,在工作上间接寻址寄存器前用址寄存器前用“”表示前缀。表示前缀。例如例如:“一本一本书书放在放在甲甲抽屉中,上了锁;其开锁的钥匙放在抽屉中,上了锁;其开锁的钥匙放在乙乙抽屉中,抽屉中,乙乙抽屉也上了锁。问如何才能取到哪本抽屉也上了锁。问如何才能取到哪本书书?”这就是一个间接寻址的问题,要经过两次寻址才能找到哪本这就是一个间接寻址的问题,要经过两次寻址才能找到哪本书书。而寄存器间接寻址也是同样。而寄存器间接寻址也是同样。例如例如:5、变址寻
8、址、变址寻址操作数地址操作数地址=变地址变地址+基地址基地址基地址寄存器基地址寄存器DPTR或或PC变址寄存器变址寄存器A该寻址方式常用于访问程序存储器,查表。该寻址方式常用于访问程序存储器,查表。如如MOVCA,A+DPTR6、相对寻址相对寻址把指令中给定的地址偏移量与本指令所在单元地址(把指令中给定的地址偏移量与本指令所在单元地址(PC内容)内容)相加得到真正有效的操作数所存放的地址。相加得到真正有效的操作数所存放的地址。例如例如“李同学李同学20岁,张同学比李同学大岁,张同学比李同学大3岁,问张同学多少岁?岁,问张同学多少岁?”这就是一个相对寻年龄的问题,而相对寻址与此类似。这就是一个相
9、对寻年龄的问题,而相对寻址与此类似。如如JC60H;设(设(PC)=2000H为基址,相对偏移量为为基址,相对偏移量为60H;则当则当C=1时,时,转移的目的地址转移的目的地址=20002000H H+2+60H巩固新课:巩固新课:1、汇编语言有何种特点?指令格式?、汇编语言有何种特点?指令格式?2、MCS51系列机共有多少条指令?分几类?系列机共有多少条指令?分几类?3、MCS51系列汇编语言指令有几种寻址方式?系列汇编语言指令有几种寻址方式?3-2 3-2 数据传送类指令数据传送类指令一、内部一、内部RAM数据传送类数据传送类1、一般数据传送指令片外片外程序程序存储器存储器ROMEPROM
10、特殊功能特殊功能寄存器寄存器SFR片内片内RAM128字节字节片外片外数据数据存储器存储器RAMMOVCMOVXMOVPUSHPOPXCHXCHD回忆前述操作数描述符:回忆前述操作数描述符:A,direct,Rn,Ri,#data,DPTR等。等。经排列组合可写出下列指令:经排列组合可写出下列指令:MOVA,Rn;(;(A)(Rn)以下类似。以下类似。MOVA,directMOVA,RiMOVA,#dataMOVRn,AMOVRn,directMOVRn,#dataMOVdirect,RnMOVdirect,directMOVdirect,RiMOVdirect,#dataMOVRi,AMOV
11、Ri,directMOVRi,#dataMOVDPTR,#data16;唯一的唯一的16位数据传送指令。位数据传送指令。上述指令不影响任何标志位,但上述指令不影响任何标志位,但PSW的的P位除外。位除外。(direct)(A)MOVdirect,A;上述指令不影响任何标志位,但上述指令不影响任何标志位,但PSW的的P位除外。位除外。注意:注意:MOVRn,RnMOVRi,RiMOVRn,RiMOV#data,A等等等指令是非法指令。等指令是非法指令。哇!好容易出错啊!(2)(direct)2、栈操作指令、栈操作指令PUSHdirectPOPdirect不影响任何标志位。不影响任何标志位。PUS
12、Hdirect指令执行中,机器自动进行两步操作:指令执行中,机器自动进行两步操作:(1)(SP)+1例例1、设(、设(SP)=09H,(,(DPTR)=0123H,分析:分析:执行执行PUSHDPLPUSHDPH后,各单元中的内容。后,各单元中的内容。(SP)(SP)POPdirect指令执行中,机器也自动进行两步操作:指令执行中,机器也自动进行两步操作:(1)()(direct)(SP)(2)()(SP)(SP)1例例2、设(、设(SP)=0BH,(,(0BH)=01H,(,(0AH)=23H执行执行POPDPHPOPDPL后,各单元中的内容。后,各单元中的内容。结论:结论:1)PUSH与与
13、POP操作过程刚好相反;操作过程刚好相反;2)进、出栈规则:进、出栈规则:先进后出,后进先出。应注意指令书写先后顺序;先进后出,后进先出。应注意指令书写先后顺序;3)可用于可用于“保护现场,恢复现场保护现场,恢复现场”。3 3、字节交换指令、字节交换指令XCHA,RnXCHA,direct整字节交换整字节交换XCHA,RiXCHDA,RiSWAPA半字节交换半字节交换不影响任何标志位。不影响任何标志位。二、二、外部外部RAMRAM数据传送数据传送MOVXA,RiMOVXA,DPTRMOVXRi,AMOVXDPTR,A执行过程中会使执行过程中会使/WR、/RD有效。有效。例例3、试编写一程序段,
14、实现将外试编写一程序段,实现将外RAM0FAH单元中的单元中的内容传送到外内容传送到外RAM04FFH单元中。单元中。解:解:MOVDPTR,#04FFHMOVR0,#0FAHMOVXA,R0MOVXDPTR,A三、三、查表指令查表指令与与ROM之间的数据传送。之间的数据传送。MOVCA,A+DPTRMOVCA,A+PC执行后会使执行后会使/PSEN有效。有效。MOVC含义是传送常数。含义是传送常数。以以DPTR为基地址的指令,可在为基地址的指令,可在ROM的的64KB范围内查表;范围内查表;而以而以PC为基地址的指令只能在(为基地址的指令只能在(PC)+1为中心上、下为中心上、下256B范范
15、围内查表。围内查表。例例4 4、设(、设(A A)=一个一个BCDBCD码常数,试用查表法获得其相应的码常数,试用查表法获得其相应的ASCIIASCII码。码。解法II:MOVCA,A+PCTAB:DB30H,31H,32H,33HDB34H,35H,36H,37H解法解法I:MOVDPTR,#TABMOVCA,.A+DPTRTAB:DB30HDB31HDB32H,33H,34H,35H小结:小结:数据传送类指令有几种类型?数据传送类指令有几种类型?是否影响标志位?是否影响标志位?3-3 3-3 算术运算类指令算术运算类指令包括:加、包括:加、减、乘、除;加一、减一。减、乘、除;加一、减一。一
16、、加法指令一、加法指令ADDA,Rn;(;(A)(A)+(Rn)以下类同。以下类同。ADDA,directADDA,RiADDA,#data无符号数相加时:若无符号数相加时:若C=1,说明有溢出(其值说明有溢出(其值 255 255)。)。带符号数相加时:若带符号数相加时:若OV=D7cD6c=1OV=D7cD6c=1,说明有溢出。说明有溢出。ADDC AADDC A,Rn Rn ;(;(A A)(A A)+(RnRn)+(C)C);以下类同。以下类同。ADDC AADDC A,directdirectADDC AADDC A,RiRiADDC A,#dataADDC A,#data 上述四条
17、指令多用于多字节数相加。上述四条指令多用于多字节数相加。INC A INC A ;(;(A A)(A A)+1 +1 ,以下类同。以下类同。INC RnINC RnINC directINC directINC RiINC Ri INC DPTR INC DPTRINC A INC A ;(;(A A)(A A)+1+1 ;以下类同。以下类同。INC RnINC RnINC directINC directINC RiINC RiINC DPTRINC DPTR例例1 1、设(、设(R0R0)=7FH=7FH;(7EH7EH)=40H=40H 执行:执行:INC R0INC R0 INC R0
18、 INC R0 INC R0 INC R0 后后,(R0)=7FH;R0)=7FH;(7EH)=(7EH)=00H;00H;(7FH)=41H(7FH)=41HDAA;二二十进制调整指令。十进制调整指令。执行过程中,执行过程中,CPU能根据加法运算后,累加器中的值和能根据加法运算后,累加器中的值和PSW中的中的AC及及C标志位的状况自动选择一个修正值(标志位的状况自动选择一个修正值(00H、06H、60H、66H)与原运算结果相加,进行二与原运算结果相加,进行二十进制调整。十进制调整。(A30)9 9时或(时或(ACAC)=1=1时,时,(A30)(A30)+6(A74)9 9或(或(C C)
19、=1=1时,时,(A74)(A74)+6选择修正值的规则:选择修正值的规则:例例2、设(、设(A)=56H为为56的压缩的的压缩的BCD码数,(码数,(R3)=67H,(CY)=1执行执行ADDCA,R3DAA结果为:结果为:124注意:注意:1)DA指令只能跟在加法指令后面使用;指令只能跟在加法指令后面使用;2)调整前参与运算的两数是)调整前参与运算的两数是BCD码数;码数;3)DA指令不能与减法指令配对使用,但可以实现对指令不能与减法指令配对使用,但可以实现对A中中压缩压缩BCD数进行减一操作。数进行减一操作。例例3、设(、设(A)=30H(压缩压缩BCD码数),执行:码数),执行:ADD
20、A,#99HDAA后,便实现了后,便实现了301=29的操作。的操作。例例4、两个、两个4位位BCD码相加,一个存放在(码相加,一个存放在(31H)()(30H););另一个存放在(另一个存放在(33H)()(32H););和数拟回存在和数拟回存在(31H)()(30H)中,试编程实现之。中,试编程实现之。解:解:MOVR0,#30HMOVR1,#32HMOVA,R0ADDA,R1DAAMOVR0,AINCR1MOVA,R0ADDCA,R1DAAMOVR0,AINCR0二、减法指令二、减法指令SUBBA,Rn;(;(A)(A)()(Rn)()(C),),以下类同。以下类同。SUBBA,dire
21、ctSUBBA,RiSUBBA,#data注意:减法之前先清零注意:减法之前先清零C。DECA;(;(A)(A)1,以下类同。以下类同。DECRnDECRiDECdirect例例5、设(、设(R0)=7FH,在内在内RAM中,(中,(7EH)=00H,(7FH)=40H执行执行:DECR0DECR0DECR0结果为结果为:(R0)=7EH,(,(7EH)=0FFH,(,(7FH)=3FH。三、乘法和除法指令三、乘法和除法指令乘法:乘法:MULAB;(;(A)(B),),积的低积的低8位在位在A中,积的中,积的;高高8位在位在B中;中;C总为总为0。除法:除法:DIVAB;(;(A)(B),),
22、商在商在A中,余数在中,余数在B中。中。;若(若(B)=0,则结果不定,(则结果不定,(OV)=1,;(;(C)=0。例例6、试将、试将A中的二进制数转换为中的二进制数转换为3位位BCD码,其中,百位数存放码,其中,百位数存放于于31H单元,十位数和个位数压缩后存于单元,十位数和个位数压缩后存于30H单元中。单元中。解:解:MOVB,#100DIVABMOV31H,AMOVA,#10XCHA,BDIVABSWAPAADDA,BMOV30H,A小结:算术运算类指令都有哪些类型?小结:算术运算类指令都有哪些类型?3-4逻辑运算类指令逻辑运算类指令共分两大类:单字节逻辑操作,双字节逻辑操作,共共分两
23、大类:单字节逻辑操作,双字节逻辑操作,共24条。条。一、单字节逻辑操作指令一、单字节逻辑操作指令CLRA;(;(A)0CPLAA中中8位按位求反。位按位求反。循环左移、右移指令:循环左移、右移指令:RLARLCARRARRCA注:左移一位相当于乘注:左移一位相当于乘2;右移一位相当于除;右移一位相当于除2。二、双字节逻辑操作指令二、双字节逻辑操作指令“与操作与操作”:ANLA,Rn;(A)(A)(Rn),),以下类同。以下类同。ANLA,directANLA,RiANLA,#dataANLdirect,AANLdirect,#data例例1、(、(P1)=35H,使其高使其高4位输出位输出0,
24、低,低4位不变。位不变。解;解;ANLP1,#0FH此做法称为此做法称为“屏蔽屏蔽”位。位。“或操作或操作”:ORLA,Rn;(A)(A)(Rn),),以下类同。以下类同。ORLA,directORLA,RiORLA,#dataORLdirect,AORLdirect,#data例例2、将、将A中的低中的低3位送入位送入P1中,并且保持中,并且保持P1中高中高5位不变。位不变。ANLA,#07HANLP1,#0F8HORLP1,A;(;(P1)=P17P16P15P14P13A2A1A0这称为这称为“数位组合数位组合”。“异或操作异或操作”:XRLA,Rn;(A)(A)(Rn),),以下类同。
25、以下类同。XRLA,directXRLA,RiXRLA,#dataXRLdirect,AXRLdirect,#data例例3、设(、设(P1)=0B4H=10110100B,执行:执行:XRLP1,#00110001B结果按结果按#00110001取反,即:取反,即:(P1)=10000101B=85H这称为这称为“指定位取反指定位取反”。在上述在上述ANL、ORL、XRL操作中,用于端口操作时,无论操作中,用于端口操作时,无论P0P3是第一,还是第二操作数,都遵循是第一,还是第二操作数,都遵循“读读修改修改写写”端口锁存器的操作。端口锁存器的操作。小结:小结:1、逻辑操作分为哪两类操作?、逻
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS51 单片机 指令系统 汇编语言 程序设计
限制150内