收藏 分享(赏)

关于51单片机程序汇编的指令周期表.doc

上传人:HR专家 文档编号:11254516 上传时间:2020-03-04 格式:DOC 页数:7 大小:24.92KB
下载 相关 举报
关于51单片机程序汇编的指令周期表.doc_第1页
第1页 / 共7页
关于51单片机程序汇编的指令周期表.doc_第2页
第2页 / 共7页
关于51单片机程序汇编的指令周期表.doc_第3页
第3页 / 共7页
关于51单片机程序汇编的指令周期表.doc_第4页
第4页 / 共7页
关于51单片机程序汇编的指令周期表.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、8051 指令周期表类别 指令格式 功能简述 字节数 机器周期MOV A, Rn (Rn)(A) Rn 中的内容送到累加器 A 中,Rn=R0-R7 1 1MOV Rn,A (A)(Rn) 累加器 A 中的内容送到寄存器 Rn 中。 1 1MOV A, Ri (Ri)(A) Ri 内容指向的地址单元中的内容送到累加器 A,Ri=R0 或 R1 1 1MOV Ri, A (A)(Ri) 累加器 A 中的内容送到以 Ri 中的内容为地址的 RAM 单元。 1 1MOV A, #data #data(A) 立即数送到累加器 A 中。 2 1MOV A, data (data)(A) 直接单元地址中的

2、内容送到累加器 A 2 1MOV data, A (A) (data)累加器 A 中的内容送直接单元地址。 2 1MOV Rn,#data #data(Rn)立即数直接送到寄存器 Rn 中。 2 1MOV data, #data #data(data)立即数送直接寻址单元 。 3 2MOV Ri, #data #data(Ri)立即数送到以 Ri 中的内容为地址的 RAM单元。 2 1MOV data, Rn (Rn)(data)寄存器中的内容送直接寻址单元 。 2 2MOV Rn, data (data)(Rn)直接寻址单元中的内容送寄存器 。 2 2MOV data, Ri (Ri)(da

3、ta)内部 RAM 单元送直接寻址单元 。 2 2MOV Ri, data (data)(Ri)直接寻址单元送内部 RAM 单元 。 2 2MOV data2,data1(data1)(data2)直接寻址单元中的内容送直接寻址单元 。 3 2MOV DPTR, #data16#dataH(DPH),#dataL(DPL)16 位常数的高 8 位送到DPH,低 8 位送到 DPL 3 2MOVX A, Ri (Ri)(A) 寄存器 Ri 指向片外 RAM 地址中的内容送到累加器 A 中。 1 2MOVX Ri, A (A)(Ri) 累加器中的内容送到寄存器 Ri 指向片外RAM 地址中。 1

4、2MOVX A, DPTR (DPTR)(A) 数据指针指向片外 RAM 地址中的内容送到累加器 A 中。 1 2MOVX DPTR, A (A)(DPTR) 累加器中的内容送到数据指针指向片外 RAM 地址中。 1 2MOVC A, A+DPTR(A)+(DPTR)(A) 表格地址单元中的内容送到累加器 A 中。 1 2数据传送类指令期MOVC A, A+PC (PC)+1(A),(A)+(PC)(A) 表格地址单元中的内容送到累加器 A 中。 1 2XCH A, Rn (A)(Rn)累加器与工作寄存器 Rn 中的内容互换。 1 1XCH A, Ri (A)(Ri)累加器与工作寄存器 Ri

5、所指的存储单元中的内容互换。 1 1算术运算类指令XCHD A, data (data)(A)累加器 A 的内容与直接寻址单元的内容交换 。 2 1XCHD A, Ri (A 3-0)(Ri) 3-0)累加器与工作寄存器 Ri 所指的存储单元中的内容低半字节互换。 1 1SWAP A (A 3-0)(A 7-4)累加器中的内容高低半字节互换。 1 1POP data (SP)(data)(SP)-1(SP), 堆栈指针 SP 所指的单元数据送到直接寻址单元中,堆栈指针 SP 再进行减 1 操作 2 2PUSH data (SP)+1(SP),(data)(SP) 堆栈指针首先加 1,直接寻址单

6、元中的数据送到堆栈指针 SP 所指的单元中 2 2ADD A, Rn (A)+(Rn)(A) 累加器 A 中的内容与工作寄存器 Rn 中的内容相加,结果存在 A 中。 1 1ADD A, Ri (A)+(Ri)(A) 累加器 A 中的内容与工作寄存器Ri 所指向地址单元中的内容相加,结果存在 A 中。 1 1ADD A, data (A)+(data)(A) 累加器 A 中的内容与直接地址单元中的内容相加,结果存在 A 中。 2 1ADD A, #data (A)+#data(A) 累加器 A 中的内容与立即数#data 相加,结果存在 A 中。 2 1ADDC A, Rn (A)+Rn+(C

