logo资料库

89C51 单片机汇编指令全集.doc

第1页 / 共5页
第2页 / 共5页
第3页 / 共5页
第4页 / 共5页
第5页 / 共5页
资料共5页,全文预览结束
51 汇编语言指令集 符号定义表 符号 含义 Rn R0~R7 寄存器 n=0~7 Direct 直接地址,内部数据区的地址 RAM(00H~7FH) SFR(80H~FFH) B,ACC,PSW,IP,P3,IE,P2,SCON,P1,TCON,P0 @Ri 间接地址 Ri=R0 或 R1 8051/31RAM 地址(00H~7FH) 8052/32RAM 地址(00H~ FFH) #data 8 位常数 #data16 16 位常数 Addr16 16 位的目标地址 Addr11 11 位的目标地址 Rel 相关地址 bit 内部数据 RAM(20H~2FH),特殊功能寄存器的直接地址的位 指令介绍 指令 字节 周期 动作说明 算数运算指令 1.ADD A,Rn 1 1 将累加器与寄存器的内容相加,结果存回累加器 2.ADD A,direct 2 1 将累加器与直接地址的内容相加,结果存回累加器 3.ADD A,@Ri 1 1 将累加器与间接地址的内容相加,结果存回累加器 4.ADD A,#data 2 1 将累加器与常数相加,结果存回累加器 5.ADDC A,Rn 1 1 将累加器与寄存器的内容及进位 C 相加,结果存回累加器 6.ADDC A,direct 2 1 将累加器与直接地址的内容及进位 C 相加,结果存回累加器 7.ADDC A,@Ri 1 1 将累加器与间接地址的内容及进位 C 相加,结果存回累加器 8.ADDC A,#data 2 1 将累加器与常数及进位 C 相加,结果存回累加器 9.SUBB A,Rn 1 1 将累加器的值减去寄存器的值减借位 C,结果存回累加器 10.SUBB A,direct 2 1 将累加器的值减直接地址的值减借位 C,结果存回累加器 11.SUBB A,@Ri 1 1 将累加器的值减间接地址的值减借位 C,结果存回累加器 12.SUBB A,#data 2 1 将累加器的值减常数值减借位 C,结果存回累加器 13.INC A 1 1 将累加器的值加 1 14.INC Rn 1 1 将寄存器的值加 l 15.INC direct 2 1 将直接地址的内容加 1 16.INC @Ri 1 1 将间接地址的内容加 1
17.INC DPTR 1 1 数据指针寄存器值加 1 说明:将 16 位的 DPTR 加 1,当 DPTR 的低字节(DPL)从 FFH 溢出至 00H 时,会使高字节(DPH) 加 1,不影响任何标志位 18.DEC A 1 1 将累加器的值减 1 19.DEC Rn 1 1 将寄存器的值减 1 20.DEC direct 2 1 将直接地址的内容减 1 21.DEC @Ri 1 1 将间接地址的内容减 1 22.MUL AB 1 4 将累加器的值与 B 寄存器的值相乘,乘积的低位字节存回累加器,高位字 节存回 B 寄存器 说明:将累加器 A 和寄存器 B 内的无符号整数相乘,产生 16 位的积,低位字节存入 A,高 位字节存入 B 寄存器。如果积大于 FFH,则溢出标志位(OV)被设定为 1,而进位标志位为 0 23.DIV AB 1 4 将累加器的值除以 B 寄存器的值,结果的商存回累加器,余数存回 B 寄存 说明:无符号的除法运算,将累加器 A 除以 B 寄存器的值,商存入 A,余数存入 B。执行本 器 指令后,进位位(C)及溢出位(OV)被清除为 0 24.DA A 1 1 将累加器 A 作十进制调整, 若(A) 3-0>9 或(AC)=1,则(A) 3-0←(A)3-0+6 若(A) 7-4>9 或 (C)=1,则(A) 7-4←(A)7-4+6 逻辑运算指令 25.ANL A,Rn 1 1 将累加器的值与寄存器的值做 AND 的逻辑判断,结果存回累加器 26.ANL A,direct 2 1 将累加器的值与直接地址的内容做 AND 的逻辑判断,结果存回累加 器 27.ANL A,@Ri 1 1 将累加器的值与间接地址的内容做 AND 的逻辑判断,结果存回累加器 28.ANL A,#data 2 1 将累加器的值与常数做 AND 的逻辑判断,结果存回累加器 29.ANL direct,A 2 1 将直接地址的内容与累加器的值做 AND 的逻辑判断,结果存回该直 30.ANL direct,#data 3 2 将直接地址的内容与常数值做 AND 的逻辑判断,结果存回该直 接地址 接地址 31.ORL A,Rn 1 1 将累加器的值与寄存器的值做 OR 的逻辑判断,结果存回累加器 32.ORL A,direct 2 1 将累加器的值与直接地址的内容做 OR 的逻辑判断,结果存回累加器 33.ORL A,@Ri 1 1 将累加器的值与间接地址的内容做 OR 的逻辑判断,结果存回累加器 34.ORL A,#data 2 1 将累加器的值与常数做 OR 的逻辑判断,结果存回累加器 35.ORL direct,A 2 1 将直接地址的内容与累加器的值做 OR 的逻辑判断,结果存回该直接 地址 36.ORL direct,#data 3 2 将直接地址的内容与常数值做 OR 的逻辑判断,结果存回该直接
37.XRL A,Rn 1 1 将累加器的值与寄存器的值做 XOR 的逻辑判断,结果存回累加器 38.XRL A,direct 2 1 将累加器的值与直接地址的内容做 XOR 的逻辑判断,结果存回累加 地址 器 39.XRL A,@Ri 1 1 将累加器的值与间接地扯的内容做 XOR 的逻辑判断,结果存回累加器 40.XRL A,#data 2 1 将累加器的值与常数作 XOR 的逻辑判断,结果存回累加器 41.XRL direct,A 2 1 将直接地址的内容与累加器的值做 XOR 的逻辑判断,结果存回该直 接地址 42.XRL direct,#data 3 2 将直接地址的内容与常数的值做 XOR 的逻辑判断,结果存回该 直接地址 43.CLR A 1 1 清除累加器的值为 0 44.CPL A 1 1 将累加器的值反相 45.RL A 1 1 将累加器的值左移一位 46.RLC A 1 1 将累加器含进位 C 左移一位 47.RR A 1 1 将累加器的值右移一位 48.RRC A 1 1 将累加器含进位 C 右移一位 49.SWAP A 1 1 将累加器的高 4 位与低 4 位的内容交换。(A)3-0←(A)7-4 数据转移指令 50.MOV A,Rn 1 1 将寄存器的内容载入累加器 51.MOV A,direct 2 1 将直接地址的内容载入累加器 52.MOV A,@Ri 1 1 将间接地址的内容载入累加器 53.MOV A,#data 2 1 将常数载入累加器 54.MOV Rn,A 1 1 将累加器的内容载入寄存器 55.MOV Rn,direct 2 2 将直接地址的内容载入寄存器 56.MOV Rn,gdata 2 1 将常数载入寄存器 57.MOV direct,A 2 1 将累加器的内容存入直接地址 58.MOV direct,Rn 2 2 将寄存器的内容存入直接地址 59.MOV direct1, direct2 3 2 将直接地址 2 的内容存入直接地址 1 60.MOV direct,@Ri 2 2 将间接地址的内容存入直接地址 61.MOV direct,#data 3 2 将常数存入直接地址 62.MOV @Ri,A 1 1 将累加器的内容存入某间接地址 63.MOV @Ri,direct 2 2 将直接地址的内容存入某间接地址 64.MOV @Ri,#data 2 1 将常数存入某间接地址 65.MOV DPTR,#data16 3 2 将 16 位的常数存入数据指针寄存器 66.MOVC A,@A+DPTR 1 2 (A) ←((A)+(DPTR)) 累加器的值再加数据指针寄存器的值为其所指定地址,将该地址的内容读入累加器
67.MOVC A,@A+PC 1 2 (PC)←(PC)+1;(A)←((A)+(PC))累加器的值加程序计数器的值作为 其所指定地址,将该地址的内容读入累加器 68.MOVX A,@Ri 1 2 将间接地址所指定外部存储器的内容读入累加器(8 位地址) 69.MOVX A,@DPTR 1 2 将数据指针所指定外部存储器的内容读入累加器(16 位地址) 70.MOVX @Ri,A 1 2 将累加器的内容写入间接地址所指定的外部存储器(8 位地址) 71.MOVX @DPTR,A 1 2 将累加器的内容写入数据指针所指定的外部存储器(16 位地址) 72.PUSH direct 2 2 将直接地址的内容压入堆栈区 73.POP direct 2 2 从堆栈弹出该直接地址的内容 74.XCH A,Rn 1 1 将累加器的内容与寄存器的内容互换 75.XCH A,direct 2 1 将累加器的值与直接地址的内容互换 76.XCH A,@Ri 1 1 将累加器的值与间接地址的内容互换 77.XCHD A,@Ri 1 1 将累加器的低 4 位与间接地址的低 4 位互换 布尔代数运算 78.CLR C 1 1 清除进位 C 为 0 79.CLR bit 2 1 清除直接地址的某位为 0 80.SETB C 1 1 设定进位 C 为 1 81.SETB bit 2 1 设定直接地址的某位为 1 82.CPL C 1 1 将进位 C 的值反相 83.CPL bit 2 1 将直接地址的某位值反相 84.ANL C,bit 2 2 将进位 C 与直接地址的某位做 AND 的逻辑判断,结果存回进位 C 85.ANL C,/bit 2 2 将进位 C 与直接地址的某位的反相值做 AND 的逻辑判断,结果存回进 位 C 86.ORL C,bit 2 2 将进位 C 与直接地址的某位做 OR 的逻辑判断,结果存回进位 C 87.ORL C,/bit 2 2 将进位 C 与直接地址的某位的反相值做 OR 的逻辑判断,结果存回进位 C 88.MOV C,bit 2 1 将直接地址的某位值存入进位 C 89.MOV bit,C 2 2 将进位 C 的值存入直接地址的某位 90.JC rel 2 2 若进位 C=1 则跳至 rel 的相关地址 91.JNC rel 2 2 若进位 C=0 则跳至 rel 的相关地址 92.JB bit,rel 3 2 若直接地址的某位为 1,则跳至 rel 的相关地址 93.JNB bit,rel 3 2 若直接地址的某位为 0,则跳至 rel 的相关地址 94.JBC bit,rel 3 2 若直接地址的某位为 1,则跳至 rel 的相关地址,并将该位值清除为 0 程序跳跃 95.ACALL addr11 2 2 调用 2K 程序存储器范围内的子程序 96.LCALL addr16 3 2 调用 64K 程序存储器范围内的子程序
97.RET 1 2 从子程序返回 98.RETI 1 2 从中断子程序返回 99.AJMP addr11 2 2 绝对跳跃(2K 内) 100.LJMP addr16 3 2 长跳跃(64K 内) 101.SJMP rel 2 2 短跳跃(2K 内)-128~+127 字节 102.JMP @A+DPTR 1 2 跳至累加器的内容加数据指针所指的相关地址 103.JZ rel 2 2 累加器的内容为 0,则跳至 rel 所指相关地址 104.JNZ rel 2 2 累加器的内容不为 0,则跳至 rel 所指相关地址 105.CJNE A,direct,rel 3 2 将累加器的内容与直接地址的内容比较,不相等则跳至 rel 所指的相关地址 106.CJNE A,#data,rel 3 2 将累加器的内容与常数比较,若不相等则跳至 rel 所指的相关 地址 107.CJNE @Rn,#data,rel 3 2 将寄存器的内容与常数比较,若不相等则跳至 rel 所指的相 关地址 108.CJNE @Ri,#data,rel 3 2 将间接地址的内容与常数比较,若不相等则跳至 rel 所指的 相关地址 109.DJNZ Rn,rel 2 2 将寄存器的内容减 1,不等于 0 则跳至 rel 所指的相关地址 110.DJNZ direct,rel 3 2 将直接地址的内容减 1,不等于 0 则跳至 rel 所指的相关地址 111.NOP 1 1 无动作
分享到:
收藏