单片机原理及应用PPT教学课件第3章 MCS51单片机指令系统

上传人:1666****666 文档编号:55723586 上传时间:2022-02-18 格式:PPT 页数:110 大小:2.41MB
收藏 版权申诉 举报 下载
单片机原理及应用PPT教学课件第3章 MCS51单片机指令系统_第1页
第1页 / 共110页
单片机原理及应用PPT教学课件第3章 MCS51单片机指令系统_第2页
第2页 / 共110页
单片机原理及应用PPT教学课件第3章 MCS51单片机指令系统_第3页
第3页 / 共110页
资源描述:

《单片机原理及应用PPT教学课件第3章 MCS51单片机指令系统》由会员分享,可在线阅读,更多相关《单片机原理及应用PPT教学课件第3章 MCS51单片机指令系统(110页珍藏版)》请在装配图网上搜索。

1、单片机原理及应用单片机原理及应用光华学院光华学院信息工程系信息工程系3.1 3.1 指令系统概述指令系统概述n指令:控制计算机完成指定操作的命令。指令:控制计算机完成指定操作的命令。n指令系统:计算机所能执行的指令的集合。指令系统:计算机所能执行的指令的集合。MCS-51MCS-51的基本指令共的基本指令共111111条。条。n按指令的按指令的功能功能来分为五类:来分为五类: (1)(1)数据传送类指令数据传送类指令(29(29条条) )(2)(2)算术操作类指令算术操作类指令(24(24条条) )(3)(3)逻辑操作类指令逻辑操作类指令(24(24条条) )(4)(4)控制转移类指令控制转移

2、类指令(17(17条条) )(5)(5)位操作指令位操作指令(17(17条条) )n按指令所占的按指令所占的字节字节( (空间属性空间属性) )来分来分: (1) (1) 单字节指令单字节指令(49(49条条):): (2) (2) 双字节指令双字节指令(45(45条条):): (3) (3) 三字节指令三字节指令(17(17条条):):n按指令的执行时间按指令的执行时间( (时间属性时间属性) )来分:来分: (1) 1(1) 1个机器周期指令个机器周期指令(64(64条条) ); (2) 2(2) 2个机器周期指令个机器周期指令(45(45条条) ) ; (3) 4(3) 4个机器周期指令

3、个机器周期指令( (只有乘、除两条指令只有乘、除两条指令) )。3.2 指令格式操作码:操作码:用来规定指令进行什么操作。用来规定指令进行什么操作。操作数:操作数:是指令操作的对象。是指令操作的对象。标号标号:代表该指令所存放的第一个字节存储单元的地代表该指令所存放的第一个字节存储单元的地址,故标号又称为址,故标号又称为“符号地址符号地址”。DELAY: MOV R3, #0FFH ;一段延时程序3.3 3.3 指令系统的寻址方式指令系统的寻址方式(寻找操作数)(寻找操作数)有我的信,找信去立即找到信!立即找到信!找到放信的箱子才找到信找到放信的箱子才找到信!3.3 3.3 指令系统的寻址方式

4、指令系统的寻址方式(寻找操作数)(寻找操作数)找到放信的箱子才找到信找到放信的箱子才找到信!1 10000H0000H0001H0001H0002H0002H2002H2002H2003H2003H2004H2004H2005H2005H2006H2006H80H80H2002H2002H信信操作数操作数立即找到信!立即找到信!立即数寻址!立即数寻址!#XXHMOV A, #55H#55HCPUAAMOV Rn, #01HR0-R7R0-R70000H H07H07H0808H H0FH0FH1010H H17H17H1818H H1FH1FH0区区R0R0R7R7R0R0R7R7R0R0R7

5、R7R0R0R7R71区区2区区3区区工作寄存器区工作寄存器区可位寻址区可位寻址区20H2FH7F 7807 0030H7FH数据缓冲区数据缓冲区/堆栈区堆栈区内部内部RAMRAM存储器存储器MOV DPTR, #1FFFHDPTRDPTRMOV direct, #88HdirectdirectMOV Direct, #88H70H70H88H10001000ADD A, #55H SUB A, #01HCPU操作数操作数内部内部RAM或或SFR区区20HMOV A, 20HA88HAMOV Rn, 20HMOV direct, 30HMOV Ri, 30HAR0-R7R0-R7directd

6、irectRiRi直接给出操作数直接给出操作数地址的方式地址的方式20H直接寻直接寻址址ADD A, 20HSUB A, 30H寻址比较MOV P1,#20HMOV P1,20HMOV P1,R0MOV P1,R0直接将20H这个数送P1口地址是寄存器R0地址在寄存器R0内地址是内存20H指出下列指令寻址方式1.MOV P1,#0FFH2.MOV A,F0H3.PUSH 12H立即寻址立即寻址直接寻址直接寻址直接寻址直接寻址CPU88H20H操作数操作数60H寄存器寄存器A操作数操作数操作数操作数MOV P1, A你能说出:你能说出:带圈的圆弧箭头带圈的圆弧箭头代代表的是什么吗?表的是什么吗?