7、)(A) 累加器 A 中的内容与工作寄存器 Rn中的内容、连同进位位相加,结果存在 A 中。 1 1ADDC A, Ri(A)+(Ri)+(C)(A) 累加器 A 中的内容与工作寄存器 Ri 指向地址单元中的内容、连同进位位相加,结果存在 A 中。1 1ADDC A, #data (A)+#data +(C)(A) 累加器 A 中的内容与立即数连同进位位相加,结果存在 A 中。 2 1ADDC A, data (A)+(data)+(C)(A) 累加器 A 中的内容与直接地址单元的内容连同进位位相加,结果存在 A 中。 2 1INC A (A)+1(A) 累加器 A 中的内容加 1,结果存在

8、A 中。 1 1INC Rn (Rn)+1(Rn)寄存器 Rn 的内容加 1,结果送回原地址单元中。 1 1INC data (data)+1(data) 直接地址单元中的内容加 1,结果送回原地址单元中。 2 1INC Ri (Ri)+1(Ri) 寄存器的内容指向的地址单元中的内容加 1,结果送回原地址单元中。 1 1INC DPTR (DPTR)+1(DPTR)数据指针的内容加 1,结果送回数据指针中。 1 2DA A在进行 BCD 码运算时,这条指令总是跟在 ADD 或 ADDC 指令之后,其功能是将执行加法运算后存于累加器 A 中的结果进行调整和修正。1 1SUBB A, Rn (A)

9、-(Rn) -(C)(A) 累加器 A 中的内容与工作寄存器中的内容、连同借位位相减,结果存在 A 中。 1 1SUBB A, Ri(A)-(Ri) -(C)(A) 累加器 A 中的内容与工作寄存器 Ri 指向的地址单元中的内容、连同借位位相减,结果存在 A 中。1 1SUBB A, #data (A)-#data -(C)(A) 累加器 A 中的内容与立即数、连同借位位相减,结果存在 A 中。 2 1SUBB A, data (A)-(data) - (C)(A) 累加器 A 中的内容与直接地址单元中的内容、连同借位位相减,结果存在 A 中。 2 1DEC A (A)-1(A)累加器 A 中

10、的内容减 1,结果送回累加器 A中。 1 1DEC Rn (Rn)-1(Rn)寄存器 Rn 中的内容减 1,结果送回寄存器Rn 中。 1 1DEC Ri (Ri)-1(Ri)寄存器 Ri 指向的地址单元中的内容减 1,结果送回原地址单元中。 1 1DEC data (data)-1(data)直接地址单元中的内容减 1,结果送回直接地址单元中。 2 1MUL AB (A)(B)(A)和(B) 累加器 A 中的内容与寄存器 B中的内容相乘,结果存在 A、B 中。 1 4DIV AB(A)(B)(A)和(B) 累加器 A 中的内容除以寄存器B 中的内容,所得到的商存在累加器 A,而余数存在寄存器

11、B中。1 4ANL A, Rn 累加器 A 的内容和寄存器 Rn 中的内容执行与逻辑操作。结果存在累加器 A 中。 1 1ANL A, Ri 累加器 A 的内容和工作寄存器 Ri 指向的地址单元中的内容执行与逻辑操作。结果存在累加器 A 中。 1 1ANL A, #data 累加器 A 的内容和立即数执行与逻辑操作。结果存在累加器A 中。 2 1ANL A, data 累加器 A 中的内容和直接地址单元中的内容执行与逻辑操作。结果存在寄存器 A 中。 2 1ANL data, A 直接地址单元中的内容和累加器 A 的内容执行与逻辑操作。结果存在直接地址单元中。 2 1ANL data, #da

12、ta 直接地址单元中的内容和立即数执行与逻辑操作。结果存在直接地址单元中。 3 1ORL A, Rn 累加器 A 的内容和寄存器 Rn 中的内容执行逻辑或操作。结果存在累加器 A 中。 1 1ORL A, Ri 累加器 A 的内容和工作寄存器 Ri 指向的地址单元中的内容执行逻辑或操作。结果存在累加器 A 中。 1 1ORL A, #data 累加器 A 的内容和立即数执行逻辑或操作。结果存在累加器A 中。 2 1ORL A, data 累加器 A 中的内容和直接地址单元中的内容执行逻辑或操作。结果存在寄存器 A 中。 2 1ORL data A 直接地址单元中的内容和累加器 A 的内容执行逻

