第三章MCS-51单片机指令系统学习目的1.了解指令的形式,掌握MCS-51汇编语言指令的格式。2.了解掌握指令系统的分类,掌握MCS-51单片机指令的寻址方式。3.掌握指令系统中各指令的使用及应用重点难点1.寻址方式2.指令系统3-1单片机指令常用的表示方式和寻址方式一指令的表示方式MCS-51单片机主要有两种指令形式:机器语言指令汇编语言指令。1.机器语言指令用二进制代码表示的指令称为机器语言指令,也称机器码。例如:“累加器A加1”指令用二进制数表示时,是“00000100”,在程序存储器中占用一个字节单元。2.汇编语言指令用容易记忆的缩写符号表示机器语言指令就是汇编语言指令。例如,“A加B”用英语写出来是“AddBtoA”,缩写成“ADDA,B”。这个“ADDA,B”就是汇编语言指令。MCS-51单片机的开发商约定:“ADDA,B”与25F0H对应。我们将“ADD”缩写符号称为“助记符”。编写机器语言程序实质上就是用汇编语言编写程序。比较:汇编语言指令机器语言指令•MOVA,#0AH74H0AH•ADDA,#14H24H14H8051汇编语言指令•指令组成:操作码助记符操作数括号内的部分是可选项。每个字段之间要用分隔符分隔,可以用作分隔符的符号有空格、冒号、逗号、分号等。指令格式:[标号:]操作码[目的操作数][,源操作数];[注释]LOOP:MOVA,3AH;(A)←(3AH)1.标号标号是语句地址的标志符号,代表该语句指令代码第一个字节的地址。(1)标号由1~8个ASCII字符组成,且第一个字符必须是字母,其余字符可以是字母、数字或其他特定字符。(2)不能使用该汇编语言已经定义了的符号作为标号。如指令助记符、寄存器符号名称等。(3)标号后必须跟冒号。2.操作码操作码用于规定语句执行的操作。它是汇编语句中唯一不能空缺的部分,也是语句的核心,它用指令助记符表示。3.操作数操作数用于给指令的操作提供数据或地址。在一条汇编语句中操作数可能是空缺的,也可能包括一项,还可能包括两项或三项。当有多个操作数时,各操作数间以逗号分隔。(1)工作寄存器名。(2)特殊功能寄存器名。(3)标号名。(4)常数。(5)符号“$”,表示程序计数器PC的当前值。(6)表达式。4.注释注释不属于汇编语句的功能部分,它只是对语句的说明。注释字段可以增加程序的可读性,有助于编程人员的阅读和维护。注释字段必须以分号“;”开头,长度不限可以换行接着书写,但换行时应注意在开头使用分号“;”。二指令的描述中经常用到一些特殊符号Rn工作寄存器R0~R7,即n=0~7。Ri寄存器R0、R1,即i=0、1。direct8位内部RAM单元的地址#data:指令中的8位常数。#data16指令中的16位常数。addr16:16位的目的地址addr1111位的目的地址rel8位带符号的偏移量字节bit:内部数据RAM或SFR的可直接寻址位。/位操作数的前缀,表示对该位取反。(X)X中的内容。((X))由X寻址的单元中的内容。←表示数据的传送方向。=表示数据交换。三MCS-51指令系统的寻址方式我的信在她那!找信去!②①注:找信是寻找信的“地址”!寻址方式,就是指如何找到存放被操作数据的位置(地址)的方法。1.立即数寻址立即数寻址是由指令直接给出操作数的寻址方式。#为立即数的标识符。目的地MOVA,#30H速递快信30HA2.寄存器寻址寄存器寻址是指令中指定寄存器的内容作为操作数的寻址方式。寄存器目的地R0~R7ABDPTRMOVA,R13.直接寻址•直接寻址是指令直接给出操作数所在单元的地址的寻址方式。指令中操作数部分给出直接地址,用direct表示。XXH目的地内部RAMSFRXXHMOVA,3AH例:MOVA,3AH操作码直接地址10011111APC程序存储器…1110010100111010PC+1内部RAM…3AH39H100111111…4.位寻址位寻址适用于可以进行单独位操作的指令,指令中直接给出位地址寻找位操作数。参与操作的数据是1bit而不是1B。位地址用bit表示,以区别字节地址direct。PCPC+11010001000110111程序存储器操作码0CyACFORSIRS0OVPPSW内部RAM位地址空间26H3736353433323130MOVC,37H0XXH目的地R0、R1DPTRMOVA,@R15.寄存器间接寻址•指令操作数的地址事先存放在某个寄存器中,由该寄存器的内容指定操作数地址的寻址方式,称为寄存器间接寻址,@为间接寻址指示符。信在XXH中寄存器可寻址内部RAM128B、外部RAM寻址DPTRMOVA,@R0PC操作码程序存储器11100110….….….~内部RAM47H65H65HR0….~~~47HA6.变址寻址(基址寄存器+变址寄存器间接寻址)变址间接寻址是将指令中基地址(基址寄存器)和偏移量地址(变址寄存器)的内容相加形成真正的操作数地址。基址寄存器1000H变址寄存器PCDPTRA程序存储器65H….….1000H+30H1030H30H65H7.相对寻址•以当前的PC值加上指令中给出的相对偏移量rel而形成转移目的地址的寻址方式。2000H+2H+28H······SJMP28H202AH程序存储器2000H2002H源地址目的地址rel转移指令本身字节数rel是有符号的8位二进制数,用补码表示。相对偏移在+127~-128字节单元之间。寻址空间及举例寻址方式存储器空间寄存器寻址R0~R7、A、B、Cy(位)、DPTR直接寻址内部数据存储器00H~7FH字节单元特殊功能寄存器寄存器间接寻址内部数据存储器(@R1、@R0)外部数据存储器(@R1、@R0、@DPTR)立即数寻址程序存储器(操作常数)变址间接寻址程序存储器(@A+DPTR、@A+PC)相对寻址程序存储器(修改了PC值)位寻址内部数据存储器及特殊功能寄存器中某些单元位表3-1每一种寻址方式可涉及的存储器空间判断下列指令各操作数的寻址方式(1)MOVA,#65H(2)MOV@R1,65H(3)MOV30H,R2(4)MOVC,20H(5)DJNZR2,LOOP(6)MOV60H,@R1(7)MOVCA,@A+PC寄存器寻址变址寻址直接寻址寄存器间接寻址寄存器寻址相对寻址位寻址位寻址直接寻址寄存器寻址寄存器间接寻址直接寻址寄存器寻址立即数寻址