MCS-51汇编语言指令字节数
- 格式:doc
- 大小:22.50 KB
- 文档页数:1
计算机通过执行程序完成人们指定的任务,程序由一条一条指令构成,能为CPU识别并执行的指令的集合就是该CPU的指令系统。
MCS-51单片机汇编语言指令格式:操作符目的操作数,源操作数指令中的常用符号Rn: n=(0~7),表示当前工作寄存器R0~R7中的一个Ri: i=(0、1),代表R0和R1寄存器中的一个,用作间接寻址寄存器dir : 8 位直接字节地址(片内RAM 和SFR )#data: 8位立即数,即8位常数。
可以为2进制(B)、10进制、16进制(H)、字符(‘ ’)#data16: 表示16位立即数,即16位常数,取值范围为#0000H~#0FFFFHaddr16 : 表示16位地址addr11 : 表示11位地址rel : 相对偏移量(为一字节补码)用于相对转移指令中bit :位地址,在位地址空间中。
$: 表示当前指令的地址。
寻址方式1、立即寻址指令中直接给出操作数的寻址方式。
在51系列单片机的指令系统中,立即数用一个前面加“#“号的8位数(#data,如#30H)或16位数(#data16,如#2052H)表示。
立即寻址中的数,称为立即数。
例如指令:MOV A,#30H2、直接寻址操作数的地址直接出现在指令中。
寻址对象:①内部数据存贮器:使用它的地址。
②特殊功能寄存器:既可使用它的地址,也可以直接使用寄存器名。
3、寄存器寻址操作数存放在寄存器中。
寻址对象:A,B,DPTR,R0~R7 。
B 仅在乘除法指令中为寄存器寻址,在其他指令中为直接寻址。
A 可以寄存器寻址又可以直接寻址,直接寻址时写作ACC例如:MOV A,R0 ;R0→A,A、R0均为寄存器寻址,机器码E8MUL AB ;A*B→BA,A、B为寄存器寻址,机器码A4MOV B,R0 ;R0→B,R0为寄存器寻址,B为直接寻址机器码88F0,其中F0为B的字节地址(见表1-2)PUSH ACC ;A的内容压入堆栈机器码C0E04、寄存器间址操作数存放在以寄存器内容为地址的单元中。
附录3:MCS—51系列单片机的指令介绍MCS—51汇编语言共有111条指令,其中49条是单字节指令,45条是双字节指令。
在111条指令中,单周期指令64条,双周期指令45条,占用4个周期的指令2条。
关于MCS—51汇编语言指令,有大量书籍详细介绍,在此,以表格形式列出,注释简短而精练,便于读者查阅。
一些特殊符号的意义:在介绍指令系统前,我们先了解一些特殊符号的意义,这对今后程序的编写都是相当有用的。
●Rd:当前选中的寄存器区的8个工作寄存器R0~R7(d=0~7)。
●Ri:当前选中的寄存器区中可作为地址寄存器的两个寄存器R0和R1(i=0,1)。
●@:间接寄存器寻址或基址寄存器的前缀。
●M:内部数据存储单元的8位地址。
包含0~127(255)内部存储单元地址和特殊功能寄存地址。
●#n:指令中的8位常数。
●#n(16):指令中的16位常数。
●a(16):用于LCALL和LJMP指令中的16目的地地址,目的地址的空间为64kB程序存储器地址。
●a(11):用于ACALL和AJMP指令中的11目的地地址,目的地址必须放在与下条指令第一个字节同一个2kB程序存储器空间之中。
●r:8位带符号的偏移字节,用于所有的条件转移和SJMP等指令中,偏移字节对于下条指令的第一个字节开始的-128~+127范围内。
●b:内部RAM和特殊功能寄存器的直接寻址位。
1.数据传送指令数据传送指令共28条,可分为8位传送指令、16位传送指令和字节交换指令3类。
数据传送指令要点见表3。
表3 数据传送指令2.算术运算指令算术运算指令共24条,有加、减、乘、除、十进制调整5种操作,由7种操作助记符来描述,算术运算指令要点见表4。
表4 算术运算指令3.逻辑运算指令逻辑运算指令共25条,有逻辑与、或、异或、清零、取反、环移和半字节交换7种操作,由10种操作码助记符来描述。
逻辑运算指令要点见表5。
表5 逻辑运算指令4.位操作指令位操作指令共12条,有位传送、位变量更改、位变量逻辑与和位变量逻辑或4种操作,由6种操作码助记符来描述。
详细点的51指令介绍MCS-51系列单片机指令表MCS-51系列单片机指令以A开头的指令有18条,分别为:ACALL addr11 ADD A,Rn ADD A,direct ADD A,@Ri ADD A,#data ADDC A,Rn ADDC A,direct ADDC A,@Ri ADDC A,#data AJMP addr11 ANL A,Rn ANL A,direct ANL A,@Ri ANL A,#data ANL direct,A ANL direct,#data ANL C,bit ANL C,/bit 1、ACALL addr11 指令名称:绝对调用指令指令代码:A10 A9 A9 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 指令功能:构造目的地址,进行子程序调用。
其方法是以指令提供的11位地址(al0~a0),取代PC 的低11位,PC的高5位不变。
操作内容:PC←(PC)+2 SP←(SP)+1 (SP)←(PC)7~0 SP←(SP)+1 (SP)←(PC)15~8 PC10~0←addrl0~0 字节数:2 机器周期:2 使用说明:由于指令只给出子程序入口地址的低11位,因此调用范围是2KB。
2、ADD A,Rn 指令名称:寄存器加法指令指令代码:28H~2FH 指令功能:累加器内容与寄存器内容相加操作内容:A←(A)+(Rn),n=0~7 字节数:1 机器周期;1 影响标志位:C,AC,OV 3、ADD A,direct 指令名称:直接寻址加法指令指令代码:25H 指令功能:累加器内容与内部RAM单元或专用寄存器内容相加操作内容:A←(A)+(direct) 字节数:2 机器周期:1 影响标志位:C,AC,OV 4、ADD A,@Ri ’指令名称:间接寻址加法指令指令代码:26H~27H 指令功能:累加器内容与内部RAM低128单元内容相加操作内容:A←(A)+((Ri)),i=0,1 字节数: 1 机器周期:1 影响标志位:C,AC,OV 5、ADD A,#data 指令名称:立即数加法指令指令代码:24H 指令功能:累加器内容与立即数相加操作内容:A←(A)+data 字节数: 2 机器周期:1 影响标志位:C,AC,OV 6、ADDC A,Rn 指令名称:寄存器带进位加法指令指令代码:38H~3FH 指令功能:累加器内容、寄存器内容和进位位相加操作内容:A←(A)+(Rn)+(C),n=0~7 字节数: 1 机器周期:1 影响标志位:C,AC,OV 7、ADDC A,direct 指令名称:直接寻址带进位加法指令指令代码:35H 指令功能:累加器内容、内部RAM低128单元或专用寄存器内容与进位位加操作内容:A←(A)+(direct)+(C) 字节数:2 机器周期:1 影响标志位:C,AC,OV 8、ADDC A,@Ri 指令名称:间接寻址带进位加法指令指令代码:36H~37H 指令功能:累加器内容、内部RAM低128单元内容及进位位相加操作内容:A←(A)+((Ri))+(C),i=0,1 字节数: 1 机器周期:1 影响标志位:C,AC,OV 9、ADDC A,#data 指令名称:立即数带进位加法指令指令代码:34H 指令功能:累加器内容、立即数及进位位相加操作内容:A←(A)+data+(C) 字节数: 2 机器周期:1 影响标志位:C,AC,OV 10、AJMP addr11 指令名称:绝对转移指令指令代码:A10 A9 A8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0 指令功能:构造目的地址,实现程序转移。
汇编语言程序的指令学习要使用单片机,就要学会编写程序。
一台计算机,无论是大型机还是微型机,如果只有硬件,而没有软件(程序),是不能工作的。
单片机也不例外,它必须配合各种各样的软件才能发挥其运算和控制功能。
单片机的程序一般用汇编语言指令来表示。
所谓指令是规定计算机进行某种操作的命令。
一条指令只能完成有限的功能,为使计算机完成一定的或复杂的功能就需要一系列指令。
计算机能够执行的各种指令的集合称为指令系统。
计算机的主要功能也是由指令系统来体现的。
一般来说,一台计算机的指令越丰富,寻址方式越多,且每条指令的执行速度越快,则它的总体功能越强。
5.1 MCS-51单片机的指令系统MCS-51单片机的指令系统使用了7种寻址方式,共有111条指令,如按字节数分类,其中单字节指令49条,双字节指令45条,三字节指令17条;如按运算速度分类,单周期指令占64条,双周期指令占45条,四周期指令占2条。
可见,MCS-51指令系统在占用存储空间方面和运行时间方面效率都比较高。
另外,MCS-51有丰富的位操作指令,这些指令与位操作部件组合在一起,可以把大量的硬件组合逻辑用软件来代替,这样可方便地用于各种逻辑控制。
指令一般由两部分组成,即操作码和操作数。
对于单字节指令有两种情况:一种是操作码、操作数均包含在这一个字节之内;另一种情况是只有操作码无操作数。
对于双字节指令,均为一个字节是操作码,一个字节是操作数;对于三字节指令,一般是一个字节为操作码,二个字节为操作数。
由于计算机只能识别二进制数,所以计算机的指令均由二进制代码组成。
为了阅读和书写方便,常把它写成十六进制形式,通常称这样的指令为机器指令。
现在一般的计算机都有几十甚至几百种指令。
显然,即便用十六进制去书写和记忆也是不容易的。
为了便于记忆和使用,制造厂家对指令系统的每一条指令都给出了助记符。
助记符是根据机器指令不同的功能和操作对象来描述指令的符号。
由于助记符是用英文缩写来描述指令的特征,因此它不但便于记忆,也便于理解和分类。
MCS-51单片机的指令字节数
汇编语言的语句的格式为:
标号段:操作码段第一操作数,第二操作数;注释段(如 START: MOV A,#00H ;把0赋给A)
其中操作码段是必段的,其他的段是根据不同的指令而不同,操作数段可以只有一个操作数,也可以有两个操作数,有时还会有三个操作数的情况。
在51单片机中,有单字节指令、双字节指令和三字节指令。
只要理解了指令占用的这些字节都是用来存放哪些量的,那自然就会判断不同的指令是多少字节指令了。
1、操作码段占用一个字节。
2、8位立即数占用一个字节,16位立即数占用两个字节。
3、8位操作数地址占用一个字节,16位操作数地址占用两个字节。
4、CPU内部的各种寄存器不占用指令字节,如A, B, R0, R1, DPTR等。
现在就可以判断51的指令占用的字节数了:
MOV A, R0 ;这是单字节指令,其中MOV占用一个字节,A和R0是CPU内部寄存器,不占用指令字节。
MOV A, #07H ;这是双字节指令,其中MOV占用一个字节,8位立即数#07H占用一个字节。
MOV DPTR, #0106H ;这是三字节指令, MOV占用一个字节,16位立即数#0106H
占用两个字节。
MOV 07H, #07H ;这是三字节指令,MOV占用一个字节,8位地址07H占用一个字节,8位立即数#07H占用一个字节。