收藏 分享(赏)

C51汇编指令.docx

上传人:scg750829 文档编号:6784106 上传时间:2019-04-22 格式:DOCX 页数:7 大小:31.33KB
下载 相关 举报
C51汇编指令.docx_第1页
第1页 / 共7页
C51汇编指令.docx_第2页
第2页 / 共7页
C51汇编指令.docx_第3页
第3页 / 共7页
C51汇编指令.docx_第4页
第4页 / 共7页
C51汇编指令.docx_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、MCS51 部分汇编指令8 种常用伪指令ORG 16 位地址 ;此指令用在原程序或数据块的开始,指明此语句后面目标程序或数据块存放的起始地址。标号: DB 字节数据项表 ;将项表中的字节数据存放到从标号开始的连续字节单元中。例如:SEG: DB 88H,100,“7”,“C”标号: DW 双字节数据项表 ;定义 16 位地址表,16 地址按低位地址存低位字节,高位地址存高位字节。例如:TAB : DW 1234H,7BH名字 EQU 表达式 或名字 =表达式 ;用与给一个表达式赋值或给字符串起名字。之后名字可用做 程序地址,数据地址或立即数地址使用。名字必须是一字母开头的字母数字串。例如:CO

2、UNT=10 或 SPACE EQU 10H名字 DATA 直接字节地址 ;给 8 位内部 RAMm 单元起个名字,名字必须是一字母开头的字母数字串。同一单元可起多个名字。例如:ERROR DATA 80H名字 XDATA 直接字节地址 ;给 8 位外部 RAM 起个名字,名字规定同 DATA 伪指令。例如:IO_PORT XDATA 0CF04H名字 BIT 位指令 ;给一可位寻址的位单元起个名字,规定同 DATA 伪指令。例如:SWT BIT 30H标号: ;指出源程序到此结束,汇编对其后的程序语句不予理睬源 程序只在主程序最后使用一个定义指令符号符号 说明Rn 目前所选定的寄存器组中的

3、R0-R7 寄存器Ri 当前选中的寄存器区中可作为地址寄存器的两个寄存器 R0 和 R1(i=0,1)Direct 8 位直接寻址地址,可以是内存 RAM 地址(00H-7FH)或 SFR(80H-FFH)Ri 通过 R0 或 R1 做间接寻址内部 RAM 的地址(00H-FFH )的前缀#data 8 位立即数#data16 16 位立即数,只有 DPTR 中才用到Addr 只用在 LCALL(长指令调用,三字节)和 LJMP(无条件长转移指令)指令中的 1616 位目的地地址,可寻址 64K 存储器中的任何地址Addr 11使用在 ACALL(绝对调用指令,双字节)和 AJMP(无条件绝对

4、转移指令)指令中的 11 位目的地地址,可寻址下一个指令算起 2K 内的任何地址,即目的地址必须放在与下条指令第一个字节同一个 2kB 程序存储器空间DPTR 数据指针rel有符号的 8 位偏移地址( Offset Address),其范围是从下一个指令算起的-128 到+128 字节中。负值表示地址向前推算,正值表示地址向后推算。使用在SJMP 和所有条件式跳转指令中bit 可直接位寻址的内部数据 RAM(20H-2FH),其中地址范围为(00H-7FH)或特殊功能积存器(80H-FFH )A 累加器B 累加器,用于乘法和除法(X) 某地址单元 X 中的内容(X) 某地址单元 X 内存放一地

5、址信息,此命令为寻址地址信息所指地址中存放的数据MCS51 汇编指令指令格式(助记符) 指令功能说明 字节 周期MOV A,direct (direct)(A) 直接单元地址中的数据累加器 A 1 1MOV A,#data #data(A) 8 位立即数累加器 A 2 1MOV A,Rn (Rn)(A) Rn 寄存器中的数据 累加器 A 1 1MOV A,Ri (Ri)(A) Ri 中的数据指向的地址单元中的数据 累加器 A 1 1MOV Rn,direct (direct)(Rn) 直接寻址单元中的数据 寄存器 Rn 2 2MOV Rn,#data #data(Rn) 8 位立即数 寄存器