13、辑或操作。结果存在直接地址单元中。 2 1ORL data, #data 直接地址单元中的内容和立即数执行逻辑或操作。结果存在直接地址单元中。 3 1XRL A, Rn 累加器 A 的内容和寄存器 Rn 中的内容执行逻辑异或操作。结果存在累加器 A 中。 1 1逻辑运算类指令XRL A, Ri 累加器 A 的内容和工作寄存器 Ri 指向的地址单元中的内容执行逻辑异或操作。结果存在累加器 A 中。 1 1XRL A, #data 累加器 A 的内容和立即数执行逻辑异或操作。结果存在累加器 A 中。 2 1XRL A, data 累加器 A 中的内容和直接地址单元中的内容执行逻辑异或操作。结果存在

14、寄存器 A 中。 2 1XRL data, A 直接地址单元中的内容和累加器 A 的内容执行逻辑异或操作。结果存在直接地址单元中。 2 1XRL data, #data 直接地址单元中的内容和立即数执行逻辑异或操作。结果存在直接地址单元中。 3 2RL A 累加器 A 中的内容左移一位。 1 1RLC A 累加器 A 中的内容连同进位位 CY 左移一位。 1 1RR A 累加器 A 中的内容右移一位。 1 1RRC A 累加器 A 中的内容连同进位位 CY 右移一位。 1 1CPL A 累加器中的内容按位取反。 1 1CLR A 0(A),累加器中的内容清 0。 1 1ACCALL addr1

15、1绝对调用指令,可在 2kB 空间调用子程序,此时(PC)+ 2(PC),(SP)+ 1(SP),(PC 7-0)(SP),(SP)+ 1(SP),(PC 15-8)(SP),addr11(PC 10-0)2 2AJMP addr11 (PC)+2(PC),addr11(PC10-0)程序计数器赋予新值(11 位地址),(PC15-11)不改变。 2 2LCALL addr16长调用指令,可在 64kB 空间调用子程序。此时(PC)+ 3(PC),(SP)+ 1(SP),(PC 7-0)(SP),(SP)+ 1(SP),(PC 15-8)(SP),addr16(PC),即分别从堆栈中弹出调用子

16、程序时压入的返回地址。3 2LJMP addr16 addr16(PC),给程序计数器赋予新值(16 位地址)。 3 2SJMP rel (PC)+ 2 + rel(PC)当前程序计数器先加上 2 再加上偏移量给程序计数器赋予新值。 2 2JMP A+DPTR (A)+ (DPTR)(PC),累加器所指向地址单元的值加上数据指针的值给程序计数器赋予新值。 1 2RET 子程序返回指令。此时(SP)(PC 15-8),(SP)- 1(SP),(SP)(PC7-0),(SP)- 1(SP)1 2RET1 中断返回指令,除具有 RET 功能外,还具有恢复中断逻辑的功能,需注意的是,RETI 指令不能

17、用 RET 代替。 1 2JZ rel A=0,(PC)+ 2 + rel(PC),累加器中的内容为 0,则转移到偏移量所指向的地址,否则程序往下执行。 2 2JNZ rel A0,(PC)+ 2 + rel(PC),累加器中的内容不为 0,则转移到偏移量所指向的地址,否则程序往下执行。 2 2CJNE A, #data, relA#data,(PC)+ 3 + rel(PC),累加器中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行。 3 2控制转移类指令CJNE A, data, relA(data),(PC)+ 3 + rel(PC),累加器中的内容不等于直接地址单元的内

18、容,则转移到偏移量所指向的地址,否则程序往下执行3 2CJNE Rn,#data, relA#data,(PC)+ 3 + rel(PC),工作寄存器 Rn 中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行。3 2CJNE Ri, #data, relA#data,(PC)+ 3 + rel(PC),工作寄存器 Ri 指向地址单元中的内容不等于立即数,则转移到偏移量所指向的地址,否则程序往下执行。3 2DJNZ Rn, rel(Rn)-1(Rn),(Rn)0,(PC)+ 2 + rel(PC)工作寄存器 Rn 减 1 不等于 0,则转移到偏移量所指向的地址,否则程序往下执行2

19、 2DJNZ data, rel(Rn)-1(Rn),(Rn)0,(PC)+ 2 + rel(PC)直接地址单元中的内容减 1 不等于 0,则转移到偏移量所指向的地址,否则程序往下执行。3 2NOP 这条指令除了使 PC 加 1,消耗一个机器周期外,没有执行任何操作。可用于短时间的延时。 1 1MOV C, bit bitCY,某位数据送 CY。 2 1MOV bit, C CYbit,CY 数据送某位。 2 1CLR C 0CY,清 CY 1 1CLR bit 0bit,清某一位。 2 1CPL C ()CY 1 1CPL bit ()bit 2 1SETB C 1CY,置位 CY 1 1S

