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

如何遍历x4000-x400A地址值并检查是否为0或1?代码求助

LC-3代码实现x4000至x400A地址值的0/1遍历检查

你当前的代码仅读取了x4000单个地址的值,缺少循环遍历的核心逻辑。要完成x4000到x400A(共11个地址)的全量检查,需要添加计数器、地址递增逻辑,并完善值的合法性判断,修正后的代码如下:

; 初始化起始地址x4000到R1
LEA R1, START_ADDR
; 设置循环计数器,x4000到x400A共11个地址,初始值为#11
LD R2, COUNT

LOOP
    ; 加载当前地址的数值到R6
    LDR R6, R1, #0
    ; 数值为负数直接跳转至异常处理
    BRn BREAK
    ; 将数值减1,判断是否大于1:原数>1时,减1后仍为正数
    ADD R6, R6, #-1
    BRp BREAK
    ; 地址指针递增,指向下一个待检查单元
    ADD R1, R1, #1
    ; 计数器减1
    ADD R2, R2, #-1
    ; 计数器不为0则继续循环
    BRnp LOOP

; 所有地址检查通过后的执行逻辑(可按需补充)
; ...

BREAK
    ; 数值不符合0/1要求时的异常处理逻辑
    ; ...

START_ADDR .FILL x4000
COUNT .FILL #11

关键改进说明:

  • 循环计数器:用R2记录需要检查的地址总数(11个),每次循环后递减,直到计数器归零时终止循环,确保遍历所有目标地址
  • 地址递增:每次循环执行ADD R1, R1, #1,让地址寄存器R1依次指向x4000、x4001……x400A
  • 合法性校验:
    • BRn BREAK:直接过滤负数(0和1均为非负数)
    • 先将数值减1再用BRp BREAK:原数为1时减1后为0,不会触发跳转;原数大于1时减1后仍为正数,触发异常跳转

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:53:27