6、Rn 2 1MOV Rn,A (A)(Rn) 累加器 A 中的数据 寄存器 Rn 1 1MOV direct,direct(direct)(direct) 直接地址单元中的数据 直接地址单元direct 3 2MOV direct,#data #data(direct) 立即数直接地址单元 direct 3 2MOV direct,A (A)(direct) 累加器 A 中的数据 直接地址单元 direct 2 2MOV direct,Rn (Rn)(direct) 寄存器 Rn 中的数据直接地址单元 direct 2 2MOV direct,Ri (Ri)(direct) 寄存器 Ri 中的

7、数据指定的地址单元中数据直接地址单元 direct2 2MOV Ri,direct(direct)(Ri) 直接地址单元中的数据以 Ri 中的内容为地址的 RAM 单元2 2MOV Ri,#data #data(Ri) 立即数以 Ri 中的内容为地址的 RAM 单元 2 1MOV Ri,A (A)(Ri) 累加器 A 中的数据以 Ri 中的内容为地址的 RAM单元1 1MOVC A,A+DPTR (A)+(DPTR)(A) 表格地址单元中的数据 累加器 A 3 2MOVC A,A+PC (C)+1(A),(A)+(PC)(A) 表格地址单元中的数据累加器 A1 2MOVX DPTR,A (A)

8、(DPTR) 累加器中的数据 数据指针指向片 RAM 地址中 3 2MOVX A, DPTR (A)(DPTR) 累加器中的数据 数据指针指向片 RAM 地址中 3 2指令格式(助记符) 指令功能说明 字节 周期MOVX A, Ri (Ri)(A) 寄存器 Ri 指向片外 RAM 地址中的数据累加器 A中1 2MOVX Ri,A (A)(Ri) 累加器中的数据 寄存器 Ri 指向片外 RAM 地址中 1 2PUSH direct (SP)+1(SP),(direct)(SP) 堆栈指针首先加 1,直接寻址单元中的数据送到堆栈指针 SP 所指的单元中2 2PUSH A 将累加器 A 中的数据 堆

9、栈顶端 2 2POP direct (SP)(direct) (SP)-1(SP), 堆栈指针 SP 所指的单元数据送到直接寻址单元中,堆栈指针 SP 再进行减 1 操作2 2POP A 将堆栈顶端的数据累加器 A 2 2XCH A,Rn (A)(Rn)累加器与工作寄存器 Rn 中的数据互换 1 1XCH A,Ri (A)(Ri)累加器与工作寄存器 Ri 所指的存储单元中的数据互换1 1XCH A, direct (A)(direct) 累加器与直接地址单元中的内容互换 2 2XCHD A,Ri (A3-0)(Ri)3-0)累加器与工作寄存器 Ri 所指的存储单元中的数据低半字节互换1 1SW

10、AP A (A3-0)(A7-4) 累加器中的内容高低半字节互换 1 1MOV DPTR,#data16#dataH(DPH),#dataL(DPL)16 位常数的高 8 位送到DPH,低 8 位送到 DPL3 2ADD A,#data (A)+#data(A) 累加器 A 中的数据与立即数#data 相加,结果存在 A 中 ADD A,direct (A)+ (direct)(A) 累加器 A 中的数据与直接地址单元中的数据相加,结果存在 A 中 ADD A,Rn (A)+(Rn)(A) 累加器 A 中的数据与工作寄存器 Rn 中的数据相加,结果存在 A 中 ADD A,Ri (A)+(Ri

11、)(A) 累加器 A 中的数据与工作寄存器 Ri 所指向地址单元中的数据相加,结果存在 A 中 ADDC A,direct (A)+(direct)+(C)(A) 累加器 A 中的数据与直接地址单元的数据连同进位位相加,结果存在 A 中 ADDC A,#data (A)+#data +(C)(A) 累加器 A 中的数据与立即数连同进位位相加,结果存在 A 中 ADDC A,Rn (A)+Rn+(C)(A) 累加器 A 中的数据与工作寄存器 Rn 中的数据、连同进位位相加,结果存在 A 中 ADDC A,Ri (A)+(Ri)+(C)(A) 累加器 A 中的数据与工作寄存器 Ri 指 向地址单元

