51单片机 第二讲:指令与编程.ppt
文本预览下载声明
(三)逻辑运算及移位类指令(5种/24条) —— P.61 逻辑与运算: (ANL——6条) 逻辑或运算: (ORL——6条) 逻辑异或运算: (XRL——6条) 累加器清零/取反: (CLR,CPL——2条) 累加器移位操作: (RL,RLC,RR,RRC—4条) 逻辑运算及移位类指令(续) P.61 逻辑与(ANL),逻辑或(ORL),逻辑异或(XRL): 累加器清零/取反操作 (CLR,CPL——2条) CLR A ——对累加器清零 1 Byte 1 个Tm CPL A ——对累加器按位取非 1 Byte 1 个Tm 1 1 ANL(ORL,XRL) A, Rn 1 1 ANL(ORL,XRL) A, @Ri 1 2 ANL(ORL,XRL) A, direct 1 2 ANL(ORL,XRL) A, #data 2 3 ANL(ORL,XRL) direct,#data 1 2 ANL(ORL,XRL) direct, A Tm Byte 指 令 形 式 逻辑运算指令的常见用法 逻辑与ANL用于清0或者保留某些位: 例: ANL A, #0FH; 则(A) = 0AH ( 已知累加器A中已存有数:9AH ) 逻辑或ORL用于置1或者保留某些位: 例: ORL A, #0FH; 则(A) = 9FH 逻辑异或XRL用于取反或者保留某些位: 例: XRL A, #0FH; 则(A) = 95H (A) ? 1001 1010 #0FH ? 0000 1111 95H ? 1001 0101 逻辑运算及移位类指令(续) P.64 累加器移位操作:(RL,RLC,RR,RRC——4条) RL A 左环移 累加器 A 累加器 A Cy 累加器 A Cy 累加器 A RRC A 带进位位右环移 RR A 右环移 RLC A 带进位位左环移 (四)控制转移类指令(4种/17条) P.65 此类指令改变程序的执行顺序——改变当前PC值 无条件转移: (LJMP,AJMP,SJMP,JMP——4条) 条件转移(判断跳转): (JZ,JNZ,CJNE,DJNZ——8条) 子程序调用及返回: (LCALL,ACALL,RET,RETI——4条) 空操作: (NOP——1条) “耗时”一个机器周期。 do nothing! 控制转移类指令(续) P.65-67 无条件转移: LJMP,AJMP,SJMP,JMP——4条 LJMP addr16 长跳转指令 ——可在64K范围内跳转 AJMP addr11 绝对跳转指令 ——可在指令所在的2K范围内跳转 SJMP rel 相对跳转指令 ——可在当前PC-128与+127范围内跳转 JMP @A+DPTR 间接长跳转指令 ——可在以DPTR为基址 + A为偏移量 之和所指向的64K程序范围内跳转 控制转移类指令(续) P.67-69 条件转移: JZ,JNZ,CJNE,DJNZ——8条 JZ rel JNZ rel ——根据Acc的内容是否为0决定是否跳转 DJNZ direct,rel DJNZ Rn, rel ——将direct(或Rn)里的内容减 1,结果不等于0就跳转;等于0则不跳转继续往下走。 条件转移(续) CJNE A, #data, rel CJNE A, direct,rel CJNE @Ri,#data, rel CJNE Rn, #data, rel ——将A(或@Ri,或Rn)与#data(或direct)相比较,其值不相等就跳转;相等则不跳转,继续往下走。 控制转移类指令(续) P.70 LCALL addr16 子程序长调用指令 ——可在64K范围内调用子程序 子程序调用及返回: (LCALL,ACALL,RET,RETI——4条)
显示全部