You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AQA A-level计算机科学学生:EOR指令位修改正确性咨询

分析你的汇编代码问题

首先明确需求:将8位二进制值0011abcd修改为0000abcd,核心是清除高4位中的11(对应第5、4位,从0开始计数),同时保留低4位abcd不变。

你的代码EOR R1, R1, #00110000B在逻辑上能得到正确结果:原数高4位是0011,与00110000B异或后,0^0=0、0^0=0、1^1=0、1^1=0,低4位abcd与0000异或后保持不变,最终确实能得到0000abcd。

但你没得分的可能原因有两个:

  • 寄存器不匹配:你提到指令集中该指令是操作R0,但代码里误用了R1,这是明显的语法/逻辑错误,考试中寄存器使用错误会直接导致丢分。
  • 不符合考试预期的位操作规范:在AQA A-level计算机科学的考核中,清除指定位的标准方法是使用AND指令配合掩码。正确的AND指令写法应为AND R0, R0, #11001111B(或十六进制#0xCF)——AND操作中,与1相与会保留原位值,与0相与则清零目标位,这是行业内清除位的常规实现方式;而异或指令更多用于翻转位,虽然本次逻辑可行,但考试可能要求使用标准的位清除方案。

如果你的寄存器是笔误(应该写R0而非R1),那逻辑本身是正确的,但考试可能更认可符合规范的AND写法;如果寄存器确实写错了,那这就是丢分的直接原因。

内容的提问来源于stack exchange,提问作者Paolo Mancini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 11:12:03