20、ETB bit 1bit,置位某一位 2 1ANL C, bit (CY)(bit)CY 2 2ANL C, /bit (CY)() CY 2 2ORL C, bit (CY)(bit) CY 2 2ORL C, /bit (CY)() CY 2 2JC rel (CY)=1 转移,(PC)+2+relPC,否则程序往下执行,(PC)+2PC。 2 2JNC rel (CY)=0 转移,(PC)+2+relPC,否则程序往下执行,(PC)+2PC。 2 2JB bit,rel 位状态为 1 转移,(PC)+3+relPC,否则程序往下执行,(PC)+3PC。 3 2JNB bit,rel 位状

21、态为 0 转移,(PC)+3+relPC,否则程序往下执行,(PC)+3PC。 3 2布尔操作类指令JBC bit,rel 位状态为 1 转移,并使该位清“0” ,(PC)+3+relPC,否则程序往下执行,(PC)+3PC。 3 2C51 汇编伪指令:1、DS 预留存储区命令格式: 标号: DS 表达式值其功能是从指定地址开始,定义一个存储区,以备源程序使用。存储区预留的存储单元数由表达式的值决定。TMP: DS 1从标号 TEP 地址处开始保留 1 个存储单元(字节)。2、BIT定义位命令格式: 字符名称 BIT 位地址其功能用于给字符名称定义位地址。SPK BIT P3.7经定义后,允许

22、在指令中用 SPK 代替 P3.7。3、USING 指令USING 指令通知汇编器使用 8051 的哪一个工作寄存器组。格式: USING 表达式 (值必须为 03,默认值为 0。)USING 0使用第 0 组工作寄存器。4、SEGMENT 指令SEGMENT 指令用来声明一个再定位段和一个可选的再定位类型。格式: 再定位段名 SEGMENT 段类型再定位类型其中,“再定位段名” 用于指明所声明的段。“段类型”用于指定所声明的段将处的存储器地址空间。可用的段类型有 CODE、XDATA、DATA、IDATA 和 BIT。STACK_SEG SEGMENT IDATADATA_SEG SEGME

23、NT DATA 5、RSEG再定位段选择指令再定位段选择指令为 RSEG,用于选择一个已在前面定义过的再定位段作为当前段。格式: RSEG 段名段名必须是在前面已经声明过的再定位段。DATA_SEG SEGMENT DATA ;声明一个再定位 DATA 段RSEG DATA_SEG ;选择前面声明的再定位 DATA 段作为当前段6、绝对段选择指令 CSEG绝对代码段 DSEG内部绝对数据段 XSEG外部绝对数据段 ISEG内部间接寻址数据段 BSEG绝对位寻址数据段 格式: CSEG AT 绝对地址表达式 DSEG AT 绝对地址表达式 XSEG AT 绝对地址表达式 ISEG AT 绝对地址

24、表达式 BSEG AT 绝对地址表达式 括号内是可选项,用来指定当前绝对段的基地址。CSEG AT 0000HAJMP MAIN7、ORG 指令ORG 指令用来改变汇编器的计数器,从而设定一个新的程序起始地址。格式: ORG 表达式表达式必须是绝对或简单再定位表达式。ORG 0000HAJMP MAIN设定 MAIN 程序的起始地址为 0000H。8、END 指令END 指令用来控制汇编结束。在每个汇编程序的最后一行必须有一条 END 指令,并且 END 指令只能出现一次。9、EQU 指令EQU 指令用于将一个数值或寄存器名赋给一个指定的符号名。格式: 符号名 EQU 表达式 或 符号名 EQ

25、U 寄存器名表达式必须是一个简单再定位表达式。用 EQU 指令赋值以后的字符名,可以用作数据地址、代码地址、位地址或者直接当做一个立即数使用。LIMIT EQU 1200COUNT EQU R510、DATA 指令DATA 指令用于将一个内部 RAM 的地址赋给指定的符号名。格式: 符号名 DATA 表达式数值表达式的值在 0255 之间,表达式必须是一个简单再定位表达式。PORT1 DATA 40H11、DB 指令DB 指令以表达式的值的字节形式初始化代码空间。格式: 标号: DB 表达式表表达式中可包含符号、字符串、或表达式等项,各个项之间用逗号隔开,字符串应用引号括起来。括号内的标号是可选项,如果使用了标号,则标号的值将是表达式表中第一字节的地址。DB 指令必须位于 CODE 段之内,否则将会发生错误。TABLE:DB 0C0H, 0F9H, 0A4HTABLE1:DB “ 89C51 “

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 计算机应用/办公自动化

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报