《单片机原理及应用》课件01-51系列单片机的汇编指令.ppt
《《单片机原理及应用》课件01-51系列单片机的汇编指令.ppt》由会员分享,可在线阅读,更多相关《《单片机原理及应用》课件01-51系列单片机的汇编指令.ppt(59页珍藏版)》请在文库网上搜索。
1、内内 容容 提提 要要寻址方式址方式数据数据传送与交送与交换指令指令算算术运算、运算、逻辑运算指令运算指令控制控制转移指令移指令位操作指令位操作指令指令的格式:指令的格式:LOOP:MOV A,R0 ;将将R0的内容送的内容送A 标号标号 操作码操作码 第一操作数第一操作数 第二操作数第二操作数 注释 (目的操作数)(目的操作数)(源操作数)(源操作数)寻址方式:寻找(或确定)操作数所在单元地址的方式。寻址方式:寻找(或确定)操作数所在单元地址的方式。寻址方式越多,计算机寻址能力越强,但指令系统也越复杂。寻址方式越多,计算机寻址能力越强,但指令系统也越复杂。说明:以下讨论的寻址方式都是针对源操
2、作数的。但实际上目说明:以下讨论的寻址方式都是针对源操作数的。但实际上目的操作数也有寻址问题。的操作数也有寻址问题。指令中的常用符号指令中的常用符号Rn:n=(0-7),表示当前工作寄存器),表示当前工作寄存器R0R7中的一个中的一个Ri:i=(0、1),代表),代表R0和和R1寄存器中的一个,用作寄存器中的一个,用作间接接寻址寄存器址寄存器dir:8 位直接字位直接字节地址(片内地址(片内 RAM 和和 SFR)#data:8位立即数,即位立即数,即8位常数。可以位常数。可以为2进制制(B)、10进制、制、16进制制(H)、字符(字符()#data16:表示表示16位立即数,即位立即数,即1
3、6位常数,取位常数,取值范范围为#0000H#0FFFFHaddr16:表示表示16位地址位地址 addr11:表示表示11位地址位地址rel:相相对偏移量(偏移量(为一字一字节补码)用于相)用于相对转移指令中移指令中bit:位地址,在位地址空位地址,在位地址空间中。中。$:表示当前指令的地址。表示当前指令的地址。3.1 3.1 寻址方式寻址方式1 1、立即、立即寻址址 指令中直接指令中直接给出操作数的出操作数的寻址方式。在址方式。在51系列系列单片片机的指令系机的指令系统中,立即数用一个前面加中,立即数用一个前面加“#“号的号的8位位数数(#data,如,如#30H)或或16位数位数(#da
4、ta16,如,如#2052H)表示。表示。立即立即寻址中的数,称址中的数,称为立即数。立即数。例如指令:例如指令:MOV A,#30H2 2、直接、直接寻址址 操作数的地址直接出操作数的地址直接出现在指令中。在指令中。寻址址对象:象:内部数据存内部数据存贮器:使用它的地址。器:使用它的地址。特殊功能寄存器:既可使用它的地址,也可以特殊功能寄存器:既可使用它的地址,也可以 直接使用寄直接使用寄存器名。存器名。41H 78H40H 56H41H 78H40H 78H例:例:例:例:MOV AMOV A,40H ;A=56H40H ;A=56H 机器码机器码机器码机器码 E540E540 MOV P
5、0MOV P0,#45H#45H ;45HP045HP0,P0P0为直接寻址的为直接寻址的为直接寻址的为直接寻址的 SFRSFR,其地址为,其地址为,其地址为,其地址为 80H80H,机器码为机器码为机器码为机器码为758045758045 MOV 40H MOV 40H,41H;41H;机器码为机器码为机器码为机器码为854140854140 内部内部内部内部RAM RAM(41H41H)(40H40H)(40H40H)=(41H41H)=78H=78H 3 3、寄存器、寄存器寻址址 操作数存放在寄存器中。操作数存放在寄存器中。寻址址对象:象:A,B,DPTR,R0R7。B 仅在乘除法指令中
6、在乘除法指令中为寄存器寄存器寻址,在其他指令中址,在其他指令中为直直接接寻址。址。A 可以寄存器可以寄存器寻址又可以直接址又可以直接寻址,直接址,直接寻址址时写作写作ACC例如:例如:MOV A,R0 ;R0A,A、R0均均为寄寄 存器存器寻址,机器址,机器码E8 MUL AB ;A*BBA,A、B为寄寄 存器存器寻址,机器址,机器码A4MOV B,R0 ;R0B,R0为寄存器寄存器寻 址,址,B为直接直接寻址址 机器机器码 88F0,其中,其中 F0为B的的 字字节地址(地址(见表表1-2)PUSH ACC ;A的内容的内容压入堆入堆栈 机器机器码C0E0 4 4、寄存器、寄存器间址址 操作
7、数存放在以寄存器内容操作数存放在以寄存器内容为地址的地址的单元中。元中。例如:例如:MOV R0,#20H MOV R0,A ;A(20H)地址的内部地址的内部RAM MOVX A,R1 ;外部;外部RAM(地址(地址为P2 R1)的的 内容内容A MOVX DPTR,A ;A以以DPTR内容内容为地址的地址的 外部外部RAM 5 5、基址加、基址加变址址寻址址 以以DPTRDPTR或或PCPC寄存器内容寄存器内容为基地址,和基地址,和A A的内容的内容为相加形相加形成操作数的地址。其中累加器成操作数的地址。其中累加器A A内容是可内容是可变的。的。例如:例如:MOVC A,A+DPTRMOV
8、C A,A+DPTR MOVC A,A+PC MOVC A,A+PC JMP A+DPTR JMP A+DPTR6 6、相、相对寻址址 相相对寻址是将程序址是将程序计数器数器PCPC的当前的当前值与指令第二字与指令第二字节给出的偏移量相加,从而形成出的偏移量相加,从而形成转移的目移的目标地址。地址。例如:例如:JZ 61HJZ 61H7 7、位、位寻址址 对片内片内RAM中中20H-2FH中的中的128个位地址及个位地址及SFR中的可中的可位位寻址的位地址址的位地址寻址。址。例如:例如:MOV C,20H;20H位的内容送位的内容送CY标志志 位,位,C称称为位累加器。位累加器。MOV A,2
9、0H;字;字节寻址,将内部址,将内部 RAM中中20H单元中的元中的 内容送内容送给累加器累加器A。以上两条指令均以上两条指令均为寻址,究竟是位址,究竟是位寻址址还是字是字节寻址,址,根据两操作数根据两操作数类型一致的原型一致的原则,由另一个操作数决定。,由另一个操作数决定。dirRi Rn#dataAMOV A,Rn#data dir RiMOV dir,A RnRi#data dir MOV Rn,MOV Ri,Adir#data1 1、内部、内部RAMRAM、SFRSFR之间的传送之间的传送MOVMOV指令指令A dir#data3.2 3.2 数据传送与交换指令数据传送与交换指令3.2
10、.1 3.2.1 传送类指令传送类指令例例 R1=20H,(,(20H)=55H,MOV A,R1 ;执行后,行后,A=?例例 (40H)=30H,指令,指令 MOV R7,40H 执行后,行后,R7=?例例 MOV R7,40H 执行后,行后,R7=?n n 例例例例 判断下列指令的正误:判断下列指令的正误:判断下列指令的正误:判断下列指令的正误:MOV 29H,R7 MOV 25H,P1MOV 29H,R7 MOV 25H,P1 MOV 56H,#70H MOV 34H,28H MOV 56H,#70H MOV 34H,28H MOV R3,R7 MOV R3,R1 MOV R3,R7 M
11、OV R3,R1 MOV R3,#0D2H MOV#34H,28H MOV R3,#0D2H MOV#34H,28H MOV A,#280H MOV P3,P1 MOV A,#280H MOV P3,P1n n编程将编程将编程将编程将R3R3的内容送的内容送的内容送的内容送R1R1。MOV AMOV A,R3R3 MOV R1 MOV R1,A A应用举例应用举例1MOV P1,#0FEH;11111110B可以使可以使P1.0上的发光二极管点亮上的发光二极管点亮MOV P1,#0F0H;11110000B可以使可以使P1口上的上面口上的上面4个发光二个发光二极管点亮极管点亮P1.0 P1.1
12、 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 5v8段数码管显示段数码管显示P1.0 aP1.1 bP1.2 cP1.3 dP1.4 eP1.5 fP1.6 gP1.7 dp5vMOV P1,#00H ;显示显示 8.MOV P1,#0F8H ;显示显示 7MOV P1,#88H ;显示显示 A应用举例应用举例2一个引脚的高低电平,可以通过一个引脚的高低电平,可以通过“光电耦合器光电耦合器”控制控制继电器,从而以继电器,从而以“弱电弱电”控制控制“强电强电”。A 外部数据外部数据存储器存储器程序程序存储器存储器 Ri,A DPTR,A A,Ri A,DPTRMOVXMOVCA,
13、A+PCA,A+DPTR2 2、外部数据存储器和、外部数据存储器和A A累加器之间的传送累加器之间的传送MOVXMOVC例例:实现片外数据存储器数据传送实现片外数据存储器数据传送(2000H)(2100H)。MOV DPTR,#2000HMOVX A,DPTRMOV DPTR,#2100HMOVX DPTR,A;DPTR=2000H;DPTR=2100H ;A X;(2100H)Xx片外数据存储器不能直接寻址。下列为非法指令:片外数据存储器不能直接寻址。下列为非法指令:MOVX A,2000H MOVX 2100H,2000H 3 3、程序存储器和、程序存储器和A A累加器之间的传送累加器之间
14、的传送使用使用P2口和口和8位寄存器位寄存器Ri间址:址:MOV P2,#20H;高位地址;高位地址 MOV R0,#00;低位地址;低位地址 MOVX A,R0;读片外片外RAM MOV P2,#21H;改;改变高位地址高位地址 MOVX R0,A;写片外;写片外RAM查表指令查表指令MOVC 注:注:只能从程序存储器读取数据到只能从程序存储器读取数据到A累加器。累加器。只能使用变址间接寻址方式只能使用变址间接寻址方式 多用于查常数表程序,直接求取常数表中的函数值多用于查常数表程序,直接求取常数表中的函数值1)DPTR为基址寄存器基址寄存器MOVC A,A+DPTR;A(A+DPTR)查表范
15、表范围为 64KB 程序存程序存储器任意空器任意空间。2)PC为基址寄存器为基址寄存器MOVC A,A+PC;A(A+PC)常数表只能在查表指令后常数表只能在查表指令后 256B 范围内。范围内。例例 查表法求查表法求 Y=X2。设。设 X(0X15)在片内在片内 RAM 20H单元,要单元,要求将查表求求将查表求 Y,存入片内,存入片内 RAM 21H单元单元1)用)用DPTR作基址寄存器作基址寄存器 ORG 0100HSQU:MOV DPTR,#TAB;确定表首地址;确定表首地址 MOV A,20H ;取;取 X MOVC A,A+DPTR;查表求表求 Y=X2 MOV 21H,A ;保存
16、;保存Y RET ;子程序;子程序结束束 ;其它程序段;其它程序段 ORG 0200HORG 0200H ;常数表格首地址;常数表格首地址;常数表格首地址;常数表格首地址TAB:TAB:DB 00 DB 00,0101,0404,0909,225 225;平方表;平方表;平方表;平方表2)用用PCPC作基址寄存器作基址寄存器 指令地址指令地址 源程序源程序 ORG 0100H;程序起始地址;程序起始地址0100H SQU:MOV A,20H;取;取X 0102H ADD A,#3;修正偏移量;修正偏移量0104H MOVC A,A+PC;查表求表求Y=X20105H MOV 21H,A;存;存
17、结果果 0107H RET ;子程序;子程序结束束0108H TAB:DB 00,01,04;平方表;平方表 010BH DB 09,225 3.3.堆栈操作指令堆栈操作指令例例:设 A=02,B=56H,执行行下下列列指指令令序序列列后后,SP=?A=?,B=?SBR:MOV SP,#30HPUSH APUSH BMOV A,#0MOV B,#01POP BPOP ARET;设栈底;设栈底 ;保护现场;保护现场;恢复现场;恢复现场 入栈指令:入栈指令:PUSH dir ;SPSP+1,(SP)(dir)出栈指令:出栈指令:POP dir;(dir)(SP),SPSP-1 SP 02 SP 5
18、602 56SP 02 5602SP SP 堆栈操作示意:堆栈操作示意:3.2.2 3.2.2 交换指令交换指令 实现片内实现片内RAM区的数据双向传送区的数据双向传送1.字节交换指令字节交换指令 XCH A,Rn;ARn XCH A,Ri;A(Ri)XCH A,n ;A(n)习题习题 将片内将片内RAM 60H单元与单元与 61H单元的数据交换单元的数据交换例例 设设A=29H,(,(2AH)38H 执行指令执行指令 XCH A,2AH 后,后,A=?,(2AH)=?38H29HXCH 60H,61H 对吗?对吗?2.半字节交换指令半字节交换指令XCHD A,Ri;A03(Ri)03SWAP
19、 A;A47A03例:将片内例:将片内 RAM 2AH和和 2BH单单元中的元中的 ASCII码转换成压缩码转换成压缩 BCD码存入码存入 20H单元单元数字数字 0-9的的ASCII码码30H-39H85H压缩的压缩的BCD码和非压缩的码和非压缩的BCD码见图码见图如如 1823压缩的压缩的BCD码为码为1823H 非压缩的非压缩的BCD码为码为01080203H AA08例例 将片内将片内RAM 2AH和和 2BH单元中的单元中的ASCII码转换成压缩式码转换成压缩式BCD码存入码存入 20H单元单元MOVAMOVA,#00H#00H;A=00A=00MOVR0MOVR0,#2AH#2AH
20、MOVR1MOVR1,#2BH#2BHXCHDAXCHDA,R0R0SWAPASWAPAXCHDAXCHDA,R1R1XCHXCHA A,20H20H85HR1R0习题:交换片内习题:交换片内RAM 40H单元和单元和 41H单元的低半字节单元的低半字节00;低低4位交换位交换A=08;A=80HA=80H;低低4位交换位交换;(20(20H)=85HH)=85H3 80 0A3 58 08 5R1R03 03 0 dirRi Rn#dataA dirRi Rn#dataAADDADDCSUBBANLORLXRLA,Rn,Ri#datadir加加进位加进位加借位减借位减与与或或异或异或1.以以
21、A为目的操作数的算术、逻辑运算指令(为目的操作数的算术、逻辑运算指令(24条)条)以以dir为目的操作数逻辑运算指令(为目的操作数逻辑运算指令(6条)条)A#data dir与与 ANL或或 ORL异或异或 XRLdir,#dataA3.3算术运算和逻辑运算指令算术运算和逻辑运算指令 算算术类指令的操作意指令的操作意义非常明确,不一一非常明确,不一一赘述,述,注意减指令只有注意减指令只有带借位减,因此在多字借位减,因此在多字节减法中,减法中,最低字最低字节作减法作减法时,注意先清,注意先清CY。逻辑运算是按位运算是按位进行的,两数运算的运算法行的,两数运算的运算法则是:是:与:与:有有“0”则
22、“0”;或或:有:有“1”则“1”异或:异或:同同为“0”,异异为“1”;与与“0”异或异或值不不变:与:与“1”异或异或值变反。反。逻辑指令常用于指令常用于对数据位数据位进行加工。行加工。n n0000111100001111 10000110 10001111n n0000111100001111 10000110 10001001例:例:A=0FH,A=0FH,执行执行执行执行XRL A,#86H XRL A,#86H 后后后后 A A06HH06HH 例:例:例:例:A=0FH,A=0FH,A=0FH,A=0FH,执行执行执行执行ORL A,#86H ORL A,#86H ORL A,
23、#86H ORL A,#86H 后后后后 A A A A8FH8FH8FH8FH例:例:例:例:A=0FH,A=0FH,A=0FH,A=0FH,执行执行执行执行XRL A,#86H XRL A,#86H XRL A,#86H XRL A,#86H 后后后后 A A A A89H89H89H89H+ARnRidirDPTRINC减减 1 指令指令:DECARnRidir加加 1 指令指令:提问:没有提问:没有DEC DPTR指令,怎么解决指令,怎么解决DPTR的减的减 1?2.加加1、减、减1指令指令3.十十进制制调整指令整指令 计算机完成二算机完成二进制加法其和也制加法其和也为二二进制,如果是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机原理及应用 单片机 原理 应用 课件 01 51 系列 汇编 指令