7、谁能说出:谁能说出:寄存器寻址寄存器寻址与与直接寻址直接寻址的的区别区别?AR0-R7R0-R7BDPTRDPTRP1MOV P1, R4CLR A22通过 间接找到 的地址“2号”!“1号”信寄存器操作数寄存器寄存器1CPU3AH寄存器寄存器 R0猜一猜:猜一猜:操作数的地操作数的地址址是多少吗?是多少吗?内部内部RAM3AH我才是操作数我才是操作数65HMOV A, R0AR0R1DPTRDPTR寄寄存存器器间间接接寻寻址址寄寄存存器器MOVX A, DPTR寻址比较寻址比较MOV P1,#20HMOV P1,20HMOV P1,R0MOV P1,R0直接将20H这个数送P1口地址是寄存器

8、R0地址在寄存器R0内地址是内存20HCPU寄存器寄存器3AH3AH程序存储区程序存储区65H操作数操作数变址变址寄存器寄存器02H基址基址寄存器寄存器0300H+0302H0302H88HADPTRPCMOVC A, A+DPTRAMOVC A, A+PC0000H0000H0001H0001H0002H0002H2002H2002H2003H2003H2004H2004H2005H2005H2006H2006HPCPCPCPCPCPC如果想跳到如果想跳到2006H执行,该执行,该给给PC值值加上多少加上多少呢?呢?2006H2006H2003H2003H03H03H03H就是当前就是当前P

9、C值值与目的与目的PC值值相对差相对差SJMP03H03H(PC+03H)SJMP= 2003H + 03H = 2006H操作数哪去了?操作数哪去了?03就是操作数就是操作数20H21H27H28H20H21HD7D0000000001想一想:想一想:如果想使如果想使27H单单元的元的D5位位置置1,该怎么办呢?该怎么办呢?0000H H07H07H0808H H0FH0FH1010H H17H17H1818H H1FH1FH0区区R0R0R7R7R0R0R7R7R0R0R7R7R0R0R7R71区区2区区3区区工作寄存器区工作寄存器区可位寻址区可位寻址区20H2FH7F 7807 0030

10、H7FH数据缓冲区数据缓冲区/堆栈区堆栈区内部内部RAMRAM存储器存储器单元地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F7F77776F6F67675F5F57574F4F47473F3F37372F2F27271F1F17170F0F0707 MSB 位地址 LSB7E7E76766E6E66665E5E56564E4E46463E3E36362E2E26261E1E16160E0E06067D7D75756D6D65655D5D55554D4D45453D3D35352D2D25251D1D15150D0D05057C7C747

11、46C6C64645C5C54544C4C44443C3C34342C2C24241C1C14140C0C04047B7B73736B6B63635B5B53534B4B43433B3B33332B2B23231B1B13130B0B03037A7A72726A6A62625A5A52524A4A42423A3A32322A2A22221A1A12120A0A02027979717169696161595951514949414139393131292921211919111109090101787870706868606058585050484840403838303028282020181

12、8101008080000位寻址地址表位寻址地址表SETB 3DH20H21H27H28HD7D020H21H000000001MCS-51单片机指令系统分类介绍单片机指令系统分类介绍 MCS-51单片机指令系统共有单片机指令系统共有111条指令,按功能分条指令,按功能分类,可分下面类,可分下面5大类:大类:n数据传送类(数据传送类(29条)条)n算数操作类(算数操作类(24条)条)n逻辑运算类(逻辑运算类(24条)条)n控制转移类(控制转移类(17条)条)n位操作类位操作类 (17条)条)l常用伪指令(常用伪指令(17条)条)符符 号号含含 义义RnRn表示当前选定寄存器组的工作寄存器表示当

13、前选定寄存器组的工作寄存器R0R0R7R7RiRi表示作为间接寻址的地址指针表示作为间接寻址的地址指针R0R0R1R1#data#data表示表示8 8位立即数,即位立即数,即00H00HFFHFFH#data16#data16 表示表示1616位立即数,即位立即数,即0000H0000HFFFFHFFFFHaddr16addr16表示表示1616位地址,用于位地址,用于64K64K范围内寻址范围内寻址addr11addr11表示表示1111位地址,用于位地址,用于2K2K范围内寻址范围内寻址directdirect8 8位直接地址,可以是内部位直接地址,可以是内部RAMRAM区的某一单元或某

