您好,欢迎访问三七文档
3.1MCS-51单片机指令系统概述3.1.1指令、指令系统的概念指令:能完成特定功能的命令。指令描述的两种基本形式:机器语言和汇编语言指令系统:计算机能够执行的全部操作所对应的指令集合。编写程序实际上是从指令系统中挑选一个指令子集的过程。指令的属性指令一般有功能、时间和空间三种属性。功能属性是指每条指令都对应一个特定的操作功能;时间属性是指一条指令执行所用的时间,一般用机器周期来表示;空间属性是指一条指令在程序存储器中存储所占用的字节数。位操作程序转移逻辑运算算术运算数据传送功能空间单字节指令双字节指令三字节指令时间单机器周期指令双机器周期指令4机器周期指令指令操作码操作数计算机执行该指令将进行何种操作参加操作的数的本身或操作数所在的地址无操作数单操作数双操作数指令格式:[标号:]操作码助记符[目的操作数][,源操作数][;注释](1)Ri和Rn:表示当前工作寄存器区中的工作寄存器,i取0或1,表示R0或R1。n取0~7,表示R0~R7。(2)#data:表示包含在指令中的8位立即数。(3)#data16:表示包含在指令中的16位立即数。(4)rel:以补码形式表示的8位相对偏移量,范围为-128~127,主要用在相对寻址的指令中。(5)addr16和addr11:分别表示16位直接地址和11位直接地址。(6)direct:表示直接寻址的地址。(7)bit:表示可位寻址的直接位地址。(8)(X):表示X单元中的内容。(9)((X)):表示以X单元的内容为地址的存储器单元内容,即(X)作地址,该地址单元的内容用((X))表示。(10)/和→符号:“/”表示对该位操作数取反,但不影响该位的原值。“→”表示操作流程,将箭尾一方的内容送入箭头所指另一方的单元中去。3.2寻址方式•寻址方式:CPU寻找操作数或操作数地址的方法。•寻址方式越多,计算机指令功能越强,灵活性越大。•MCS-51采用7种寻址方式:3.2.1立即寻址操作数直接出现在指令中,紧跟在操作码的后面,作为指令的一部分与操作码一起存放在程序存储器中,可以立即得到并执行,不需要经过别的途径去寻找,故称为立即寻址。汇编指令中,在一个数的前面冠以#符号作前缀,就表示该数为立即寻址。指令:MOVA,#5AH机器码:74H5AHROM0111010001011010PC操作码立即数01011010A3.2.2寄存器寻址在指令选定的某寄存器中存放或读取操作数,以完成指令规定的操作,称为寄存器寻址。例如:MOVA,R7指令中源操作数和目的操作数都是寄存器寻址。该指令的功能是把工作寄存器R7中的内容传送到累加器A中,如R7中的内容为30H,则执行该指令后A的内容也为30H。指令:MOVA,R7机器码:EFH11101111ROMPCR7RS1RS0PSW指定0~3工作区10101001R7A101010013.2.3寄存器间接寻址由指令指出某一寄存器的内容作为操作数地址的寻址方法,称为寄存器间接寻址。这里需要强调的是:寄存器中的内容不是操作数本身,而是操作数的地址,到该地址单元中才能得到操作数。寄存器起地址指针的作用。指令:MOVA,@R1机器码:E7HROM2000H80H2FHE7HPCR180HRS1RS0PSW指定0~3工作区2FHA3.2.4直接寻址指令中直接给出操作数所在的存储器地址,以供取数或存数的寻址方式称为直接寻址。指令:MOVA,3FH机器码:E5H3FHROM操作码直接地址1110010100111111PC11111111内部RAM3FHA11111111•直接寻址可用于访问片内、外数据存储器,也可用于访问程序存储器。•直接寻址可访问片内RAM的低128个单元(00H~7FH),同时也是用于访问高128个单元的特殊功能寄存器SFR的唯一方法。•由于52子系列的片内RAM有256个单元,其高128个单元与SFR的地址是重叠的。为了避免混乱,单片机规定:直接寻址的指令不能访问片内RAM的高128个单元(80H~FFH),若要访问这些单元只能用寄存器间接寻址指令,而要访问SFR只能用直接寻址指令。•访问SFR可在指令中直接使用该寄存器的名字来代替地址,如MOVA,80H,可以写成MOVA,P0,因为P0口的地址为80H。3.2.5变址寻址图3.2变址寻址示意图基址寄存器加变址寄存器间接寻址,简称变址寻址。指令:MOVCA,@A+DPTR机器码:93H3FHPCDPTR1234HA执行前A4H+12D8H12D8HA执行后3FHROM93H3.2.6相对寻址•访问程序存储器,出现在相对转移指令中。•相对寻址是将程序计数器PC中的当前值与指令第二字节所给出的偏移量相加,其和为跳转指令的转移地址。•偏移量范围为-128一+127。•例如SJMP20H;机器码为80H20H。ROM0010000010000000PC2100H2101H2102H2122HPC+1PC+1PCALU2122H注意:(1)当前PC值是指相对转移指令的存储地址加上该指令的字节数。例如:JZrel是一条累加器A为零就转移的双字节指令。若该指令的存储地址为2050H,则执行该指令时的当前PC值即为2052H。即当前PC值是对相对转移指令取指结束时的值。(2)偏移量rel是有符号的单字节数。以补码表示,其值的范围是-128~+127(00H~FFH),负数表示从当前地址向前转移,正数表示从当前地址向后转移。所以,相对转移指令满足条件后,转移的地址(目的地址)为:目的地址=当前PC值+rel=指令存储地址+指令字节数+rel3.2.7位寻址位寻址是在位操作指令中直接给出位操作数的地址,可以对片内RAM中的128位和特殊功能寄存器SFR中的93位进行寻址。例如指令MOVC,24H.0;机器码为A2H20H,相当于MOVC,20H。
本文标题:单片机寻址方式
链接地址:https://www.777doc.com/doc-5469292 .html