Pointers 仅更改一个字节的2位(8051)

Pointers 仅更改一个字节的2位(8051),pointers,byte,microcontroller,bit,8051,Pointers,Byte,Microcontroller,Bit,8051,我试图用最少数量的变量来修改一个字节中的两个连续位 存储器的组织方式如下: aabbccdd eeffgghh iijjkkll mmnnoopp qqrrsstt uuvvwwxx 每组字母代表一个字节,每个字母代表一个插槽,我可以在其中存储一个2位值 到目前为止,我能够给出部分答案,因为这段代码从未将新的零位写入所需的插槽。只有一个 MEMORY equ 30h ;pointer to ram SLOTNO equ 8h ;2-bit Slot unit we want m

我试图用最少数量的变量来修改一个字节中的两个连续位

存储器的组织方式如下:

aabbccdd eeffgghh iijjkkll mmnnoopp qqrrsstt uuvvwwxx
每组字母代表一个字节,每个字母代表一个插槽,我可以在其中存储一个2位值

到目前为止,我能够给出部分答案,因为这段代码从未将新的零位写入所需的插槽。只有一个

  MEMORY equ 30h ;pointer to ram
  SLOTNO equ 8h  ;2-bit Slot unit we want

  mov A,#SLOTNO
  rrc A
  jnc noc
    xch A,R2
    rl A
    rl A
    xch A,R2
  noc:
  rrc A
  jnc noc2
    xch A,R2
    swap A
    xch A,R2
  noc2:
  add A,#MEMORY
  mov R1,A ;R1 = memory pointer + (slot # / 4)
  mov A,@R1
  orl A,R2 ;put the 2 bits in
  mov @R1,A
是否有任何方法可以在不需要第三个内存字节的情况下执行此操作(在本例中,第三个内存字节是寄存器R2)

确保存储正确的2位数据的最简单方法是什么


我正在为AT89C4051微控制器编程,内存不足。

请提供要编写的代码的用法,如一些示例调用。--您知道内部RAM中的位可寻址空间吗?也许这会解决你的问题。哪个内存已满?代码、SRAM或寄存器@BusyBee:我认为8051只知道字节级的间接寻址,而不是按位寻址。没错,但OP可能不需要它。对我来说,这看起来像一个X-Y问题,这就是为什么我要举个例子。