本文包含原理图、PCB、源代码、封装库、中英文PDF等资源
您需要 登录 才可以下载或查看,没有账号?注册会员
×
指令寻址方式 MCS-51设有7种寻址方式: · 寄存器寻址 · 直接寻址 · 寄存器间接寻址 · 立即寻址 · 基址寄存器加变址寄存器间接寻址 · 相对寻址 · 位寻址 一、数据传送类指令 说明: · #data:8位立即数 · #data16:16位立即数 · Ri:工作寄存器中的寄存器R0或R1 · Rn:工作寄存器中的寄存器R0、R1…R7之一, · 常用符号 · direct:片内RAM或SFR的地址(8位) · @:间接寻址寄存器 · Bit:片内RAM或SFR的位地址 · addr11:11位目的地址 · addr16:16位目的地址 · rel: 补码形式的8位地址偏移量。偏移范围为-128~127 · /:位操作指令中,该位求反后参与操作,不影响该位 · direct:片内RAM的直接地址或寄存器 · (X):相应地址单元中的内容 · →:箭头左边的内容送入箭头右边的单元内 指令格式 | 功能简述 | 字节数 | 周期 | MOV | Rn,A | 累加器送寄存器 | 1 | 1 | MOV | A,@Ri | 内部RAM单元送累加器 | 1 | 1 | MOV | @Ri,A | 累加器送内部RAM单元 | 1 | 1 | MOV | A,#data | 立即数送累加器 | 2 | 1 | MOV | A,direct | 直接寻址单元送累加器 | 2 | 1 | MOV | direct,A | 累加器送直接寻址单元 | 2 | 1 | MOV | Rn,#data | 立即数送寄存器 | 2 | 1 | MOV | direct,#data | 立即数送直接寻址单元 | 3 | 2 | MOV | @Ri,#data | 立即数送内部RAM单元 | 2 | 1 | MOV | direct,Rn | 寄存器送直接寻址单元 | 2 | 2 | MOV | Rn,direct | 直接寻址单元送寄存器 | 2 | 2 | MOV | direct,@Ri | 内部RAM单元送直接寻址单元 | 2 | 2 | MOV | @Ri,direct | 直接寻址单元送内部RAM单元 | 2 | 2 | MOV | direct2,direct1 | 直接寻址单元送直接寻址单元 | 3 | 2 | MOV | DPTR,#data16 | 16位立即数送数据指针 | 3 | 2 | MOVX | A,@Ri | 外部RAM单元送累加器(8位地址) | 1 | 2 | MOVX | @Ri,A | 累加器送外部RAM单元(8位地址) | 1 | 2 | MOVX | A,@DPTR | 外部RAM单元送累加器(16位地址) | 1 | 2 | MOVX | @DPTR,A | 累加器送外部RAM单元(16位地址) | 1 | 2 | MOVC | A,@A+DPTR | 查表数据送累加器(DPTR为基址) | 1 | 2 | MOVC | A,@A+PC | 查表数据送累加器(PC为基址) | 1 | 2 | XCH | A,Rn | 累加器与寄存器交换 | 1 | 1 | XCH | A,@Ri | 累加器与内部RAM单元交换 | 1 | 1 | XCHD | A,direct | 累加器与直接寻址单元交换 | 2 | 1 | XCHD | A,@Ri | 累加器与内部RAM单元低4位交换 | 1 | 1 | SWAP | A | 累加器高4位与低4位交换 | 1 | 1 | POP | direct | 栈顶弹出指令直接寻址单元 | 2 | 2 | PUSH | direct | 直接寻址单元压入栈顶 | 2 | 2 |
二、算术运算类指令 指令格式 | 功能简述 | 字节数 | 周期 | ADD | A,@Ri | 累加器加内部RAM单元 | 1 | 1 | ADD | A,direct | 累加器加直接寻址单元 | 2 | 1 | ADD | A,#data | 累加器加立即数 | 2 | 1 | ADDC | A,Rn | 累加器加寄存器和进位标志 | 1 | 1 | ADDC | A,@Ri | 累加器加内部RAM单元和进位标志 | 1 | 1 | ADDC | A,#data | 累加器加立即数和进位标志 | 2 | 1 | ADDC | A,direct | 累加器加直接寻址单元和进位标志 | 2 | 1 | INC | A | 累加器加1 | 1 | 1 | INC | Rn | 寄存器加1 | 1 | 1 | INC | direct | 直接寻址单元加1 | 2 | 1 | INC | @Ri | 内部RAM单元加1 | 1 | 1 | INC | DPTR | 数据指针加1 | 1 | 2 | DA | A | 十进制调整 | 1 | 1 | SUBB | A,Rn | 累加器减寄存器和进位标志 | 1 | 1 | SUBB | A,@Ri | 累加器减内部RAM单元和进位标志 | 1 | 1 | SUBB | A,#data | 累加器减立即数和进位标志 | 2 | 1 | SUBB | A,direct | 累加器减直接寻址单元和进位标志 | 2 | 1 | DEC | A | 累加器减1 | 1 | 1 | DEC | Rn | 寄存器减1 | 1 | 1 | DEC | @Ri | 内部RAM单元减1 | 1 | 1 | DEC | direct | 直接寻址单元减1 | 2 | 1 | MUL | AB | 累加器乘寄存器B | 1 | 4 | DIV | AB | 累加器除以寄存器B | 1 | 4 |
三、逻辑运算类指令 指令格式 | 功能简述 | 字节数 | 周期 | ANL | A,@Ri | 累加器与内部RAM单元 | 1 | 1 | ANL | A,#data | 累加器与立即数 | 2 | 1 | ANL | A,direct | 累加器与直接寻址单元 | 2 | 1 | ANL | direct,A | 直接寻址单元与累加器 | 2 | 1 | ANL | direct,#data | 直接寻址单元与立即数 | 3 | 1 | ORL | A,Rn | 累加器或寄存器 | 1 | 1 | ORL | A,@Ri | 累加器或内部RAM单元 | 1 | 1 | ORL | A,#data | 累加器或立即数 | 2 | 1 | ORL | A,direct | 累加器或直接寻址单元 | 2 | 1 | ORL | direct,A | 直接寻址单元或累加器 | 2 | 1 | ORL | direct,#data | 直接寻址单元或立即数 | 3 | 1 | XRL | A,Rn | 累加器异或寄存器 | 1 | 1 | XRL | A,@Ri | 累加器异或内部RAM单元 | 1 | 1 | XRL | A,#data | 累加器异或立即数 | 2 | 1 | XRL | A,direct | 累加器异或直接寻址单元 | 2 | 1 | XRL | direct,A | 直接寻址单元异或累加器 | 2 | 1 | XRL | direct,#data | 直接寻址单元异或立即数 | 3 | 2 | RL | A | 累加器左循环移位 | 1 | 1 | RLC | A | 累加器连进位标志左循环移位 | 1 | 1 | RR | A | 累加器右循环移位 | 1 | 1 | RRC | A | 累加器连进位标志右循环移位 | 1 | 1 | CPL | A | 累加器取反 | 1 | 1 | CLR | A | 累加器清零 | 1 | 1 |
四、控制转移类指令类 指令格式 | 功能简述 | 字节数 | 周期 | AJMP | addr11 | 2KB范围内绝对转移 | 2 | 2 | LCALL | addr16 | 2KB范围内长调用 | 3 | 2 | LJMP | addr16 | 2KB范围内长转移 | 3 | 2 | SJMP | rel | 相对短转移 | 2 | 2 | JMP | @A+DPTR | 相对长转移 | 1 | 2 | RET |
| 子程序返回 | 1 | 2 | RET1 |
| 中断返回 | 1 | 2 | JZ | rel | 累加器为零转移 | 2 | 2 | JNZ | rel | 累加器非零转移 | 2 | 2 | CJNE | A,#data,rel | 累加器与立即数不等转移 | 3 | 2 | CJNE | A,direct,rel | 累加器与直接寻址单元不等转移 | 3 | 2 | CJNE | Rn,#data,rel | 寄存器与立即数不等转移 | 3 | 2 | CJNE | @Ri,#data,rel | RAM单元与立即数不等转移 | 3 | 2 | DJNZ | Rn,rel | 寄存器减1不为零转移 | 2 | 2 | DJNZ | direct,rel | 直接寻址单元减1不为零转移 | 3 | 2 | NOP |
| 空操作 | 1 | 1 |
五、布尔操作类指令 指令格式 | 功能简述 | 字节数 | 周期 | MOV | bit,C | C送直接寻址位 | 2 | 1 | CLR | C | C清零 | 1 | 1 | CLR | bit | 直接寻址位清零 | 2 | 1 | CPL | C | C取反 | 1 | 1 | CPL | bit | 直接寻址位取反 | 2 | 1 | SETB | C | C置位 | 1 | 1 | SETB | bit | 直接寻址位置位 | 2 | 1 | ANL | C,bit | C逻辑与直接寻址位 | 2 | 2 | ANL | C,/bit | C逻辑与直接寻址位的反 | 2 | 2 | ORL | C,bit | C逻辑或直接寻址位 | 2 | 2 | ORL | C,/bit | C逻辑或直接寻址位的反 | 2 | 2 | JC | rel | C为1转移 | 2 | 2 | JNC | rel | C为零转移 | 2 | 2 | JB | bit,rel | 直接寻址位为1转移 | 3 | 2 | JNB | bit,rel | 直接寻址为0转移 | 3 | 2 | JBC | bit,rel | 直接寻址位为1转移并清该位 | 3 | 2 |
|