14、一专用功能寄存器的地址区的某一单元或某一专用功能寄存器的地址RelRel带符号的带符号的8 8位偏移量(位偏移量(-128-128+127+127)BitBit位寻址区的直接寻址位位寻址区的直接寻址位(X X)X X地址单元中的内容,或地址单元中的内容,或X X作为间接寻址寄存器时所指单元的内容作为间接寻址寄存器时所指单元的内容将将 后面的内容传送到前面去后面的内容传送到前面去指令中一些符号的约定意义指令中一些符号的约定意义MOV , MOV A,#20H MOV DPTR,#data16 MOVX , 谁知道谁知道内内RAMRAM中中30H30H中数据中数据外外RAMRAM的的1001H10

15、01H中中? ?MOV A, 30HMOV DPTR, #1001HMOVX DPTR, A片内传送片内传送MOVMOVn在在A累加器、工作寄存器累加器、工作寄存器R0R7、片内、片内RAM与与SFR(direct、Ri)之间传送数据。)之间传送数据。单片机与片外单片机与片外RAMRAM之间的数据传送之间的数据传送(取数(取数/ /送数)送数)MOVXMOVXn在片外RAM(或外扩I/O口)与A累加器之间传送。仅采用寄存器间接寻址方式。n当采用DPTR做间接寻址,则可寻址整个64K片外RAM,高8位地址(DPH)由P2口输出,低8位地址(DPL)由P0口输出。n采用Ri(i=0,1)作间接寻址

16、,可寻址片外256个单元RAM,8位地址和数据均由P0口输出,可选其他任何输出口线来输出高于8位的地址,一般选用P2口输出高8位的地址。单片机与单片机与ROMROM之间的数据传送之间的数据传送(查表)(查表)MOVCMOVCn读取存放在程序存储器读取存放在程序存储器ROM中的数据,通常是以中的数据,通常是以表格形式存放。采用表格形式存放。采用变址寻址变址寻址方式。方式。nMOVCA,A+DPTRMOVCA,A+PCAROM“C”?C”?CodeCode的第一个字母,即代码。的第一个字母,即代码。例如例如:(:(A A)=30H=30H,执行,执行1000H1000H处的指令处的指令1000H1

17、000H:MOVC A,A+PCMOVC A,A+PC本指令占用本指令占用1 1个单元,下条指令地址为个单元,下条指令地址为1001H1001H,(PCPC)=1001H=1001H,再加上,再加上A A种的种的30H30H,得,得1031H1031H,结,结果将果将ROMROM种的种的1031H1031H的内容送入的内容送入A A。单片机与单片机与ROMROM之间的数据传送之间的数据传送(查表)(查表)MOVCMOVC优点:优点:不改变不改变特殊功能寄存器特殊功能寄存器及及PCPC的状态,的状态,根据根据A A的内容就可以取出的内容就可以取出表格中的常数表格中的常数。缺点:缺点:表格只能存放

18、在表格只能存放在该条查表指令后该条查表指令后面的面的256256个单元之内,表格的大小受到限制,且个单元之内,表格的大小受到限制,且表格只能被一段程序所利用。表格只能被一段程序所利用。单片机与单片机与ROMROM之间的数据传送之间的数据传送(查表)(查表)MOVCMOVCMOVCA,A+PC例如例如:(:(DPTRDPTR)=8100H=8100H,(,(A A)=40H=40H执行指令执行指令MOVC A,A+DPTRMOVC A,A+DPTR结果将结果将 ROM ROM 中中 8140H 8140H 单元内容送入累加器单元内容送入累加器A A。单片机与单片机与ROMROM之间的数据传送之间

19、的数据传送(查表)(查表)MOVCMOVC 以以DPTRDPTR作为作为基基址寄存器,址寄存器,A A的内容的内容作为无符号整作为无符号整数和数和DPTRDPTR的内容的内容相加得到一个相加得到一个1616位的地址,把由位的地址,把由该地址指出的该地址指出的程序程序存储器单元的内容送到累加器存储器单元的内容送到累加器A A。例如:例如: MOVC A,A+DPTRMOVC A,A+DPTR 本指令的执行结果只和指针本指令的执行结果只和指针DPTRDPTR及累加器及累加器A A的内的内容有关,容有关,与该指令存放的地址及常数表格存放的与该指令存放的地址及常数表格存放的地址无关地址无关。 表格的大

20、小和位置可以在表格的大小和位置可以在64K64K程序存储器中任意程序存储器中任意安排安排,一个表格可以为各个程序块公用。,一个表格可以为各个程序块公用。MOVCA,A+DPTR例例: :从从程序存储器程序存储器2000H2000H单元开始存放单元开始存放0 09 9的平方值,以的平方值,以DPTRDPTR作为基址寄存器进行查表得的作为基址寄存器进行查表得的平方值平方值, , 若用以若用以DPTRDPTR作为基址寄存器的查表指令作为基址寄存器的查表指令. .程序如下程序如下: :MOV DPTR,#2000HMOV DPTR,#2000HMOV A,#09HMOV A,#09HMOVC A,A+

21、DPTRMOVC A,A+DPTR1 1)字节交换指令()字节交换指令(3 3条)条)交换类交换类指令(指令(3 3条)条)A F581内部RAM directXCH A , Rn Ri2 2)低半字节交换指令()低半字节交换指令(1 1条)条)XCHDA, Ri 这里假设i=0A 8 5F 15B5B寄存器R03 3)累加器)累加器A A中高中高4 4位和低位和低4 4位交换指令(位交换指令(1 1条)条)SWAP A0101 1100PUSH directPOP directPUSH 33HPUSH 34H堆栈操作堆栈操作指令(指令(2条)条)POP 36HPOP 35H.堆栈原则:堆栈原

22、则: 后进先出后进先出数据缓冲堆栈区数据缓冲堆栈区堆栈指针堆栈指针 SPSP 内是存放的是堆栈内是存放的是堆栈栈顶的地址栈顶的地址堆栈原则:后进先出堆栈原则:后进先出PUSH directPOP directPUSH 33HPUSH 34H堆栈原则:后进先出堆栈原则:后进先出复位后复位后SP=07HPUSH directPOP directPOP 36HPOP 35H堆栈原则:后进先出堆栈原则:后进先出复位后复位后SP=07H传送类指令分类n单片机内部数据传送指令:单片机内部数据传送指令:nMOVnXCHXCHDnSWAPnPUSHnPOPn读写单片机读写单片机外部外部RAM数据的传送指令:数

