1、3.1 指令格式及常用符号指令格式及常用符号本章分为七节,主要介绍:本章分为七节,主要介绍:3.2 80C51的寻址方式的寻址方式 3.3 数据传送类指令(数据传送类指令(29条条)3.4 算术运算类指令(算术运算类指令(24条)条)3.5 逻辑运算与循环类指令(逻辑运算与循环类指令(24条)条)3.6 控制转移类指令(控制转移类指令(17条)条)3.7 位操作类指令(位操作类指令(17条)条)3.1 指令格式及常用符号指令格式及常用符号3.1.1 3.1.1 机器指令的机器指令的编码格式格式一、一、单字字节指令指令1 1、8 8位位编码仅为操作操作码:如:如:INC A。该指令的指令的编码为
2、:0000 0100B,其十六其十六进制表示制表示为04H,累加器,累加器A隐含在操作含在操作码中。指令的功能是累加器中。指令的功能是累加器A的内容加的内容加1。注意:在指令中用注意:在指令中用“A”表示累加器,而用表示累加器,而用“ACC”表示累加器表示累加器对应的地址(的地址(E0H)。)。高高5位位为为操操作作码码,低低3位位为为存存放放操操作作数数的的寄寄存存器器编码。如:编码。如:MOV A,R0 编编码码为为1110 1000B,其其十十六六进进制制表表示示为为E8H(低低3位位000为为寄寄存存器器R0的的编编码码)。功功能能是是将将当当前前工作寄存器工作寄存器R0中的数据传送到
3、累加器中的数据传送到累加器A中。中。28位编码含有操作码和寄存器编码位编码含有操作码和寄存器编码二、双字二、双字节指令指令 第一字第一字节表示操作表示操作码,第二个字第二个字节表示参表示参与操作的数据或数据存放的地址。与操作的数据或数据存放的地址。如:如:MOV A,#50H 编码为0111 0100B,0101 0000B。其十。其十六六进制表示制表示为74H,50H。功能功能是将立即数是将立即数“50H”传送到累加器送到累加器A中。中。三、三字三、三字节指令指令 指令的第一字指令的第一字节表示表示该指令的操作指令的操作码,后后两个字两个字节表示参与操作的数据或数据存放的表示参与操作的数据或
4、数据存放的地址。如:地址。如:MOV 20HMOV 20H,#50H#50H 编码为0111 0101B0111 0101B,0010 0000B0010 0000B,0101 0101 0000B0000B。其十六。其十六进制表示制表示为75H75H,20H20H,50H50H。功能功能是将立即数是将立即数“50H50H”传送到内部送到内部RAM RAM 的的20H20H单元中元中。3.1.2 3.1.2 符号指令的格式符号指令的格式一般格式为:操作助记符操作助记符 目的操作数目的操作数,源操作数,源操作数;注释;注释 多多数数指指令令为为两两操操作作数数指指令令;当当指指令令操操作作数数隐
5、隐含含在在操操作作助助记记符符中中时时,在在形形式式上上这这种种指指令令无无操操作作数数;另另有有一一些些指指令令为为单单操操作作数数指指令令或或三三操操作作数数指指令令。指指令令的的一一般般格格式式中中使使用用了了可可选选择择符符号号“”,包包含含的的内内容因指令的不同可以有或无。容因指令的不同可以有或无。在在两两个个操操作作数数的的指指令令中中,通通常常目目的的操操作作数数写写在在左边,源操作数写在右边左边,源操作数写在右边。如:如:ANL A,40H 功能功能是将立即数是将立即数“40H”同累加器同累加器A中的数中的数进行进行“与与”操作,结果送回累加器。操作,结果送回累加器。ANL为为
6、“与与”操作的助记符,立即数操作的助记符,立即数“40H”为源操作数,累加器为源操作数,累加器A为目的操作数。为目的操作数。注:在指令中,多数情况下累加器用注:在指令中,多数情况下累加器用“A”表示,仅在直接寻址方式中,用表示,仅在直接寻址方式中,用“ACC”表示表示累加器在累加器在SFR区的具体地址区的具体地址E0H。试比较,指令试比较,指令MOV A,30H的机器码为的机器码为74H、30H;而指令;而指令MOV ACC,30H的机的机器码为器码为75H、E0H、30H。3.1.3 3.1.3 符号指令及其注符号指令及其注释中常用的符号中常用的符号Rn(n=07)-当前选中的工作寄存器组中
7、的当前选中的工作寄存器组中的寄存器寄存器R0R7之一;之一;Ri(i=0,1)-当前选中的工作寄存器组中的当前选中的工作寄存器组中的寄存器寄存器R0或或R1;-间址寄存器前缀;间址寄存器前缀;#data-8位立即数;位立即数;#data16-16位立即数;位立即数;direct-片内低片内低128个个RAM单元地址及单元地址及SFR地址(可用符号名称表示);地址(可用符号名称表示);addr11-11位目的地址;位目的地址;addr16-16位目的地址;位目的地址;rel-补码形式表示的补码形式表示的8位地址偏移位地址偏移量,值在量,值在128127范围内;范围内;bit-片内片内RAM位地址
8、、位地址、SFR的位地的位地址(可用符号名称表示);址(可用符号名称表示);/-位操作数的取反操作前缀;位操作数的取反操作前缀;()-表示表示 地址单元或寄存器中的内地址单元或寄存器中的内容;容;-将箭头右边的内容送入箭头左将箭头右边的内容送入箭头左边的单元中。边的单元中。3.2 80C51的的寻址方式址方式是寻找操作数或指令的地址的方式是寻找操作数或指令的地址的方式。80C51的的寻址方式有七种寻址方式有七种。即:。即:寄存器寻寄存器寻址、直接寻址、寄存器间接寻址、立即寻址、直接寻址、寄存器间接寻址、立即寻址、址、基址寄存器加变址寄存器变址寻址、基址寄存器加变址寄存器变址寻址、相对寻址和位寻
9、址。相对寻址和位寻址。若不特别声明,我们后面提到的寻址方式若不特别声明,我们后面提到的寻址方式均指均指源操作数源操作数的寻址方式。的寻址方式。操作数存放在寄存器中,操作数存放在寄存器中,指令中直接给出该寄存器名称的指令中直接给出该寄存器名称的寻址方式。寻址方式。可以获得较高的传送和运算速度。可以获得较高的传送和运算速度。3.2.1 3.2.1 寄存器寄存器寻址址如:MOV A,R0 寄存器可以是:寄存器可以是:R0R7;A;B(以(以AB寄存器对形式出寄存器对形式出现);现);DPTR。指令操作码之后的字节存放的是操作数的地址,指令操作码之后的字节存放的是操作数的地址,操作数本身存放在该地址指
10、示的存储单元中操作数本身存放在该地址指示的存储单元中的寻的寻址方式称为直接寻址。址方式称为直接寻址。3.2.2 3.2.2 直接直接寻址址如:MOV A,50H 直接寻址中的直接寻址中的SFR经常采用符号形式表示。经常采用符号形式表示。寻址空间为寻址空间为:片内:片内RAM低低128字节;字节;SFR。寄存器中的内容为地址,从该地址去取操寄存器中的内容为地址,从该地址去取操作数作数的寻址方式称为寄存器间接寻址的寻址方式称为寄存器间接寻址。3.2.3 3.2.3 寄存器寄存器间接接寻址址 寻址的存储空间为片内寻址的存储空间为片内RAM或片外或片外RAM。片内片内RAM的数据传送采用的数据传送采用
11、“MOV”类指令,间接寻址寄存类指令,间接寻址寄存器采用寄存器器采用寄存器R0或或R1(堆栈操作时采用(堆栈操作时采用SP););片外片外RAM的数据传送采用的数据传送采用“MOVX”类指令,这时间接寻类指令,这时间接寻址寄存器有两种选择,一是采用址寄存器有两种选择,一是采用R0和和R1作间址寄存器,作间址寄存器,这时这时R0或或R1提供低提供低8位地址(外部位地址(外部RAM多于多于256字节采用字节采用页面方式访问时,可由页面方式访问时,可由P2口未使用的口未使用的I/O引脚提供高位地引脚提供高位地址);二是采用址);二是采用DPTR作为间址寄存器。作为间址寄存器。寄存器间接寻址对应的空间
12、为:寄存器间接寻址对应的空间为:片内片内RAM(采用(采用R0,R1或或SP););片外片外RAM(采用(采用R0,R1或或DPTR)。)。如:MOV A,R0 指令编码中直接给出操作数指令编码中直接给出操作数的寻址方式称为立即寻址。的寻址方式称为立即寻址。在这种寻址方式中,紧跟在操作码之后的操作数称为立即在这种寻址方式中,紧跟在操作码之后的操作数称为立即数。立即数可以为一个字节,也可以是两个字节,并要用数。立即数可以为一个字节,也可以是两个字节,并要用符号符号“”来标识。由于立即数是一个常数,所以只能作来标识。由于立即数是一个常数,所以只能作为源操作数。为源操作数。立即寻址所对应的寻址空间为
13、:立即寻址所对应的寻址空间为:ROM 3.2.4 3.2.4 立即立即寻址址如:MOV A,50H 以一个基地址加上一个偏移量地址形成操作数地址以一个基地址加上一个偏移量地址形成操作数地址的寻的寻址方式称为变址寻址。在这种寻址方式中,以数据指针址方式称为变址寻址。在这种寻址方式中,以数据指针DPTR或程序计数器或程序计数器PC作为基址寄存器,累加器作为基址寄存器,累加器A作为偏作为偏移量寄存器,基址寄存器的内容与偏移量寄存器的内容之移量寄存器,基址寄存器的内容与偏移量寄存器的内容之和作为操作数地址。和作为操作数地址。变址寻址所对应的寻址空间为:变址寻址所对应的寻址空间为:ROM3.2.5 3.
14、2.5 变址址寻址址如:MOVC A,A+DPTR 相对寻址是以程序计数器相对寻址是以程序计数器PC的当前值的当前值(指读出该(指读出该2字节字节或或3字节的跳转指令后,字节的跳转指令后,PC指向的下条指令的地址)指向的下条指令的地址)为基为基准,加上指令中给出的相对偏移量准,加上指令中给出的相对偏移量 rel 形成目标地址形成目标地址的寻的寻址方式址方式。rel 是一个带符号的是一个带符号的8位二进制数,取值范围是位二进制数,取值范围是128127,以补码形式置于操作码之后存放。,以补码形式置于操作码之后存放。3.2.6 3.2.6 相相对寻址址如:JC rel;rel75H 对位地址中的内
15、容进行操作对位地址中的内容进行操作的寻址方式称为位的寻址方式称为位寻址。采用位寻址指令的操作数是寻址。采用位寻址指令的操作数是8位二进制数中位二进制数中的某一位。指令中给出的是位地址。位寻址方式的某一位。指令中给出的是位地址。位寻址方式实质属于位的直接寻址。实质属于位的直接寻址。寻址空间为:片内寻址空间为:片内RAM的的20H2FH单元中的单元中的128可寻址位;可寻址位;SFR的可寻址位。的可寻址位。3.2.7 3.2.7 位位寻址址 习惯上,特殊功能寄存器的寻址位常用符号位习惯上,特殊功能寄存器的寻址位常用符号位地址表示。地址表示。如:如:CLR ACC.0 MOV 30H,C3.3 数据
16、数据传送送类指令(指令(29条)条)传送类指令占有较大的比重。数据传送是传送类指令占有较大的比重。数据传送是进行数据处理的最基本的操作,这类指令进行数据处理的最基本的操作,这类指令一般一般不影响标志寄存器不影响标志寄存器PSW的状态的状态。传送类指令可以分成两大类传送类指令可以分成两大类。一是采用。一是采用MOV操作符,称为一般传送指令;二是采用操作符,称为一般传送指令;二是采用非非MOV操作符,称为特殊传送指令,如:操作符,称为特殊传送指令,如:MOVC、MOVX、PUSH、POP、XCH、XCHD及及SWAP。3.3.1 3.3.1 一般一般传送指令送指令一、一、16位传送位传送 这条指令的功能是将源操作数这条指令的功能是将源操作数data16(通(通常是地址常数)送入目的操作数常是地址常数)送入目的操作数DPTR中。源中。源操作数的寻址方式为立即寻址。操作数的寻址方式为立即寻址。例如:例如:执行指令执行指令 MOV DPTR,#1234H 后后 (DPH)=12H,(,(DPL)=34H。二、二、8位传送位传送 在在5种源字节中,只有种源字节中,只有data不能用作目的字节。不能
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1