80c51汇编语言指令格式
- 格式:docx
- 大小:104.03 KB
- 文档页数:4
80C51指令表一、数据传送指令MOV A,Rn ; (Rn)→AMOV A,direct ; (direct)→AMOV A,@Ri ; ((Ri))→AMOV A,#data ; #data→AMOV Rn,A ; (A)→ RnMOV Rn,direct ; (direct)→ RnMOV Rn,#data ; #data→ RnMOV direct,A ; (A)→directMOV direct,Rn ; (Rn)→directMOV direct1,direct2 ; (direct1)→direct2MOV direct,@Ri ; ((Ri))→directMOV direct,#data ; #data→directMOV @Ri,A ; ((Ri))→AMOV @Ri,direct ; (direct)→(Ri)MOV @Ri,#data ; #data→ ((Ri))MOV DPTR,#data16 ; dataH→ DPH,data → LDPL MOVX A,@DPTR ; ((DPTR))→AMOVX @DPTR,A ; (A)→(DPTR)MOVX A,@Ri ; ((Ri))→AMOVX @Ri,A ;(A) →(Ri)MOVC A,@A+PC ; (PC)+1→PC,((A)+(PC))→ A MOVC A,@A+DPTR ; (A)+(DPTR)→APUSH direct ; (SP)+1 → SP,(direct) → (SP) POP direct ;((SP)) → (direct), (SP)-1 → SP XCH A,Rn ; (A) ←→(Rn)XCH A,direct ; (A) ←→(direct)XCH A,@Ri ; (A) ←→((Ri))XCHD A,@Ri ; (A)0~3 ←→((Ri))0~3SWAP A ; (A)0~3 ←→(A)4~7二、算术运算指令ADD A,Rn ; (A) + (Rn)→ AADD A,direct ; (A) + (direct)→ AADD A,@Ri ; (A) + ((Ri))→ AADD A,#data ; (A) + #data→ AADDC A,Rn ; (A) + (Rn) + cy→ AADDC A,direct ; (A) + (direct) + cy→ AADDC A,@Ri ; (A) + ((Ri)) + cy→ AADDC A,#data ; (A) + # data + cy→ ASUBB A,Rn ; (A) - ( Rn) - cy→ ASUBB A,direct ; (A) - (direct) - cy→ ASUBB A,@Ri ; (A) - ((Ri)) - cy→ ASUBB A,#data ; (A) - # data - cy→ AINC A ; (A) + 1 → AINC Rn ; (Rn) + 1 →RnINC direct ; (direct) + 1 →directINC @Ri ; ((Ri)) + 1 → (Ri)INC DPTR ; (DPTR) + 1 → DPTRDEC A ; (A) - 1 → ADEC Rn ; (Rn) - 1 →RnDEC direct ; (direct) - 1 →directDEC @Ri ; ((Ri)) - 1 → (Ri)MUL AB ; (A)·(B) → ABDIV AB ; (A) / (B) 商→ A , 余数→ B DA A ; 对A进行十进制调整三、逻辑操作指令ANL A,Rn ; (A)∧(Rn) → AANL A,direct ; (A)∧(direct) →AANL A,@Ri ; (A)∧((Ri)) → AANL A,#data ; (A)∧#data → AANL direct,A ; (direct)∧(A) →directANL direct,#data ; (direct)∧#data →directORL A,Rn ; (A)∨(Rn) → AORL A,direct ; (A)∨(direct) → AORL A,@Ri ; (A)∨((Ri)) → AORL A,#data ; (A)∨#data → AORL direct,A ; (direct)∨(A) →directORL direct,#data ; (direct)∨#data →directXRL A,Rn ; (A)⊕(Rn) → AXRL A,direct ; (A)⊕(direct) → AXRL A,@Ri ; (A)⊕((Ri)) → AXRL A,#data ; (A)⊕#data → AXRL direct,A ; (direct)⊕(A) →directXRL direct,#data ; (direct)⊕#data →directCLR A ; 0 → ACPL A ; (A) → ARL A ; (A)循环左移1位RLC A ; (A)带进位循环左移1位RR A ; (A)循环右移1位RRC A ; (A)带进位循环右移1位SWAP A ;(A)半字节交换四、位操作指令CLR C ; 0 → cyCLR bit ; 0 → bitSETB C ; 1 → cySETB bit ; 1 → bitCPL C ; (cy) → cyCPL bit ; (bit) → bitANL C,bit ; (cy) ∧(bit) → cyANL C,/bit ; (cy) ∧(bit) → cyORL C,bit ; (cy) ∨(bit) → cyORL C,/bit ; (cy) ∨(bit) → cyMOV C,bit ; (bit) → cyMOV bit,C ; (cy) → bit五、控制转移指令ACALL addr11 ; (PC)+2 → PC , (SP)+1 → SP;(PCL) → (SP),(SP)+1 → SP;(PCH) → (SP),addr11 → PC10~0 LCALL addr16 ; (PC)+3 → PC , (SP)+1 → SP;(PCL) → (SP),(SP)+1 → SP;(PCH) → (SP),addr16 → PCRET ; (SP) → PCH,(SP) -1 → SP;(SP) → PCL,(SP) -1 → SPRETI ; (SP) → PCH,(SP) -1 → SP;(SP) → PCL,(SP) -1 → SPAJMP add11 ; (PC)+2 → PC,;addr11 → CP10~0 LJMP add16 ; addr16 → PCSJMP rel ; (PC)+2 → PC,(PC)+ rel → PC JMP @A+DPTR ; ((A)+(DPTR))→ PCJZ rel ; (A)=0 : (PC)+2 +rel =PC; (A)≠0 : (PC)+2 =PCJNZ rel ; (A)≠0 : (PC)+2 +rel =PC; (A)=0 : (PC)+2 =PCJC rel ; (C)=1 : (PC)+2+rel =PC; (C)=0 : (PC)+2 =PCJNC rel ; (C)=0 : (PC)+2+rel =PC; (C)=1 : (PC)+2 =PCJB bit,rel ; (bit)=1 : 则(PC)+3+rel =PC; (bit)=0 : 则(PC)+3 =PCJNB bit,rel ; (bit)=0 : 则(PC)+3+rel =PC; (bit)=1 : 则(PC)+3 =PCJBC bit,rel ; (bit)=1 : 则(PC)+3+rel =PC, 0 → bit; (bit)=0 : 则(PC)+3 =PCCJNE A,direct,rel ; (A) = (direct), 则(PC)+3 → PC; (A) > (direct), 则(PC)+3+rel → PC,0 → CY; (A) < (direct), 则(PC)+3+rel → PC,1 → CY CJNE A,#data,rel ; (A) = #data, 则(PC)+3 → PC; (A) > #data, 则(PC)+3+rel → PC,0 → CY; (A) < #data, 则(PC)+3+rel → PC,1 → CY CJNE Rn,#data,rel ; (Rn) = #ata , 则(PC)+3 → PC; (Rn) > #ata, 则(PC)+3+rel → PC,0 → CY; (Rn) < #ata, 则(PC)+3+rel → PC,1 → CY CJNE @Ri,#data,rel ; ((Rn)) = #data, 则(PC)+3 → PC; ((Rn)) > #ata, 则(PC)+3+rel → PC,0 → CY; ((Rn)) < #ata, 则(PC)+3+rel → PC,1 → CY DJNZ Rn,rel ; (Rn)-1 → Rn,(Rn)=0,则(PC)+2 → PC;(Rn)≠0,则(PC)+2+rel → PCDJNZ direct,rel ; (direct)-1 → (direct),;(direct) ≠0,则(PC)+3+rel → PC;(direct)=0,则(PC)+3 → PCNOP ; 空操作。
51系列单片机指令系统MCS-51系列单片机指令系统是用户编制单片机应用程序的主要工具。
5.1.1 指令格式80C51系列单片机指令有两种标识方式:机器语言方式和汇编语言方式。
机器语言方式由二进制代码组成(通常用十六进制表示),被称为机器指令。
1.汇编语言指令格式汇编语言指令的一般格式如下:[标号:] 操作码 [第一操作数][,第二操作数][,第三操作数] [;注释]说明:1)带方括号的部分为可选项2)标号是用符号表示的一个地址常量。
它表示该指令在程序存储器中的起始地址。
标号的命名规则是:必须以字母开头,长度不超过6个字符,并以“:”结束。
3)操作码表示指令的操作功能。
每条指令都有操作码。
4)操作数表示的是参与操作的数据来源和操作之后结果数据的存放位置,可以是常数、地址或寄存器符号。
指令的操作数可能有1个、2个或3个,有些指令可能没有操作数。
操作数与操作数之间用“,”分隔,操作码与操作数之间用空格分隔。
具有保存操作结果的操作数称为目的操作数,只提供数据的称为源操作数。
5)注释字段是编程人员对该指令或该段程序的功能说明,是为了方便阅读程序的一种标注。
注释以“;”开始,当汇编语言源程序被汇编成机器语言程序时,该项被舍弃。
2.机器语言指令格式机器语言指令是一种二进制代码,它包括两个部分:操作码和操作数。
51系列单片机的指令系统中有单字节、双字节和三字节共3种机器指令,其指令格式如下:1)单字节指令在单字节指令中,操作码和操作数共占一个字节,其中操作数通常为以隐含形式指定的常用寄存器。
其指令格式如下:操作码nn其中,方框前面的nn表示这条机器指令在程序中所在的地址位置,后边的方框中是指令的内容,下同。
例如INC DPTR指令,其功能为DPTR←(DPTR)+1。
指令机器码为:操作码1010001151系列单片机中,单字节的机器指令共有49条。
2)双字节指令双字节指令的第一个字节为操作码,第二个字节为操作数或操作数的地址。
3.1 80C51指令系统概述1、计算机常用的编程语言程序是完成某项任务的计算机指令的有序集合。
(1)机器语言:计算机中直接用二进制代码表示的编码(机器数一个数在计算机中的表示形式、原码、反码、补码)称为机器码。
(2)汇编语言:用简单明了的助记符来表示指令的操作码。
面向机器。
将这种符号代码翻译成计算机可识别的机器代码的过程叫汇编。
一种具有翻译功能的程序叫做汇编程序。
(3)高级语言:是更符号化的语言,需要经过复杂的编译程序或解释程序的翻译才能转化为机器代码,因此它比前两种语言占用更多的内存和更长的执行时间。
汇编语言与机器语言相比,好理解、使用方便;与高级语言相比,占用存储空间少、执行速度快、有直接针对输入/输出端口的操作指令。
目前单片机普遍采用汇编语言编程。
2、汇编语言指令格式80C51单片机的汇编指令由操作码和操作数两大部分组成,其指令格式为:【标号:】操作码【操作数1,】【操作数2,】【操作数3,】【;注释】(1)标号:是该指令的符号地址。
当一条指令含有标号时,便于其它指令的引用,以便控制程序的转移或寻址。
必须由大小写英文字母打头,1~8个字母、数字或下划线组成的字符串。
标号不能与寄存器、端口及指令助记符重名。
冒号左边不能有空格。
(2)操作码:即指令助记符,是表示指令功能的英文缩写。
操作码与操作数之间用若干个空格隔开。
(3)操作数:即参与操作的对象。
可以是常数、寄存器、地址和表达式等。
逗号的左边不能有空格。
(4)注释:对指令功能的解释,可有可无。
3.2 指令的寻址方式1、寻址的概念寻找参与操作的数据所在存储器单元的地址2、寻址方式1)立即寻址方式:操作数直接出现在指令中,这种形式的操作数叫做立即数。
“MOV A,#40H”(#表示40H就是一个被传递的东西本身,而不是传递者)2)直接寻址方式:在指令中直接给出参与操作的数据所在内部RAM单元的地址。
这种方式适用于内部RAM的低128字节(00H~7FH)和特殊功能寄存器。
80C51系列单片机指令表80C51系列单片机指令以A开头的指令有18条,分别为:ACALL addr11ADD A,RnADD A,directADD A,@RiADD A,#dataADDC A,RnADDC A,directADDC A,@RiADDC A,#dataAJMP addr11ANL A,RnANL A,directANL A,@RiANL A,#dataANL direct,AANL direct,#dataANL C,bitANL C,/bit1. ACALL addr11指令名称:绝对调用指令指令代码:A10 A9 A8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0指令功能:构造目的地址,进行子程序调用。
其方法是以指令提供的11位地址(al0~a0),取代PC的低11位,PC的高5位不变。
操作内容:PC←(PC)+2SP←(SP)+1(SP)←(PC)7~0SP←(SP)+1(SP)←(PC)15~8PC10~0←addrl0~0字节数:2机器周期:2使用说明:由于指令只给出子程序入口地址的低11位,因此调用范围是2KB。
2. ADD A,Rn指令名称:寄存器加法指令指令代码:28H~2FH指令功能:累加器内容与寄存器内容相加操作内容:A←(A)+(Rn),n=0~7字节数:1机器周期:1影响标志位:C,AC,OV3. ADD A,direct指令名称:直接寻址加法指令指令代码:25H指令功能:累加器内容与内部RAM单元或专用寄存器内容相加操作内容:A←(A)+(direct)字节数:2机器周期:1影响标志位:C,AC,OV4. ADD A,@Ri指令名称:间接寻址加法指令指令代码:26H~27H指令功能:累加器内容与内部RAM低128单元内容相加操作内容:A←(A)+((Ri)),i=0,1字节数:1机器周期:1影响标志位:C,AC,OV5. ADD A,#data指令名称:立即数加法指令指令代码:24H指令功能:累加器内容与立即数相加操作内容:A←(A)+data字节数:2机器周期:1影响标志位:C,AC,OV6. ADDC A,Rn指令名称:寄存器带进位加法指令指令代码:38H~3FH指令功能:累加器内容、寄存器内容和进位位相加操作内容:A←(A)+(Rn)+(C),n=0~7字节数:1机器周期:1影响标志位:C,AC,OV7. ADDC A,direct指令名称:直接寻址带进位加法指令指令代码:35H指令功能:累加器内容、内部RAM低128单元或专用寄存器内容与进位位加操作内容:A←(A)+(direct)+(C)字节数:2机器周期:1影响标志位:C,AC,OV8. ADDC A,@Ri指令名称:间接寻址带进位加法指令指令代码:36H~37H指令功能:累加器内容、内部RAM低128单元内容及进位位相加操作内容:A←(A)+((Ri))+(C),i=0,1字节数:1机器周期:1影响标志位:C,AC,OV9. ADDC A,#data指令名称:立即数带进位加法指令指令代码:34H指令功能:累加器内容、立即数及进位位相加操作内容:A←(A)+data+(C)字节数:2机器周期:1影响标志位:C,AC,OV10. AJMP addr11指令名称:绝对转移指令指令代码:A10 A9 A8 1 0 0 0 1 A7 A6 A5 A4 A3 A2 A1 A0指令功能:构造目的地址,实现程序转移.其方法是以指令提供的11位地址,取代PC的低11位,而PC的高5位保持不变.操作内容:PC←(PC)+2PCl0~0←addrll字节数:2机器周期:2使用说明:由于addrll的最小值是000H,最大值是7FFH,因此地址转移范围是2KB.11. ANL A,Rn指令名称:寄存器逻辑与指令指令代码:58H~5FH指令功能:累加器内容逻辑与寄存器内容操作内容:A←(A)∧(Rn),n=0~7字节数:1机器周期:112. ANL A,direct指令名称:直接寻址逻辑与指令指令代码:55H指令功能:累加器内容逻辑与内部RAM低128单元或专用寄存器内容操作内容:A←(A)∧(diret)字节数:2机器周期:113. ANL A,@Ri指令名称:间接寻址逻辑与指令指令代码:56H~57H指令功能:累加器内容逻辑与内部RAM低128单元内容操作内容:A←(A)∧((Ri))i=0,1字节数:1机器周期:114. ANL A,#data指令名称:立即数逻辑与指令指令代码:54H指令功能:累加器内容逻辑与立即数操作内容:A←(A)∧data字节数:2机器周期:115. ANL direct,A指令名称:累加器逻辑与指令指令代码:52H指令功能:内部RAM低128单元或专用寄存器内容逻辑与累加器内容操作内容:direct←(A)∧(direct)字节数:2机器周期:116. ANL direct,#data指令名称:逻辑与指令指令代码:53H指令功能:内部RAM低128单元或专用寄存器内容逻辑与立即数操作内容:direct←(direct)∧data字节数:3机器周期:217. ANL C,bit指令名称:位逻辑与指令指令代码:82H指令功能:进位标志逻辑与直接寻址位操作内容:C←(C)∧(bit)字节数:2机器周期:218. ANL C,/bit指令名称:位逻辑与指令指令代码:B0H指令功能:进位标志逻辑与直接寻址位的反操作内容:C←(C)∧(bit)字节数:2机器周期:280C51系列单片机指令以C开头的指令有10条,分别为: CJNE A,dircet,relCJNE A,#data,relCJNE Rn,#data,relCJNE @Ri,#data,relCLR ACLR CCLR bitCPL ACPL CCPL bit1. CJNE A,dircet,rel指令名称:数值比较转移指令指令代码:B5H指令功能:累加器内容与内部RAM低128字节或专用寄存器内容比较,不等则转移。
80c51汇编语言指令格式
80C51汇编语言的指令格式通常如下:
1. 简单指令格式:单字节指令。
指令码占据一个字节,没有操作数。
```
opcode
```
2. 直接寻址指令格式:指令码后面跟一个操作数,操作数直接给出地址。
```
opcode operand
```
3. 立即数指令格式:指令码后面跟一个立即数操作数,立即数操作数直接给出数值。
```
opcode immediate
```
4. 寄存器寻址指令格式:指令码后面跟一个操作数,操作数是一个寄存器标识符。
```
opcode register
```
5. 直接偏移寻址指令格式:指令码后面跟一个操作数,操作数
给出地址的偏移量。
```
opcode offset
```
6. 间接寻址指令格式:指令码后面跟一个寄存器标识符,该寄存器存储了操作数的地址。
```
opcode @register
```
7. 隐含寻址指令格式:指令中没有操作数,操作数隐含在指令本身或寄存器中。
```
opcode
```
注意:具体的指令格式可能有所不同,以上只是一般情况下的指令格式。
实际使用时应参考具体的汇编语言文档或教材。
80C51汇编语言指令格式
================
本篇文档将详细介绍80C51汇编语言的指令格式,包括操作码、操作数、注释以及具体的汇编指令。
最后,将以将十六进制数10h存入累加器A为例,进行实际应用说明。
操作码
---
操作码是汇编指令的核心部分,它表示了指令进行的操作。
具体的操作码需要根据具体的指令来确定。
### 1.1 操作码的含义
操作码指示了指令要执行的操作。
例如,某些操作码可能表示将一个值加载到寄存器中,或者对两个值进行加法运算等。
### 1.2 操作码的格式
操作码通常是一个或者两个字节长,有时也会更长。
每个字节都有特定的含义,根据不同的指令,每个字节可能代表不同的操作。
操作数
---
操作数是汇编指令中指定要执行操作的数据。
它们可以是常量、寄存器、内存地址等。
### 2.1 操作数的定义
操作数可以是常量、寄存器或内存地址等。
寄存器是CPU内部的存储单元,用于存储数据或计算结果。
内存地址则是用于访问存储在内存中的数据。
### 2.2 操作数的格式
操作数的格式会因具体的指令而异。
例如,某些指令可能要求一个立即数作为操作数,而其他指令可能要求一个寄存器和一个内存地址作为操作数。
注释
---
注释是用于解释和说明汇编指令的文本。
它们不会影响程序的执行,但可以帮助理解和维护代码。
### 3.1 注释的作用
注释的主要作用是解释代码的功能、行为和意图,以帮助其他开发者理解代码。
好的注释还可以提供代码的维护性和可读性。
### 3.2 注释的格式
在80C51汇编语言中,注释通常以分号(`;`)开头。
在分号后面的文本都被视为注释。
例如:`; 这是一个注释`。
80C51汇编指令
---------
80C51是一款经典的8位单片机,其汇编指令集包括了多种基本的指令,如数据传输、算术运算、逻辑运算等。
### 4.1 指令的分类
80C51的指令集可以根据功能分为以下几类:数据传输指令、算
术运算指令、逻辑运算指令、控制指令等。
### 4.2 指令的格式
80C51的指令格式通常由操作码和操作数组成。
例如:`MOV A, #10h`是一条将十六进制数10h存入累加器A的指令。
其中,`MOV`是操作码,表示要进行移动操作;`A, #10h`是操作数,表示要将10h 这个值存入累加器A中。
示例:将十六进制数10h存入累加器A中
下面是一个简单的示例,展示了如何使用80C51汇编语言将十六进制数10h存入累加器A中:
```assembly
MOV A, #10h ; 将十六进制数10h存入累加器A中
```
这条指令中,`MOV`是操作码,表示要进行移动操作;`A, #10h`是操作数,表示要将10h这个值存入累加器A中。
这里的`;`表示这是一条注释,用于解释这条指令的作用。