12、中的数据、连同进位位相加,结果存在 A 中SUBB A,direct (A)(direct) (C)(A) 累加器 A 中的数据与直接地址单元中的数据、连同借位位相减,结果存在 A 中 SUBB A,#data (A)(Rn) (C)(A) 累加器 A 中的数据与工作寄存器中的数据、连同借位位相减,结果存在 A 中 指令格式(助记符) 指令功能说明 字节 周期SUBB A,Rn (A)(Rn) (C)(A) 累加器 A 中的数据与工作寄存器中的数据、连同借位位相减,结果存在 A 中 SUBB A,Ri (A)(Ri)(C)(A) 累加器 A 中的数据与工作寄存器 Ri指向的地址单元中的数据、连

13、同借位位相减,结果存在 A 中 MUL AB (A)(B)(A)和(B) 累加器 A 中的数据乘以寄存器 B 中的数据,结果高字节存入寄存器,底字节存入累加器 DIV AB (A)(B)(A)和(B) 累加器 A 中的数据除以寄存器 B 中的数据,结果的商存入累加器 A,余数存入寄存器 B 中 INC A +1 累加器 A 中的数据加 1,结果存在 A 中 INC direct(direct)+1(direct) 直接地址单元中的数据加 1,结果送回原地址单元中,如果直接地址是 I/O,其功能是先读入 I/O 锁存器的内容,然后在 CPU 进行加 1 操作,再输出到 I/O 上,这就是“读 修

14、改 写”操作 INC Ri (Ri)+1(Ri) 寄存器的数据指向的地址单元中的数据加1,结果送回原地址单元中 NC Rn (Rn)+1(Rn)寄存器 Rn 的数据加 1,结果送回原地址单元 INC DPTR (DPTR)+1(DPTR)数据指针的数据加 1,结果送回数据指针中 DEC A (A)-1(A)累加器 A 中的数据减 1,结果送回累加器 A DEC direct (direct)-1(direct)直接地址单元中的数据减 1,结果送回直接地址单元中 DEC Ri (Ri)-1(Ri)寄存器 Ri 指向的地址单元中的数据减 1,结果送回原地址单元中 DEC Rn (Rn)-1(Rn)

15、 寄存器 Rn 中的数据减 1,结果送回寄存器 Rn 中 DA A 累加器中的数据做调整 RL A 累加器 A 中的数据左移一位,bitbit RR A 累加器 A 中的数据右移一位,bitbit RLC A 累加器 A 中的数据连同进位标志位 CY 左移一位,bit, bit RRC A 累加器 A 中的数据连同进位 CY 位 CY 右移一位,bi , bit SWAP A 累加器中的数据高低半字节互换 CPL A 累加器中的数据按位取反,即, CLR A 0(A),累加器中的数据清 0 ANL A,direct 累加器 A 中的数据和直接地址单元中的数据执行与操作。结果存在寄存器 A 中

16、ANL direct,#data直接地址单元中的数据和立即数执行与操作。结果存在直接地址单元中 NL A,#data 累加器 A 的数据和立即数执行与操作。结果存在累加器 A 中 指令格式(助记符) 指令功能说明 字节 周期NL A,Rn 累加器 A 的数据和寄存器 Rn 中的数据执行与操作。结果存在累加器 A 中 ANL direct,A 直接地址单元中的数据和累加器 A 的数据执行与操作。结果存在直接地址单元中 ANL A,Ri 累加器 A 的数据和工作寄存器 Ri 指向的地址单元中的数据执行与操作。结果存在累加器 A 中 ORL A,direct 累加器 A 中的数据和直接地址单元中的数

17、据执行逻辑或操作。结果存在寄存器 A 中 ORL direct,#data累加器 A 中的数据和直接地址单元中的数据执行逻辑或操作。结果存在寄存器 A 中 ORL A,#data 累加器 A 的数据和立即数执行逻辑或操作。结果存在累加器 ORL A,Rn 累加器 A 的数据和寄存器 Rn 中的数据执行逻辑或操作。结果存在累加器 A 中 ORL direct,A 直接地址单元中的数据和累加器 A 的数据执行逻辑或操作。结果存在直接地址单元中 ORL A,Ri 累加器 A 的数据和工作寄存器 Ri 指向的地址单元中的数据执行逻辑或操作。结果存在累加器 A 中 XRL A,direct 累加器 A

