问题描述
为什么我不能使用 SETB
在 P1MDOUT
中设置位?另外,我将如何用汇编语言展示如何设置 P1MDOUT
的第 0 位和第 6 位(保持其他 6 位不变)。
解决方法
为什么我不能在 P1MDOUT 中使用 SETB
设置位?
考虑:
-
SETB
指令用于设置 256 个可直接访问的位之一。 - 特殊功能寄存器 (SFR) P1MDOUT 位于地址 0xA5。
- 地址以 0x0 或 0x8 结尾的 SFR 既可按位寻址,也可按字节寻址。所有其他 SFR 只能按字节寻址。
我们可以得出结论,SFR P1MDOUT 只能按字节寻址,因为它的地址以 0x5 结尾。因此我们不能使用保留用于操作位寻址寄存器和内部存储器范围从 20h 到 2Fh 的 SETB
指令。
另外,我将如何用汇编语言显示如何设置 P1MDOUT 的第 0 位和第 6 位(保持其他 6 位不变)。
ORL 0xA5,#0x41