首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >6502程序集问题:当一串计算中有多个SBC时,我是否应该为每个SBC有一个SEC实例?

6502程序集问题:当一串计算中有多个SBC时,我是否应该为每个SBC有一个SEC实例?
EN

Stack Overflow用户
提问于 2022-10-17 13:31:09
回答 2查看 62关注 0票数 3

根据本网站的说法,在CLC的“主要用途”项下,它指出:

如果要添加一系列内容(多字节加法),则只有第一个ADC前面有CLC,因为进位特性是必要的。

SBC的“主要用途”中,它指出:

您总是在SEC操作之前设置SBC (设置进位标志),以便判断是否需要“借入”。

换句话说,对于一系列连续的ADC操作,在第一个操作之前只需要一个CLC,但是在一系列连续的SBC操作之前,应该在每个操作之前都有一个SEC。这是正确的吗?

EN

回答 2

Stack Overflow用户

发布于 2022-10-17 14:00:32

如果要添加一系列内容(多字节加法),则只有第一个ADC位于CLC之前,因为进位特性是必需的。

这写起来有点误导人。如果您正在使用一系列的ADC来实现多精度加法,例如添加两个16位或32位数字,那么您确实希望在第一个数字之前使用CLC。但是,如果您有几个连续的ADC正在添加不相关的8位数字,那么您希望在每个数字之前都有一个CLC。否则,一个加法的进位将被传播到一个不相关的和。

那么,SBC的情况完全类似。如果你正在做几个不相关的8位减法,你想要在每一个之前进行SEC。如果您正在使用一系列SBC来实现16位或32位减法等,那么您只需要在第一位之前使用SEC。

票数 9
EN

Stack Overflow用户

发布于 2022-10-24 09:22:15

6502中的加法和减号没有区别。因此,CLCSBC的行为是一样的。在下一次操作之前清除或设置进位标志完全由您决定。您还应该理解CLC可以与子字符串一起使用,SBC可以与加法一起使用。例如;

代码语言:javascript
运行
复制
lda #$40
clc
adc $10
sta $1000
inc $1000

在本例中,我们将$10内存地址值添加到$40,然后将结束结果增加一个。相反,我们可以这样做。

代码语言:javascript
运行
复制
lda #$40
sec
adc $10
sta $1000

这将给出相同的结果,而不需要额外的INC操作。

CLCSEC用例非常相似,与您最初的问题没有什么区别。但是,您不应该直接将它们与加法和减法相关联。你应该经常问一个问题:“在这个阶段,我需要哪种状态?”如果需要,请相应地使用CLCSEC

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74098124

复制
相关文章

相似问题

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