18、中的数据和直接地址单元中的数据执行逻辑异或操作。结果存在寄存器 A 中 XRL direct,#data直接地址单元中的数据和立即数执行逻辑异或操作。结果存在直接地址单元中 XRL A,#data 累加器 A 的数据和立即数执行逻辑异或操作。结果存在累加器 A中 XRL A,Rn 累加器 A 的数据和寄存器 Rn 中的数据执行逻辑异或操作。结果存在累加器 A 中 XRL data,A 直接地址单元中的数据和累加器 A 的数据执行逻辑异或操作。结果存在直接地址单元中 XRL A,Ri 累加器 A 的数据和工作寄存器 Ri 指向的地址单元中的数据执行逻辑异或操作。结果存在累加器 A 中 CLR C

19、 清除进位标志 CY 为 0 1 1CLR bit 清除 bit 为 0 2 1SETB C 设定进位标志 CY 为 1 1 1SETB bit 设定 bit 为 1 2 1CPL C 将进位标志 CY 反相 1 1CPL bit 将 bit 反相 2 1ANL C, bit 将进位标志 CY AND bit 值 进位标志位 CY 2 2ANL C, /bit 将进位标志 CY AND bit 反相值 进位标志位 CY 2 2ANL A, #data 将累加器 A 的各位与立即数的相对位置做 ANDA 累加器 2 2指令格式(助记符) 指令功能说明 字节 周期ORL C, bit 将进位标志

20、CY OR bit 值 进位标志位 CY 2 2ORL C, /bit 将进位标志 CY OR bit 反相值 进位标志位 CY 2 2ORL A, #data 将累加器 A 的各位与立即数的相对位置做 ORA 累加器 2 2MOV C, bit 将 bit 值 进位标志位 CY 2 1MOV bit,C 将进位标志位 CYbit 值 2 2JC rel 当进位标志位 CY=1 就跳至 rel,否则执行下一条指令 2 2JNC rel 当进位标志位 CY=0 就跳至 rel,否则执行下一条指令 2 2JB bit rel 当进 bit=1 就跳至 rel,否则执行下一条指令 3 3JNB bi

21、t rel 当进 bit=0 就跳至 rel,否则执行下一条指令 3 3JBC bit rel 当进 bit=1 跳至 rel,并且清除此 bit 为 0,否则执行下一条指令3 3ACALL addr11 2K 范围内子程序调用 2 2LCALL addr16 64K 范围内子程序调用 3 3RET 子程序返回 1 2RET1 中断服务程序结束返回 1 2AJMP addr11 2K 范围内无条件跳转 2 2LJMP addr16 64K 范围内无条件跳转 2 2SJMP rel 在此指令的前 128 或后 128 范围内无条件跳转 2 2JMP A+DPTR 跳至A+DPTR 所指定的地址

22、1 2JZ rel 如 A 的内容为 0,则短跳转,负责执行下一条指令 2 2JNZ rel 如 A 的内容不为 0,则短跳转,负责执行下一条指令 2 2CJNE A,direct , rel 如 A 的内容与直接地址内的数据不同,则短跳转3 2CJNE A,#data,rel 如 A 的内容与立即数不同,则短跳转3 2CJNE Rn, #data, rel 如 Rn 寄存器中的数据与立即数不同,则短跳转3 2CJNE Ri,#data , rel 如间接地址的数据与立即数不同,则短跳转3 2DJNZ Rn,rel Rn 寄存器中的数据减 1,若不为 0,则短跳转,否则执行下条指 2 2令DJNZ direct,rel直接地址中的数据减 1,若不为 0,则短跳转,负责执行下条指令3 2NOP CPU 仅仅作取指令,不动作 1 1

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

当前位置:首页 > 企业管理 > 管理学资料

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


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

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

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