23、据的传送指令:MOVXn单片机单片机ROM的数据传送指令:的数据传送指令:MOVCMOVX 和和MOVC 以以A作中介作中介为便于理解记忆指令,对数据传送类指令再为便于理解记忆指令,对数据传送类指令再作如下分类:作如下分类:数据传送数据传送类指令类指令访问数据存访问数据存储器指令储器指令访问程序存储访问程序存储器指令器指令(2(2条条) )访问片内数据访问片内数据存储器指令存储器指令访问片外数据存访问片外数据存储器指令储器指令(4(4条条) )一般传送指令一般传送指令特殊传送指令特殊传送指令8 8位位(15(15条条) )1616位位(1(1条条) )堆栈操作堆栈操作(2(2条条) )数据交换

24、数据交换(5(5条条) ) 3.4.2 算术操作类指令(24条)加法加法指令(指令(8条)条) RnADDC A , direct Ri #data 0011,0110,1010,1101+ 1010,1100,1101,1100 1110,0011,1000,1001 1010,1101+ 1101,1100 1000,1001MOV A,#0ADHADD A,#0DCHMOV 20H,AMOV A,#36HADDC A,#0ACHMOV 21H,ABCD码码: 0011 0100 十进制十进制二进制二进制BCDBCD码码0123456789 10 11 12 13 14 150000000

25、10010001101000101011001111000100110101011110011011110111100000001001000110100010101100111100010010001 00000001 00010001 00100001 00110001 01000001 01011 81 6+3 4十进制十进制0001 10000001 0110+BCD码码0010 11100011 01000010 1110-0000 0110差差6BCDBCD码调整指令码调整指令nBCD码也叫码也叫8421码码,就是将十进制的数就是将十进制的数以以8421的形式展开成二进制,大家知的

26、形式展开成二进制,大家知道十进制是道十进制是09十个数组成,这十个十个数组成,这十个数每个数都有自己的数每个数都有自己的8421码:码: n举个例子:举个例子: 321的的8421码码就是就是 n3 2 1 0011 0010 0001 n原因原因:0011=8x0+4x0+2x1+1x1=3 0010=8x0+4x0+2x1+1x0=2. 0001=8x0+4x0+2x0+1x1=1 BCDBCD码调整指令码调整指令DAA该指令有何用途呢?该指令有何用途呢? 注意:注意:DA A 指令只能跟在指令只能跟在进行进行BCD码运算的码运算的ADD或或ADDC加法指令后,不适加法指令后,不适用与减法

27、指令。用与减法指令。BCDBCD码调整指令码调整指令n例如例如:n87+13加加1减减1指令指令程序状态字寄存器程序状态字寄存器PSWPSW (Program Status Word) (Program Status Word) (1 1)CyCy(PSW.7PSW.7)进位标志位,或写为进位标志位,或写为C,C,有进位或有进位或借位时硬件置借位时硬件置1 1。(2 2)Ac(PSW.6) Ac(PSW.6) 辅助进位标志位,用于辅助进位标志位,用于BCDBCD码的十码的十 进制调整运算。当低进制调整运算。当低4 4位向高位向高4 4位数发生进位或借位数发生进位或借位时位时,AC,AC被硬件置

28、位被硬件置位, ,否则被清否则被清0 0 。(3 3)F0F0(PSW.5PSW.5)用户自定义标志位。可用软件使用户自定义标志位。可用软件使它置它置1 1或清或清0 0,也可由软件来测试标志,也可由软件来测试标志F0F0以控制程以控制程序的流向。编程时,该标志很有用。序的流向。编程时,该标志很有用。 CyACF0RS1RS0OVPD0HD7 D6 D5 D4 D3 D2 D1 D0PSW表表 2.3 RS12.3 RS1、 RS0RS0与片内工作寄存器组的对应关系与片内工作寄存器组的对应关系 RS1RS0寄存器组寄存器组片内片内RAM地地址址通用寄存器通用寄存器名称名称000组组00H07H

29、R0R7011组组08H0FHR0R7102组组10H17HR0R7113组组18H1FHR0R7(4 4)RS1RS1、RS0RS0(PSW.4PSW.4、PSW.3PSW.3):):4 4组工作寄存器组工作寄存器区选择控制位区选择控制位1 1和位和位0 0。CyACF0RS1RS0OVPD0HD7 D6 D5 D4 D3 D2 D1 D0PSWRAM共共256个单元中低个单元中低128个单元个单元(5)OV(5)OV(PSW.2PSW.2):):溢出标志位溢出标志位 指示运算是否产生溢出。各种算术运算指令对该位的影指示运算是否产生溢出。各种算术运算指令对该位的影响情况较复杂,将在第响情况较

30、复杂,将在第3 3章介绍。章介绍。 (6)PSW.1(6)PSW.1位位: : 保留位,未用保留位,未用 (7)P(PSW.0)(7)P(PSW.0):奇偶标志位奇偶标志位, ,每个指令周期都由硬件置位或清除每个指令周期都由硬件置位或清除. . P=1P=1,A A中中“1”1”的个数为奇数的个数为奇数P=0P=0,A A中中“1”1”的个数为偶数的个数为偶数注:注: 奇偶标志位对奇偶标志位对串行口通讯中的数据传输串行口通讯中的数据传输有重要意义,常用有重要意义,常用奇偶检验的奇偶检验的方法方法来检验数据传输的可靠性。来检验数据传输的可靠性。CyACF0RS1RS0OVPD0HD7 D6 D5

