单片机原理及应用 第三章 80C51单片机的指令系统课件.ppt
文本预览下载声明
单片机原理及应用 北京化工大学 信息科学与技术学院 主讲教师:林伟国 E-mail: linwg@mail.buct.edu,cn 第三章 MCS-51指令系统 (A) 0 1 0 1 0 1 1 0 +(R3) 0 1 1 0 0 1 1 1 1 0 1 1 1 1 0 1 A3~09,AC=0 A7~49,C=0 +66H调整 + 0 1 1 0 0 1 1 0 0 0 1 0 0 0 1 1 结果: (A)=23H (C)=1 对于无符号BCD码运算,56+67=123 使用此指令条件: 1、两个操作数均为压缩BCD码 2、不适合减法和增1运算 例:对于十进制减法运算,可采用补码相加的方法 即用9AH减去减数得到以十为模的补码 设被减数存30H单元,减数存40H单元,结果存50H单元。程序如下: CLR C ; MOV A,#9AH; SUBB A, 40H ; ADD A , 30H; DA A ; MOV 50H, A 清进位位 求减数的十补码 补码相加 调整至BCD码 第五节 逻辑运算类指令 按操作数分为两类: 单操作数指令 双操作数指令 针对累加器A进行 A与第二操作数之间进行 操作:清零、求反、移位,与、或、异或 一、单操作数逻辑运算类指令 1、累加器A清零指令 CLR A; (A) 0 2、累加器求反指令 CPL A; (A) (A) 例:设(A)=0AAH) 执行:CPL A 结果: (A)(55H) 3、累加器A循环左移指令 RL A; 4、累加器A连同进位位C循环左移指令 RLC A; 例: (A)=0C5H(1100 0101B) RL A (A)=1000 1011B=8BH 例: (A)=45H(0100 0101 B),(C)=1 RLC A ; (A)=1000 1011B=8BH (C)=0 5、累加器A循环右移指令 RR A ; 6、累加器A连同进位位C循环右移指令 RRC A ; 例: (A)=0C5H(1100 0101B),(C)=1 执行指令: RRC A 结果: (A)=1110 0010B=0E2H (C)=1 二、双操作数逻辑运算类指令 1、逻辑“与”指令 ANL A , Rn ANL A , direct ANL A , @Ri ANL A , #data 以A为第一操作数,逻辑“与”运算的结果存入A ANL direct,A ANL direct,#data 目的操作数为direct,源操作数为A和立即数 与指令常用于屏蔽某些不用位。 方法是将该位与“0”相“与”,保留位与“1”相“与” 如 ANL A,#1111 0000B; 屏蔽低4位,高4位不变 2、逻辑“或”指令 ORL A , Rn ORL A , direct ORL A , @Ri ORL A , #data ORL direct , A ORL direct , #data ORL指令常用于使字节中某些位置1 方法:欲置1的位与“1”相或,欲保留不变的位与“0”相或 如 ORL A,#0FH; 高4位不变,低4位置1 3、逻辑“异或”指令 XRL A , Rn XRL A , direct XRL A , @Ri XRL A , #data XRL direct , A XRL direct , #data XRL 指令可用于对某些位取反 方法:欲取反的位用“1”去异或,保留位用“0”去异或 如 XRL A,#0FH;高4位不变,低4位取反 例: 设(A)=0C3H(1100 0011B) (R0)=0AAH(1010 1010B) 分别执行以下指令: ANL A,R0 ; ORL A,R0 ; XRL A,R0 ; (A)=1000 0010B=82H (A)=1110 1011B=0EBH (A)=0110 1001B=69H 第六节 控制转移类指令 3类: 无条件转移 条件转移 子程序调用及返回 一、无条件转移指令 1、绝对无条件转移 AJMP addr11; (PC) (PC)+2 (PC 0~10) addr 0~10 (PC 11~15)不变
显示全部