LOW() HIGH() 使用变量而不是值

LOW() HIGH() to use variable instead of value

我知道这是我们使用 LOW() 和 HIGH() 运算符的方式:

MOV P3,#LOW(-10)

但是,如果 -10 是变量或端口之一的输入怎么办?这就是我需要的:

MOV P3,#LOW(P0)

这是行不通的。 Edsim51 模拟器说需要一个标签。但我不认为我怎么能在这里使用标签,也许它意味着一个函数标签,我试过了,但据我所知,我们不能 return 来自函数的值,所以我仍然不知道在这里不知道如何使用函数标签。

MOV P3,#LOW(func)
func:
RET P0

这是不正确的。

这是我在互联网上唯一能找到的,只是对这个问题的讨论:https://community.arm.com/developer/tools-software/tools/f/keil-forum/22073/how-to-use-low-or-high-in-a51

在官方文档中,我什至在任何地方都找不到 LOW() 和 HIGH() 运算符,这对我来说很奇怪:https://www.keil.com/support/man/docs/is51/is51_instructions.htm

  1. 你不知道。
  2. 没道理,只有一个字节宽的东西怎么取低字节或高字节开始?
  3. 您没有在官方说明文档中找到它们,因为它们不是说明。 CPU 永远不会看到它们。它们只是汇编程序的快捷方式。 MOV P3, #LOW(-10) 只是另一种写 MOV P3, #246 的方式,它使程序员的意图更加清晰。