31、 D4 D3 D2 D1 D0PSWA中存放结果的低中存放结果的低8位位B中存放结果的高中存放结果的高8位位乘法乘法指令(指令(1条)条)除法除法指令(指令(1条)条)MUL ABDIV ABA中存放结果的商中存放结果的商B中存放结果的余数中存放结果的余数A中存放结果的低中存放结果的低8位位B中存放结果的高中存放结果的高8位位乘法乘法指令(指令(1条)条)MUL AB例如例如:MOV A,#02HMOV B,#03HMUL ABA=06HB=00H乘法乘法指令(指令(1条)条)MUL AB例如例如:MOV A,#20MOV B,#20MUL AB20=14HA=90HB=01Hn20*20=4

32、00n20=14Hn400=0190H提示:除法除法指令(指令(1条)条)DIV ABA中存放结果的商中存放结果的商B中存放结果的余数中存放结果的余数例如例如:MOV A,#25MOV B,#03DIV ABA=08HB=01H3.4.3 3.4.3 逻辑运算指令逻辑运算指令逻辑与逻辑与指令(指令(6条)条) 逻辑逻辑与与指令常用于指令常用于屏蔽字节中的某些位屏蔽字节中的某些位。若。若清除清除某位,则用某位,则用和和该位该位相与相与;若;若保留保留某位,则用某位,则用和该位和该位相与相与。逻辑或逻辑或指令(指令(6条)条) 逻辑逻辑或或指令常用于指令常用于使字节中的某些位置使字节中的某些位置,

33、其它位保持不变。若,其它位保持不变。若置位置位某位,则用某位,则用和该位和该位相或相或;若保留某位,则用和该位相或。;若保留某位,则用和该位相或。逻辑异或逻辑异或指令(指令(6条)条) 逻辑异或指令常用于使字节中的某些位进行取反操作,其它位保逻辑异或指令常用于使字节中的某些位进行取反操作,其它位保持不变。若某位取反,则用和该位相异或;若保留某位,则用持不变。若某位取反,则用和该位相异或;若保留某位,则用和该位相异或。和该位相异或。累加器累加器A清清0和取反和取反指令指令A.0A.7A.0A.7A.0A.7A.0A.7CYCY RL A RR A RLC A RRC AnMOV A,#01HnM

34、OV P1,AnRL AnMOV P1,A循环移位循环移位指令指令假设执行该指假设执行该指令前,令前,PCPC的值的值为为0000H0000H。 PC高5位(保持不变) PC低11位A10A9A800 001A7A6A5A4A3A2A1A0操作码(第一字节)操作数(第二字节)程序计数器PC 例: JMPA+DPTR4)散转指令)散转指令 功能:功能:将将DPTR中的内中的内容作为基地址,通过容作为基地址,通过修修改改A的内容实现散转的内容实现散转 !一般应用在键盘程序中一般应用在键盘程序中1)累加器累加器A判判0指令(指令(2条)条)条件转移条件转移指令(指令(8条)条)2)判别进位标志)判别

35、进位标志CY状态指令(状态指令(2条)条)3)判别某位)判别某位Bit状态指令(状态指令(2条)条)4)减)减1非零转移指令(非零转移指令(2条)条)5)比较转移指令()比较转移指令(4条)条)条件转移指令的共同特点:条件转移指令的共同特点:都是相对转移指令都是相对转移指令条件转移类指令范例(一) 题目要求:将题目要求:将00H0FH这这16个数顺序地置入片个数顺序地置入片内内RAM20H2FH单元中。单元中。2FH.21H20H0FH.01H00H数据地址条件转移类指令范例(一) 题目要求:将题目要求:将00H0FH这这16个数顺序地置入片个数顺序地置入片内内RAM20H2FH单元中。单元中

36、。可以用16个MOV指令将16个数据依次装入存储器中!采用循环方式将16个数据依次装入存储器中!条件转移类指令范例(一) MOVR0,#20HMOVR7,#10HCLRALOOP:MOVR0,AINCAINCR0DJNZR7,LOOPSJMP$将地址20H放入R0中,明确了数据终点起始地址循环次数16放入R7,明确循环15次累加器A=0实现数据00放入20H中A=01RO=21判断作用!判断什么?判断R7的值,(-1不等于0则跳转)MOVR0,#20HCLRA LOOP:MOVR0, AINCAINCR0CJNE A, #10H, LOOPSJMP $条件转移类指令范例(二)条件转移类指令范例

37、(二)将地址20H放入R0中,明确了数据终点起始地址累加器A=0实现数据00放入20H中A=01RO=21判断作用!判断什么?判断A的值与#10H是否相等(比较不相等则跳转) MOV R0, #20H MOV A, #10H MOV 30H,#00HLOOP: MOV R0, 30H INC30H INCR0 DEC A JNZLOOP SJMP $条件转移类指令范例(三)条件转移类指令范例(三)将20H放入R0中将10H放入A中将00H放入30H地址下将30H地址下内容放入R0内容地址下30H下内容+1R0下内容+1A的内容-1A不等于0则跳转3FH.30H.X变量X的值从00-0F不等于0

