目前我正在使用学校提供的指令数量有限的芯片。我想要实现的是首先用掩码切换一个位然后将一些位设置为零。只有3条指令:AND,OR,XOR。 (没有SHIFT NOT指令)
例如
0001 1001 // toggle bit 5
0000 1001
0001 1001 // set bit 1 to 0
0001 1000
我正在尝试使用H桥生成PWM。
修正:
; toggle bits
LOAD R0 [GB+OUTPUT_BUF]
XOR R0 CONV_FORW_MASK
XOR R0 FLIP_FORW_MASK
XOR R0 PUSH_FORW_MASK
XOR R0 PUSH_BACK_MASK
; set mask bit to zero
LOAD R1 PUSH_FORW_MASK
XOR R1 -1
AND R0 [R1]
答案 0 :(得分:1)
实际上,一条指令NAND(与结果反转的AND)就足够了,因为你可以从其中4条指令构建一个XOR(提示,提示)。 我建议通过尝试仅从NAND构建XOR来开始锻炼。然后其余部分可能会自行落实到位。
答案 1 :(得分:1)
在C中它将是:
unsigned char byte = 0x19;
unsigned char bit_set = (0x01 & byte) ^ byte;
unsigned char bit_toggle = ((byte ^ 0x10) & 0x10);
byte = ( byte & 0xEF ) | bit_toggle ;
现在转换为汇编。