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

6502汇编使用CMP、BNE配合TXA/TAX实现循环运行异常求助

代码问题分析及修复方案

核心错误点

  • 跳转逻辑完全写反:cmp #08 后的 bne exit 含义是「当X值不等于8时直接退出循环」。第一次循环执行inx后X值为1,和8比较不相等,直接触发跳转结束逻辑,因此仅能完成$1000第一个地址的写入。
  • 寄存器操作冗余且位置错误:tax 放在了比较判断之后,仅当X等于8时才会执行,完全没有起到循环过程中保存累加器值到X寄存器的作用,本身你用X做循环计数器的场景下,也不需要通过累加器中转做比较。

修正后代码

ldx #00
loader  lda #$08
        sta $1000,x
        inx
        cpx #08       ; 直接对X寄存器做值比较,无需中转累加器
        bne loader    ; 不等于8时跳回循环头继续写入,等于8再退出
exit    jsr*

执行流程说明

修正后循环会依次对$1000 + 0到$1000 +7共8个地址写入$08,完全符合你的预期:

  1. 初始X=0,写入$1000+0,X自增为1,和8比较不相等,返回循环头
  2. 重复执行写入、自增、比较逻辑,直到X自增到8时,比较结果相等,不触发跳转,正常退出循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 03:33:03