【发布时间】:2013-10-05 03:53:24
【问题描述】:
在8086汇编编程中,我们只能将数据加载到段寄存器中,首先将其加载到通用寄存器中,然后我们必须将其从该通用寄存器移动到段寄存器中。
为什么不能直接加载呢?不被允许有什么特殊原因吗?
mov ax,5000H 和 mov ax,[5000H] 有什么区别? [5000h] 是否表示内存位置 5000h 中的内容?
【问题讨论】:
-
这个问题似乎离题了,因为它是关于一个 30 年历史的处理器的设计理念。
-
@MikeW:这怎么跑题了?如果这个人正在为 8086 编程,为什么不可以在这方面寻求帮助呢?他在问一个实际的问题。如果我问“为什么我不能写入 C 中的任意内存位置?”你会出于同样的原因投票关闭它吗?几乎任何问题都可以概括为“设计决策”。这并不意味着不值得问和知道答案。是的,这里的人都变得如此笨拙地按下关闭按钮。
-
@EdS。 OP 询问为什么不允许某个操作 - 因为工程师是这样设计的。指令集就是这样。争论它是否应该是别的东西不会改变它,也不会帮助编程。
-
@MikeW:是的,你可以用同样的回答“回答”这里大约 90% 的问题。当然,您实际上不会帮助任何人,也不会让网站变得更好。每个设计选择都有其背后的原因(希望如此!),这些原因值得了解。我宁愿让一些有问题的问题溜走(我认为这个问题不属于该类别),而不是拒绝可能有助于其他人的有用问题。
-
@EdS.:在所有模式下都允许写入段寄存器。
标签: assembly x86 x86-16 cpu-registers instruction-set