首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我不明白SBC是怎么回事

我不明白SBC是怎么回事
EN

Stack Overflow用户
提问于 2018-02-25 08:49:48
回答 3查看 848关注 0票数 2

我刚刚开始学习6502,因为我想创建一个Atari 2600游戏。

我试过这样的代码:

代码语言:javascript
复制
LDA #$01
STA $01
LDX #$02
TXA
SBC $01
BRK

我得到了值A=$00,标志Z和C设置为1,但我认为A中的值必须是01美元。

如果我更改值是因为我可能做错了减法:

代码语言:javascript
复制
LDA #$02
STA $01
LDX #$01
TXA
SBC $01
BRK

我得到值A=$fe,并将标志N设置为1。

发生什么事了呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-02-25 09:38:37

SBC用进位减去。如果C在SBC指令之前为0,它会比您预期的多减去一个。

把证券交易提交给SBC。

票数 5
EN

Stack Overflow用户

发布于 2018-02-25 09:38:43

进位标志是SBC指令的输入,将其设置为1,执行减法而不借用。

票数 2
EN

Stack Overflow用户

发布于 2018-02-26 14:54:07

这里的指令集很清楚:http://www.obelisk.me.uk/6502/reference.html#SBC。上面写着:

此指令将内存位置的内容与进位位的非一起减去累加器。

为了避免这个问题,请始终在SEC之前使用SBC指令,如下所示:

代码语言:javascript
复制
LDA #$01
STA $01
LDX #$02
TXA
SEC        ; for correct next subtraction with SBC
SBC $01
BRK
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48971814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档