$ :当前指令所在地址1)以 A 为目的操作数的指令2)以 Rn 为目的操作数的指令3)以直接地址为目的操作数的指令4)以寄存器间接地址为目的操作数的指令5)16 位数据传送指令:MOV DPTR,#data16MOV @DPTR,A6)数据交换指令: direct XCH A, @Ri (字节互换) Rn XCHD A,@Ri 累加器 Acc 的低 4 位与((Ri))的低 4 位互换,各自的高 4 位不变;SWAP A 累加器 Acc 的低 4 位与自身的高 4 位互换7)堆栈操作指令 Acc Acc 进栈加 1, PUSH direct POP direct 出栈减 1 BCC Bcc8)不带进位加法运算: 只能用 A,结果存入 A,影响 Cy 9)带进位加法运算: MOV A,Rndirect@Ri#dataMOV Rn,Adirect#dataMOV direct,A@Ri#dataRndirectMOV @Ri,Adirect#data ;A¬(A)+()+Cy,影响 Cy10)带借位减法运算: A¬(A)—()-Cy,影响 Cy11)加 1/减 1 操作: 12)单字节乘/除运算: MUL AB; (B)¬积的高 8 位; (A)¬积的低 8 位DIV AB; (A)/(B)=(A)………(B) 13)十进制调整 DA A ; 用于两个 BCD 码之间的相加,这条指令只能跟在 ADD 或 ADDC 之后 14)逻辑指令 direct, A direct, #data逻辑与(清 0) ANL A, #data 逻辑或(置 1) ORL A, direct逻辑异或(取反)XRL A, @Ri A, Rn15)累加器 A 清零/取反操作 CLR A 对累加器清零 CPL A 对累加器按位取非 16)移位类指令 17)无条件转移: LJMP addr16 AJMP addr11 SJMP rel JMP @A+DPTR 18)条件转移(推断跳转): JZ rel 若 A 为 0,跳转;若 A 不为 0,顺序执行JNZ rel 若 A 不为 0,跳转;若 A 为 0,顺序执行 direct,rel DJNZ 先减 1,再推断是否跳转Rn, rel A, #data, relA, direct, rel ;不相等则跳转CJNE @Ri, #data, rel 相等则顺序执行 Rn, #data, rel19)子程序调用及返回: LCALL addr16 ACALL addr11 RET 子程序返回指令RETI 中断服务子程序返回指令20)位操作类指令:位传送指令: MOV C, bit (C)¬(bit) MOV bit, C (bit)¬(C) bit 表示位地址位清零/置位指令: CLR bit(或 C) (bit 或 C)¬“0" SETB bit(或 C) (bit 或 C)¬“1” 位逻辑与/或/非指令: ANL C,bit(或/bit) ORL C,bit(或/bit) CPL bit (或 C) 21)判位条件转移指令: JC rel (Cy)=“1"就跳转;否则不跳转JNC rel (Cy)¹“1”就跳转;否则不跳转JB bit,rel (bit)=“1”就跳转;否则不跳转JNB bit,rel (bit)¹“1”就跳转;否则不跳转JBC bit,rel (bit)=“1”就先将其清零 再跳转;否则,不动此位也不跳转22)XRAM 及 ROM 传送指令累加器与核外 XRAM 或 I/O 口的数据传送指令 A, @DPTR A, @Ri MOVX @DPTR, A @Ri, A程序存储器向累加器传送指令 A,@A+DPTR MOVC 只能读。 A,@A+PC 23)符号定义伪指令: EQU BIT SET DATA24)编程格式:ORG 0000HLJMP MAINORG 000BHLJMP INTPRORG 0050HMAIN:END