MCS-51单片机的汇编语言指令系统课件.ppt
《MCS-51单片机的汇编语言指令系统课件.ppt》由会员分享,可在线阅读,更多相关《MCS-51单片机的汇编语言指令系统课件.ppt(101页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3章章 MCS-51单片机的汇编语言指令系统单片机的汇编语言指令系统3.1 指令格式及其符号说明指令格式及其符号说明单片机单片机汇编语言汇编语言:助记符语言:助记符语言单片机的单片机的指令指令:是:是CPU用于控制功能部件完成某一用于控制功能部件完成某一 指定动作的指示和命令指定动作的指示和命令 指令系统指令系统:单片机全部指令的集合:单片机全部指令的集合111条指令,实现条指令,实现51种基本操作种基本操作3.1.1 指令格式指令格式指令格式:指令的表示方法指令格式:指令的表示方法两部分两部分操作码:用来规定指令进行什么操作操作码:用来规定指令进行什么操作操作数:指令操作的对象操作数:指
2、令操作的对象汇编语言指令格式汇编语言指令格式标号标号:操作码助记符操作码助记符 目的操作数目的操作数,源操作数源操作数:注释注释指令的符指令的符号地址号地址 确定指令进确定指令进行何种操作行何种操作 指令操作指令操作的对象的对象 指令操作指令操作的对象的对象对指令功对指令功能的说明能的说明 注意:注注意:注释编写的时候要注意一定要以分号释编写的时候要注意一定要以分号“;”开始。开始。3.1.1 常用符号说明常用符号说明1、单字节指令、单字节指令指令的指令代码只有一个字节,操作码和操作数信息同指令的指令代码只有一个字节,操作码和操作数信息同在其中。在其中。如:如:INC DPTR1010 001
3、1MOV A,Rn1110 1rrr一字节指令一字节指令49条条3.1.3 指令的字节指令的字节 无操作数无操作数含有操作数含有操作数2、双字节指令、双字节指令包括二个字节,其中第一个字节为操作码,包括二个字节,其中第一个字节为操作码,第二个字节为操作数第二个字节为操作数如:如:MOV A,#data指令代码:指令代码:0111 0100 立即数立即数双字节指令共双字节指令共45条条3、三字节指令、三字节指令三三字节指令中,操作码占一个字节字节指令中,操作码占一个字节 操作数占两个字节操作数占两个字节操作数既可能是数据,也可能是地址操作数既可能是数据,也可能是地址如:如:ANL direct,
4、#data 0101 0011 直接地址直接地址 立即数立即数三三字节指令共字节指令共17条条3.2 单片机寻址方式单片机寻址方式寻址:就是如何得到操作数的所在单元的地址寻址:就是如何得到操作数的所在单元的地址3.2.1 立即寻址方式立即寻址方式操作数在指令中直接给出,操作数在指令中直接给出,出现在指令中的操作数称为立即数出现在指令中的操作数称为立即数如;如;MOV A,#data MOV A,#3AHMOV DPTR,#data163.2.2 直接寻址方式直接寻址方式操作数直接以单元地址的形式给出操作数直接以单元地址的形式给出如:如:MOV A,3AH寻址范围:寻址范围:(1)内部)内部RA
5、M低低128单元单元(2)特殊功能寄存器)特殊功能寄存器例如:例如:MOV A,50HMOV A,P1MOV A,90H上面指令中的上面指令中的50H、P1、90H均是直接寻址方式。均是直接寻址方式。3.2.3 寄存器寻址方式寄存器寻址方式操作数在寄存器中操作数在寄存器中MOV A,R0寻址范围:寻址范围:(1)工作寄存器:)工作寄存器:4组组R0R7(2)部分特殊功能寄存器:如部分特殊功能寄存器:如A、B、DPTR等等3.2.4 寄存器间接寻址方式寄存器间接寻址方式寄存器中存放的是操作数的地址,寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的即操作数是通过寄存器间接得到的如:如:
6、MOV A,R0寻址范围:寻址范围:(1)内部)内部RAM低低128单元单元(2)外部)外部RAM 64KB 如如 MOVX A,DPTR(3)外部外部RAM的低的低256单元单元(4)堆栈操作指令()堆栈操作指令(PUSH、POP),),以堆栈作间址以堆栈作间址 寄存器的间接寻址方式寄存器的间接寻址方式如:如:MOV A,R03.2.5 变址寻址方式变址寻址方式变址寻址是为了访问程序存储器中的数据表格变址寻址是为了访问程序存储器中的数据表格如;如;MOVC A,A+DPTR把把DPTR和和A的内容相加,再把所得到的程序存储器地的内容相加,再把所得到的程序存储器地址单元的内容送址单元的内容送A
7、假定指令执行前(假定指令执行前(A)=02H,(,(DPTR)=0100H则操作数地址为则操作数地址为0100H+02H=0102H假定指令执行前(假定指令执行前(A)=02H,(,(DPTR)=0100H则操作数地址为则操作数地址为0100H+02H=0102H故指令执行的结果是故指令执行的结果是A的内容为的内容为38HROM寻址方式说明:寻址方式说明:(1)只能对程序存储器进行寻址,寻址范围)只能对程序存储器进行寻址,寻址范围64KB(2)变址寻址的指令只有变址寻址的指令只有3条:条:MOVC A,A+DPTR MOVC A,A+PC JMP A+DPTR(3)变址寻址的指令都是一字节指令
8、变址寻址的指令都是一字节指令3.2.6 相对寻址方式相对寻址方式为为解决程序转移而专门设置的,为转移指令所采用解决程序转移而专门设置的,为转移指令所采用目的地址目的地址=转移指令地址转移指令地址+转移指令字节数转移指令字节数+rel偏移量偏移量rel是一个带符号的是一个带符号的8位二进制补码数,表示的数位二进制补码数,表示的数的范围是:的范围是:-128+1273.2.7 位寻址方式位寻址方式位位处理功能,可以对数据位进行操作处理功能,可以对数据位进行操作如:如:MOV C,3AH把把3AH位的状态送进位位位的状态送进位位C寻址范围:寻址范围:(1)内部)内部RAM中的位寻址区中的位寻址区 单
9、元地址为单元地址为20H2FH,共共16个单元个单元128位,位地址位,位地址 是是00H7FH(2)专用寄存器的可寻址位专用寄存器的可寻址位 可供寻址的专用寄存器共有可供寻址的专用寄存器共有11个,实有寻址位个,实有寻址位83位位寻址位在指令中的寻址位在指令中的4种表示方法:种表示方法:(1)直接使用位地址。例如)直接使用位地址。例如PSW寄存器位寄存器位5地址为地址为0D5H(2)位名称表示方法。例如位名称表示方法。例如PSW寄存器位寄存器位5是是F0标志位标志位 用用F0表示表示(3)单元地址加位数的表示方法。例如)单元地址加位数的表示方法。例如,0D0H单元单元(即即PSW 寄存器寄存
10、器)位位5,为为0D0H.5(4)专用寄存器符号加位数的表示方法。例如专用寄存器符号加位数的表示方法。例如PSW寄存器寄存器 的位的位5,表示为,表示为PSW.53.3 MCS-51单片机指令系统单片机指令系统指令指令111条,分为五大类:条,分为五大类:数据传送类指令(数据传送类指令(29)条)条算术运算类指令(算术运算类指令(24条)条)逻辑运算及移位类指令(逻辑运算及移位类指令(24条)条)控制转移类指令(控制转移类指令(17条)条)位操作类指令(位操作类指令(17条)条)3.3.1 数据传送类指令(数据传送类指令(29条)条)MOV ,源源操作数:累加器操作数:累加器A、通用寄存器通用
11、寄存器Rn、直接地址直接地址 direct、间址寄存器和立即数间址寄存器和立即数 目的操作数:累加器目的操作数:累加器A、通用寄存器通用寄存器Rn、直接地址直接地址 direct、间址寄存器间址寄存器 1.普通传送指令普通传送指令1)片内数据存储器传送指令()片内数据存储器传送指令(16条)条)(1)以)以A为目的操作数的指令(为目的操作数的指令(4条)条)MOV A,#data ;A data MOV A,direct ;A(direct)MOV A,Rn ;A(Rn)MOV A,Ri ;A(Ri)例例3.1 指令:指令:MOV A,#40H ;A 40H 立即寻址立即寻址 MOV A,40
12、H ;A(40H)直接寻址直接寻址 MOV A,R0 ;A(R0)寄存器寻址寄存器寻址 MOV A,R0 ;A(R0)寄存器间接寻址寄存器间接寻址(2)以)以Rn为目的操作数的指令(为目的操作数的指令(3条)条)MOV Rn,#data ;Rn dataMOV Rn,direct ;Rn(direct)MOV Rn,A ;Rn(A)例例3.2 指令:指令:MOV R2,#7AH ;R2 7AH 立即寻址立即寻址MOV R2,7AH ;R2(7AH)直接寻址直接寻址MOV R3,A ;R3(A)寄存器寻址寄存器寻址(3)以直接地址为目的操作数的指令()以直接地址为目的操作数的指令(5条)条)MO
13、V direct,#data ;directdataMOV direct,direct ;direct(direct)MOV direct,A ;direct(A)MOV direct,Rn ;direct(Rn)MOV direct,Ri ;direct(Ri)例例3.3.3 指令:指令:MOV 02H,#80H ;02H80H 立即寻址立即寻址MOV 0E0H,80H ;0E0H(80H)直接寻址直接寻址MOV P2,A ;P2(A)寄存器寻址寄存器寻址MOV 60H,R2 ;60H(R2)寄存器寻址寄存器寻址MOV 40H,R0 ;40H(R0)寄存器间接寻址寄存器间接寻址(4)以寄存器
14、间接寻址为目的操作数的指令()以寄存器间接寻址为目的操作数的指令(3条)条)MOV Ri,#data ;(;(Ri)dataMOV Ri,direct ;(;(Ri)(direct)MOV Ri,A ;(;(Ri)(A)例例3.3.4 指令:指令:MOV R0,#70H ;(;(R0)70H 立即寻址立即寻址MOV R0,70H ;(R0)(70H)直接寻址直接寻址MOV R1,A ;(R0)(A)寄存器寻址寄存器寻址(5)16位数据传送指令(位数据传送指令(1条)条)MOV DPTR,#data16 ;DPTRdata16例例3.3.5 指令:指令:MOV DPTR,#1234H ;(;(D
15、PH)12H,;(;(DPL)34H 立即寻址立即寻址2)片外数据存储器传送指令()片外数据存储器传送指令(4条)条)(1)使用)使用DPTR进行间接寻址进行间接寻址(2)使用)使用Ri进行间接寻址进行间接寻址MOVX A,DPTR ;A(DPTR)MOVX DPTR,A ;(;(DPTR)AMOVX A,Ri ;A(Ri)MOVX Ri,A ;(;(Ri)A 说明:说明:(1)MCS-51指令系统中没有专用的存储器读写指令,指令系统中没有专用的存储器读写指令,实际上外部数据存储器数据传送指令就是外部实际上外部数据存储器数据传送指令就是外部 RAM的读写指令的读写指令(2)外部)外部RAM数据
16、传送指令与内部数据传送指令与内部RAM数据传送指数据传送指 令相比,在指令助记符中增加了令相比,在指令助记符中增加了“X”,“X”是是代代 表外部之意表外部之意(3)外部)外部RAM的数据传送,只能通过累加器的数据传送,只能通过累加器A进行进行例例3.6 要求把外部要求把外部RAM 60H单元中的数据单元中的数据8BH传送到内部传送到内部 RAM 50H中,试编程。中,试编程。解法解法1:MOV R0,#60H ;(;(R0)=60H MOVX A,R0 ;(;(A)=8BH MOV 50H,A ;(;(50H)=8BH解法解法2:MOV DPTR,#0060H ;(;(DPTR)=0060H
17、 MOVX A,DPTR ;(;(A)=8BH MOV 50H,A ;(;(50H)=8BH3)程序存储器传送指令()程序存储器传送指令(2条)条)2条访问存储器的查表指令条访问存储器的查表指令 MOVC A,A+DPTR ;A(A)+(DPTR)MOVC A,A+PC ;A(A)+(PC)例例3.7 已知程序存储器中以已知程序存储器中以TAB为起点地址的空间存放着为起点地址的空间存放着09 的的ASCII码,累加器码,累加器A中存放着一个中存放着一个09之间的之间的BCD码码 数据。要求用查表的方法获得数据。要求用查表的方法获得A中数据的中数据的ASCII码。码。解法解法1:MOV DPTR
18、,#TAB MOVC A,A+DPTR RET TAB:DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H解法解法2:INC A MOVC A,A+PC RET TAB:DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39Hb3b2b1b0b6b5b40000010100111001011101110000000100100011010001010110011110001001101010111100110111101111NULSOHSTXETXEOTENQACKBELBSHTLFVTFFCRSOSIDLEDC1DC2DC3DC
19、4NAKSYNETBCANEMSUBESCFSGSRSUSSP!“#$%&()*+-./0123456789:;?ABCDEFGHIJKLMNOPQRSTUVWSYZ_abcdefghijklmnopqrstuvwsyz|DEL(1)整字节交换指令)整字节交换指令 源操作数与累加器源操作数与累加器A进行进行8位数据交换,共有位数据交换,共有3条指令:条指令:XCH A,Rn ;(;(A)(Rn)XCH A,direct ;(;(A)(direct)XCH A,Ri ;(;(A)(Ri)(2)半字节交换指令)半字节交换指令 源操作数与累加器源操作数与累加器A进行低进行低4位的半字节数据交换,位的
20、半字节数据交换,只有只有1条指令:条指令:XCHD A,Ri ;(;(A)30 (Ri)30(3)累加器高低半字节交换指令)累加器高低半字节交换指令 累加器累加器A的高低半个字节进行数据交换,只有的高低半个字节进行数据交换,只有1条指令:条指令:SWAP A ;(;(A)30 (A)742.数据交换指令(数据交换指令(5条)条)例例3.8 已知(已知(A)=12H,(,(R1)=30H,内部内部RAM(30H)=34H,分析指令执行结果。,分析指令执行结果。XCH A,30H ;(A)=34H,(,(30H)=12H XCH A,R1 ;(A)=12H,(,(30H)=34H XCHD A,R
21、1 ;(A)=14H,(,(30H)=32H SWAP A ;(A)=41H3.堆栈操作指令堆栈操作指令入栈操作的过程是:先将堆栈指针自动加入栈操作的过程是:先将堆栈指针自动加1,然后数据,然后数据压入堆栈。压入堆栈。出栈操作与此相反,先从堆栈中将数据弹出,送给出栈操作与此相反,先从堆栈中将数据弹出,送给direct单元,然后指针自动减单元,然后指针自动减1。无论是入栈操作还是出栈操作,其操作对象只能是用无论是入栈操作还是出栈操作,其操作对象只能是用direct形式表示的内部数据存储空间地址(形式表示的内部数据存储空间地址(00H7FH)或某个特殊功能寄存器。或某个特殊功能寄存器。汇汇 编编
22、格格 式式机机 器器 语语 言言 格格 式式操操 作作 功功 能能字节数字节数周期数周期数PUSH direct1100 0000directSP(SP)+1(SP)(direct)22POP direct1101 0000directdirect(SP)SP(SP)-122设某主程序和子程序设某主程序和子程序SUB1中均要用到累加器中均要用到累加器A及地址及地址指针指针DPTR,则在子程序中可以使用下列方式实现对,则在子程序中可以使用下列方式实现对现场数据的保护和恢复。现场数据的保护和恢复。PUSH ACC ;保护现场保护现场PUAH DPHPUSH DPL ;子程序若干指令子程序若干指令P
23、OP DPL ;恢复现场;恢复现场POP DPHPOP ACC例例3.9 设(设(20H)=55H,(,(30H)=66H,试利用堆栈作为缓冲,试利用堆栈作为缓冲 器,编制程序交换器,编制程序交换20H和和30H单元中的内容。单元中的内容。解:解:MOV SP,#60H ;令栈底地址为;令栈底地址为60H,即,即SP=60H PUSH 20H ;SP(SP)+1,SP=61H,(,(61H)55H PUSH 30H ;SP(SP)+1,SP=62H,(,(62H)66H POP 20H ;20H66H,SP(SP)1,SP=61H POP 30H ;30H55H,SP(SP)1,SP=60H
24、执行结果:执行结果:SP=60H,(,(20H)=66H,(,(50H)=55H。3.3.2 算术运算类指令(共算术运算类指令(共24条)条)1、加法指令、加法指令1)不带进位的加法指令)不带进位的加法指令ADD A,#data ;A(A)+dataADD A,direct ;A(A)+(direct)ADD A,Rn ;A(A)+(Rn)ADD A,Ri ;A(A)+(Ri)加法运算的结果会影响程序状态字寄存器加法运算的结果会影响程序状态字寄存器PSW,其中包括:,其中包括:如果运算结果的最高位第如果运算结果的最高位第7位有进位,位有进位,则进位标志则进位标志CY置置“1”,反之,反之,CY
25、清清“0”;如果运算结果的第如果运算结果的第3位有进位,位有进位,则辅助进位标志则辅助进位标志AC置置“1”,反之,反之,AC清清“0”;如果运算结果的第如果运算结果的第6位有进位而第位有进位而第7位没有进位或者位没有进位或者 第第7位有进位而第位有进位而第6位没有进位,位没有进位,则溢出标志则溢出标志OV置置“1”(即(即OV=C7 C6),反之,),反之,OV清清“0”;奇偶标志奇偶标志P随累加器随累加器A中中1的个数的奇偶性而变化。的个数的奇偶性而变化。例例3.10 已知(已知(A)=97H,(,(R0)=89H,执行指令:,执行指令:ADD A,R0解:解:1001 0111 +100
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MCS 51 单片机 汇编语言 指令系统 课件
限制150内