38、则跳转 MOV R0, #20H MOV A, # 0FH MOV 30H,#00H LOOP: MOVR0, 30H INC30H INCR0 SUBBA,#01H JNCLOOP SJMP $条件转移类指令范例(四)条件转移类指令范例(四)将20H放入R0中将10H放入A中将00H放入30H地址下将30H地址下内容放入R0内容地址下30H下内容+1R0下内容+1带借位将A的内容-1判断CY不等于1则跳转无借位则跳转带借位减法指令,15-1=14. . .1-1=01-1=00-10-1有借位顺次执行有借位顺次执行调用和返回调用和返回指令(指令(8条)条)1)绝对调用绝对调用指令(指令(1条

39、)条)2K范围内调用子程序指令助记符格式助记符格式机器码机器码(B)相应操作相应操作机器周期机器周期A C A L L addr11a10a9a810001addr70PC PC+2SP SP+1,(SP)PC07SP SP+1,(SP)PC815PC010 addr112比较 PUSH direct POP direct比较 AJMP addr11调用和返回调用和返回指令(指令(8条)条)2)长调用长调用指令(指令(1条)条)助记符格式助记符格式机器码机器码(B)相应操作相应操作机器周期机器周期L C A L L addr1600010010addr158addr70PCPC+3SPSP+1

40、,SPPC07SP SP+1,SPPC815PC addr16264K范围内程序存储器内调用子程序指令3)返回返回指令指令助记符格式助记符格式机器码机器码(B)相应操作相应操作机器周期机器周期RET00100010PC815 (SP), SP SP-1PC07 (SP), SP SP-1子程序返回指令子程序返回指令2RETI00110010PC815 SP, SP SP-1PC07 SP, SP SP-1中断返回指令中断返回指令24)空操作空操作指令指令助记符格式助记符格式机器码机器码(B)相应操作相应操作指令说明指令说明NOP00000000空操作空操作消耗消耗1个机器周期个机器周期 硬件延

41、时硬件延时3.4.5 位操作类指令单元地址2FH2EH2DH2CH2BH2AH29H28H27H26H25H24H23H22H21H20H7F7F77776F6F67675F5F57574F4F47473F3F37372F2F27271F1F17170F0F0707 MSB 位地址 LSB7E7E76766E6E66665E5E56564E4E46463E3E36362E2E26261E1E16160E0E06067D7D75756D6D65655D5D55554D4D45453D3D35352D2D25251D1D15150D0D05057C7C74746C6C64645C5C54544C4

42、C44443C3C34342C2C24241C1C14140C0C04047B7B73736B6B63635B5B53534B4B43433B3B33332B2B23231B1B13130B0B03037A7A72726A6A62625A5A52524A4A42423A3A32322A2A22221A1A12120A0A020279797171696961615959515149494141393931312929212119191111090901017878707068686060585850504848404038383030282820201818101008080000RAM位寻址区

43、位地址表位寻址区位地址表1. 位传送指令位传送指令助记符格式助记符格式机器码机器码(B)相应操作相应操作指令说明指令说明机器周期机器周期MOV C,bit10100010CY bit位传送指令,结果影响位传送指令,结果影响CY标志标志2MOV bit,C10010010bit CY位传送指令,结果不影响位传送指令,结果不影响PSW2 例例:MOV 20H,21H MOV C,21H2. 位置位和位清零指令位置位和位清零指令助记符格式助记符格式机器码机器码(B)相应操作相应操作指令说明指令说明机器周期机器周期CLR C11000011CY 0位清位清0指令,结果影响指令,结果影响CY标志标志1C

44、LR bit11000010 bitbit 0位清位清0指令,结果不影响指令,结果不影响PSW1SETB C11010011CY1位置位置1指令,结果影响指令,结果影响CY标志标志1SETB bitbit 1位置位置1指令,结果不影响指令,结果不影响PSW111010010 bit3. 位运算指令位运算指令助记符格式助记符格式机器码机器码(B)相应操作相应操作指令说明指令说明机器周期机器周期ANL C,bit10000010 bitCY CYbit位与指令位与指令2ANL C,/bit10110010 bit位与指令位与指令2ORL C,bit01110010 bitCY CYbit位或指令位

45、或指令2ORL C,/bit10100010 bit位或指令位或指令2CPL C10110011位取反指令位取反指令2CPL bit10110010位取反指令,结果位取反指令,结果不影响不影响CY2CY CYbitCY CYbitCYCYbitbit4. 位判断转移指令位判断转移指令助记符格式助记符格式机器码机器码(B)相应操作相应操作机器周期机器周期JB bit,rel00100000bit rel若若bit=1,则,则PCPC+rel,否则顺,否则顺序执行序执行2JNB bit,rel00110000 bit rel若若bit=0,则,则PCPC+rel,否则顺,否则顺序执行序执行2JBC

