第3章指令系统 下载本文

所谓位处理,就是以位(bit)为单位进行的运算和操作。位变量也称为布尔变量或开关变量。位操作指令是位处理器的软件资源,它是MCS-51指令系统的一个子集,用以进行位的传送、置位、清“0”、取反、位状态判跳、位逻辑运算、位输入与输出等位操作。

位处理器的硬件资源包括:

① 运算器中的ALU,与字节处理合用; ② 程序存储器,与字节处理合用;

③ 位累加器CY,它是位传送的中心。在字节处理中有一个累加器A,而位处理需要使用进位标志(CY)作为累加器,为区分起见,我们暂且把A称之为字节累加器,而把CY称之为位累加器,在指令中写作C;

④ 内部RAM位寻址区的128个可寻址位; ⑤ 专用寄存器中的可寻址位; ⑥ I/O口的可寻址位。

(一)、位传送指令组

位传送操作就是可寻址位与累加位CY之间的相互传送,共有2条指令:

MOV bit C , ;CY ←(bit) MOV C bit , ;bit ← (CY)

由于没有2个可寻址位之间的传送指令,因此它们之间无法实现直接传送。如需要这种传送,应使用这2条指令以CY作中介来实现。例如将20H位的内容传送至5AH位。

;暂存CY内容 MOV 10H , C

;20H位送CY MOV 20H C ,

;CY送5AH位 MOV C 5AH ,

;恢复CY内容 MOV 10H C ,

(二)、位置位复位指令组

这些指令对CY及可寻址位进行置位或复位操作。共有4条指令:

SETB C ;CY ←1 SETB bit ;bit ←1 CLR C ;CY ←0 CLR bit ;bit ←0

(三)、位运算指令组

位运算都是逻辑运算,有与、或、非三种,共6条指令:

;CY ← (CY)∨(bit) ANL C ,

ANL C , ;CY ← (CY)∨(bit)

;CY ← (CY)∧(bit) ORL C ,

ORL C , ;CY ← (CY) ∧(bit) CPL C , ;CY ← (CY) CPL bit , ;bit ← (bit)

在位操作指令中,没有位的异或运算如需要时可由多条上述位操作指令实现。例如E、B、D代表位地址,进行E、B内容的异或操作,结果送D。我们可按公式:

D = E?B = ?B + E? 进行异或运算,实现的程序如下:

MOV B C ,

ANL /E C , ;CY ←?B

MOV C C ,

MOV E C ,

ANL /B C , ;CY ←E? ORL D C , ;?B + ?

;异或结果送D位 MOV C D ,

此外,通过位逻辑运算还可以对各种组合逻辑电路进行模拟,即用软件方法来获得组合电路的逻辑功能。

多数位操作指令与同类字节操作指令的助记符完全相同,但位操作指令中有“C”作为操作数,可以以此作为区别。而与CLR BIT和CPL BIT两条指令相对应的只有CLR A和CPL A,不会发生混淆。最后只剩下SETB一条指令,这是位操作独有的。

(四)、位控制转移指令组

位控制转移指令是以位的状态作为实现程序转移的判断条件,对这些指令说明如下: 1.以C状态为条件的转移指令

JC rel ;(CY) = 1,转移指令,其转移控制位:

若(CY)=1,则PC ← (PC)+ 2 + rel 若(CY)≠1,则PC ← (PC)+ 2

JNC rel ;(CY) = 0,转移指令,其转移控制位:

若(CY)=0,则PC ← (PC)+ 2 + rel 若(CY)≠0,则PC ← (PC)+ 2

2.以位状态为条件的转移指令

;位状态为“1”转移 JB rel bit ,

;位状态为“0”转移 JNB rel bit ,

;位状态为“1”转移,并使该位清“0” JBC rel bit ,

这3条指令都是三字节指令,因此,如果状态满足,则程序转移:

PC ← (PC)+ 3 + rel ;

否则程序顺序执行:

PC ← (PC)+ 3 。

本章小结:

本章首先讲述了MCS-51指令的7种寻址方式,即:寄存器寻址、寄存器间接寻址、直接寻址、立即寻址、变址寻址、相对寻址和位寻址。然后详细介绍了各类指令,即:数据传送类指令、算术运算类指令、逻辑运算与移位类指令、控制转移类指令、位操作指令的格式、功能和使用方法等