当前位置: 首页 > 知识库问答 >
问题:

加载段寄存器时的异或ax,ax[重复]

宰父远
2023-03-14

我正在尝试编写一个引导加载程序,我正在编写的所有代码都在实模式下运行。在我发现的所有示例中,要么是xor ax, ax要么是xor eax, eax,我不明白这是在做什么。它似乎与设置段寄存器有关,但我不清楚是什么。

共有2个答案

卫烨烁
2023-03-14

xor ax, ax将与mov ax,0执行相同的操作,但具有将标志设置为零并根据xor的逻辑清除进位的额外功能。并且xormov在某些旧架构中消耗的时钟更少。

mov-eax,eax将占用字节码中的5个字节,其中xor-eax,eax将占用2个字节。

颛孙天宇
2023-03-14

异或指令是异或

检查异或真值表异或

xor eax, eax ; Set eax to 0
mov eax, 0   ; Set eax to 0

我不是百分之百确定,但我认为使用异或是因为一些历史原因。

 类似资料:
  • 所以,我有两个问题: > 我认为这种尴尬的行为必须在某个地方记录下来,但我似乎找不到详细的解释(关于64位寄存器的32位高值是如何被清除的)。对的写入总是擦除,还是更复杂?它是否适用于所有64位寄存器,或者有一些例外? 一个非常相关的问题提到了同样的行为,但是,唉,再次没有确切的文档参考。 只是我,还是这整件事看起来真的很奇怪和不合逻辑(即eax-ax-ah-al,rax-ax-ah-al有一种行

  • MariaDB AX 是从商业智能,报告和数据挖掘到决策支持系统和推荐引擎的企业级开源解决方案。它提供了现代化的分析和数据仓库,降低数据仓库和硬件设备的成本和减少复杂性。 MariaDB AX 通过分布式,列式存储和并行查询处理将MariaDB服务器扩展到可扩展,高性能的分析工作负载,并在最新版本中引入了批量和流式数据适配器,以简化数据收集和导入过程 - 实时。 MariaDB AX现在可以与Ma

  • 哪个对象包含属性?在下面的代码中(我已经导入了所需的软件包,并且正确地绘制了和图),为了设置y轴限制,我必须使用,为什么会这样?在我自己的头脑中,我会使用因为y轴属于ax对象实例。有人能解释一下为什么这是不正确的吗? 我在这里看到这个帖子: 为什么很多例子在Matplotlib/pyplot/python中使用"fig, ax=plt.subplots()" 这有助于澄清一点,但我仍然不确定。谢谢

  • 3、段寄存器的引用 段寄存器是因为对内存的分段管理而设置的。16位CPU有四个段寄存器,所以,其程序可同时访问四个不同含义的段。段寄存器及其偏移量的引用关系如图2.7所示。 段寄存器CS指向存放程序的内存段,IP是用来存放下条待执行的指令在该段的偏移量,把它们合在一起可在该内存段内取到下次要执行的指令。 段寄存器SS指向用于堆栈的内存段,SP是用来指向该堆栈的栈顶,把它们合在一起可访问栈顶单元。另

  • 我的页面的文件夹 我想使用spl_自动加载_寄存器() 我得到跟随消息。 如果插入 在顶部 一切都是工作。 我想加载所有类与spl_autoload_register()只有没有插入 在上面。我怎么能做到呢???

  • 具体是: 注意,我关心的是旧的x86 linux CPU,而不是现代的x86_64 CPU,那里的分段工作方式不同。