46、 bit,rel00010000 bit rel若若 bit=1,则,则PCPC+rel,bit0,否则顺序执行否则顺序执行25. 判判CY标志转移指令(条件转移指令)标志转移指令(条件转移指令)助记符格式助记符格式机器码机器码(B)相应操作相应操作机器周期机器周期JC rel01000000若若CY=1,则则PCPC+rel,否则顺序执行,否则顺序执行2JNC rel01010000若若CY1,则则PCPC+rel,否则顺序执行,否则顺序执行23.5 MCS - 513.5 MCS - 51汇编语言的伪指令汇编语言的伪指令 伪指令伪指令是是对汇编过程起控制作用对汇编过程起控制作用,是程序员,

47、是程序员发给汇编程序的命令,指示如何完成汇编工作。发给汇编程序的命令,指示如何完成汇编工作。伪指令没有对应的机器代码,不产生目标程序。伪指令没有对应的机器代码,不产生目标程序。1) 1) 设置目标程序起始地址伪指令设置目标程序起始地址伪指令ORG(ORiGinORG(ORiGin) )n伪指令格式为伪指令格式为: : ORGORG 地址地址( (十六进制表示十六进制表示) )该伪指令的作用是该伪指令的作用是指明后面的程序指明后面的程序或或数据块数据块的起的起始地址始地址, , 后面的后面的源程序源程序或或数据块数据块就依次连续存就依次连续存放,直到遇到另一个放,直到遇到另一个ORGORG指令为

48、止。指令为止。 例例: ORG 0100HSTART: MOV SP, 60H MOV R0, 2FH MOV R2, 0FFH 在一个源程序中,可多次使用在一个源程序中,可多次使用ORGORG指令,来规定指令,来规定不同的程序段的起始地址。但是,不同的程序段的起始地址。但是,地址必须由小地址必须由小到大排列,地址不能交叉、重叠到大排列,地址不能交叉、重叠。例如:例如:ORG 2000HORG 2000H ORG 2500H ORG 2500H ORG 3000H ORG 3000H 2) 2) 汇编结束命令汇编结束命令 END(END of assembly)END(END of assem

49、bly)n指令格式指令格式: : ENDEND 汇编语言源程序的结束标志,用于终止源程汇编语言源程序的结束标志,用于终止源程序的汇编工作。序的汇编工作。在整个源程序中只能有一条在整个源程序中只能有一条ENDEND命令,且位于程序的最后命令,且位于程序的最后。3) 3) 定义字节伪指令定义字节伪指令 DBDB(Define ByteDefine Byte)n指令格式指令格式: : DB DB 项或项表项或项表其中项或项表指一个字节数据或用逗号分开的字其中项或项表指一个字节数据或用逗号分开的字节数据串,或以单节数据串,或以单( (双双) )引号括起来的字符串。引号括起来的字符串。 ORG 2000

50、HORG 2000H TAB: DB 30H,7FH,24 TAB: DB 30H,7FH,24 DB C,5,AB DB C,5,AB汇编后:汇编后:(2000H2000H)= 30H= 30H(2001H2001H)= 7FH= 7FH(2002H2002H)= 18H= 18H(十进制数(十进制数2424)(2003H2003H)= 43H= 43H(字符(字符C C的的ASCIIASCII码)码)(2004H2004H)= 35H= 35H(字符(字符5 5的的ASCIIASCII码)码) (2005H2005H)= 41H= 41H(字符(字符A A的的ASCIIASCII码)码)

51、(2006H2006H)= 42H= 42H(字符(字符B B的的ASCIIASCII码)码)注意:注意:DBDB功能:从指定单元开始定义(存储)功能:从指定单元开始定义(存储)若干个字节,若干个字节,1010进制数自然转换成进制数自然转换成1616进制数,字符按进制数,字符按ASCIIASCII码存储。码存储。4) 4) 定义字定义字(2(2字节字节) )伪指令伪指令DWDW(Define WordDefine Word)n指令格式指令格式: : DW DW 项或项表项或项表例例, , ORG 2000HORG 2000H DW 1246H DW 1246H,7BH7BH,1010汇编后:汇

52、编后:(2000H2000H)=12H=12H;第;第1 1个字个字(2001H2001H)=46H =46H (2002H2002H)=00H=00H;第;第2 2个字个字(2003H2003H)=7BH=7BH(2004H2004H)=00H=00H;第;第3 3个字个字(2005H2005H)=0AH =0AH 5) 5) 赋值伪指令赋值伪指令EQUEQU指令格式指令格式: : 标号标号 EQU EQU 数字或汇编符号数字或汇编符号该伪指令功能是使标号该伪指令功能是使标号等价于等价于给定的数字或汇编给定的数字或汇编符号。符号。例例: : TEST EQU 2000HTEST EQU 20

53、00H 表示标号表示标号TEST=2000HTEST=2000H,在汇编时,凡是遇到,在汇编时,凡是遇到标号标号TESTTEST时,均以时,均以2000H2000H来代替。来代替。注意:注意:在同一个源程序中在同一个源程序中, , 同一个标号只能赋值同一个标号只能赋值一次。一次。6) 6) 预留存储空间伪指令预留存储空间伪指令 DSDS指令格式:指令格式: 标号:标号: DS DS 表达式表达式 该伪指令的功能是从该伪指令的功能是从标号地址标号地址开始,保留若开始,保留若干字节的内存空间以备存放数据。保留的字节单干字节的内存空间以备存放数据。保留的字节单元数由表达式的值决定。元数由表达式的值决

