在本节中,我们将看到使用8051进行一些位操作的操作。8051支持对8位数字的不同位进行的某些操作。这些操作类似于补码,设置为1,移动,与,或运算等。
在此示例中,我们从位置10H取一个AEH,然后对该数据执行以下与位相关的操作后,我们仅将结果存储在位置30H中。
将对该数据执行的与位相关的操作如下-
补码b 2
将b 5移至b 4
或b0和b 1的 补码并存储到C(b 7)
设定b 6
重置位b 3
位位置 | b 7 | b 6 | b 5 | b 4 | b 3 | b 2 | b 1 | b 0 |
---|---|---|---|---|---|---|---|---|
值 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 0 |
输出结果
位位置 | b 7 | b 6 | b 5 | b 4 | b 3 | b 2 | b 1 | b 0 |
---|---|---|---|---|---|---|---|---|
值 | 0 | 1 | 1 | 1 | 0 | 0 | 1 | 0 |
输出为72H
MOV24H,10H;Copy item from 10H to 24H CPL24.2;Complement bit b2 MOVC,24.5;Copy b5 to C MOV24.4,C;Move C to b4 MOVC,24.0;Make copy of b0 to C ORLC,/1;OR C and complement of b1 SETB24.6;Set bit b6 CLR24.3;Reset bit b3 MOV30H,24H; Store the result at 30H HALT: SJMP HALT
从程序中,我们可以轻松获得逻辑。要使用位可寻址操作,我们必须访问20H到2FH的位置。这16个字节用于位可寻址操作。
在位可寻址操作中,进位标志的作用类似于1位累加器。
输出结果
地址 | 值 |
---|---|
。 。 。 | |
10小时 | AEH |
11小时 | |
。 。 。 | |
30小时 | 72小时 |
31小时 | |
。 。 。 |