54、定。例如:例如: ORG 1000HORG 1000H DS 20H DS 20H DB 30H,8FH DB 30H,8FH汇编后从汇编后从1000H1000H开始,预留开始,预留32(20H)32(20H)个字节的内存个字节的内存单元,然后单元,然后(1020H)=30H(1020H)=30H,(1021H)=8FH(1021H)=8FH。 7) 7) 位地址定义伪指令位地址定义伪指令 BITBIT指令格式指令格式: : 标号标号 BIT BIT 位地址位地址 该伪指令的功能是将该伪指令的功能是将位地址位地址赋予前面的标赋予前面的标号,经赋值后可用该标号代替号,经赋值后可用该标号代替BIT

55、BIT前面的位地址。前面的位地址。例如:例如: FLG FLG BITBIT F0 F0程序设计n最早人们只能用机器语言机器语言(二进制)编写程序;n为了方便记忆,人们开始用助记符助记符形式的汇编语言编写程序,称为低级语言低级语言.再用汇编系统将其翻译成机器语言,该过程称为汇编汇编.n为了更接近人的语言编写程序,出现了高级语言高级语言,如:BASIC.FORTRAN.PASCAL.C.JAVA.然后再用编译系统编译系统将其翻译成机器语言,该过程称为编译编译;机器只能识别机器语言,所以必须用编译系统将高级语言编写的源程序编译成机器语言,用汇编系统将汇编语言编写的源文件汇编成机器语言.n由低级或高

56、级语言构成的程序称为源程序源程序,由机器语言构成的程序称为目标程序目标程序; 源程序 目标程序 低级语言机器语言汇编高级语言机器语言编译程序设计程序设计实例引入n实例实例假设一个班有假设一个班有50个人,个人,共有共有3门选修课:门选修课:计算机算法计算机算法服装服装CAD设计设计德语德语请找出:请找出:同时选了三门课的同学;同时选了三门课的同学;问题的解决问题的解决n第一步第一步 如何在计算机中表示选修某门课的所有如何在计算机中表示选修某门课的所有同学同学5122325225392939412252939计算机算法计算机算法 服装服装CAD设计设计德语德语选修这门人数选修这门人数学生的学号学

57、生的学号问题的解决问题的解决n第二步第二步 设计思路:找出同时选了三门课的同学设计思路:找出同时选了三门课的同学计算机算法计算机算法CAD设计设计德语德语重复该过程重复该过程第三步:设计流程第三步:设计流程找出第一个学生找出第一个学生他选了德语吗?他选了德语吗?他选了他选了CADCAD吗?吗?记录要找的人记录要找的人还有学生吗?还有学生吗?下一个学生下一个学生N NN NY YN NY YY Y结束结束他选计算机吗?他选计算机吗?N NY Y几点启示几点启示n整体构思;整体构思;n构建整体流程框图;构建整体流程框图;n结构合理,流程清晰,简单明了;结构合理,流程清晰,简单明了;n局部模块化;局

58、部模块化;符合人进行逻辑思考的习惯符合人进行逻辑思考的习惯计算机从根本上来说,没有任何逻辑计算机从根本上来说,没有任何逻辑性,性,所以,你必须告诉它,先做什么,所以,你必须告诉它,先做什么,后做什么,遇到什么情况又该做什么,后做什么,遇到什么情况又该做什么,等等等等流程图设计本身是一个逐步求精的过流程图设计本身是一个逐步求精的过程,最终将任务划分为若干能由机器程,最终将任务划分为若干能由机器指令实现的小模块指令实现的小模块简单程序设计 结构特点结构特点: 按指令的先后顺序依次执行。按指令的先后顺序依次执行。将将20H20H单元的两个压缩单元的两个压缩BCDBCD码拆开变成码拆开变成ASCIIA

59、SCII码,码, 存入存入21H21H、22H22H单元。单元。( (假设假设20H20H中的中的BCDBCD码为码为00110100)00110100)0011压缩BCD码0011 0011 0100低四位ASCII码高四位ASCII码程序设计-举例例例1 1.将20H单元的两个压缩BCD码拆开变成ASCII码,存入21H,22H单元.(假设20H中的BCD码为00110100)BCD码表示范围:0-9ASCII码表示为:30H-39H程序设计-启示方法1.将BCD码除以10H,恰好是将BCD码分别移到了A.B的低4位,然后再各自与30H相或,即成为ASCII码.ORG 0000HMOV A

60、,20HMOV B,#10HDIV ABORL B,#30HMOV 22H,BORL A,#30HMOV 21H,ASJMP $END 开始 (20H)A10HB A/B (A中为高4位BCD码,B中为低4位BCD码) B+30HB B(22H) A+30HA A(21H)结束简单程序例1-方法1源程序如下:00110011 010001000011 01000011 01000001 00000001 000000110011000000000000 01000000 01000011 01000011 010000110011 ORG 0000H MOV R0,#20H MOV A,#30H XCHD A,R0 MOV 22H,A MOV A,R0 SWAP A ORL A , #30H MOV 21H, A SJMP $ END简单程序例1-方法2 开始 #20HR0#30HA A的低4位(20H)的低4位 A(22H)(20H)A A的低4位A的高4位 A(21H) 结束 A+30HA源程序如下:00110010 000000110100000001000011 01000011 00000011 00000011 0011 END

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!