如何使用 ADC 在汇编中对两个 32 位数字进行加法?

发布于 2024-10-12 13:18:30 字数 1435 浏览 6 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

邮友 2024-10-19 13:18:30

假设 8 位处理器具有 ld、st、adc 以及加法和索引寄存器 X & Y 指向要相加的值,结果替换 *X:

ld 3,X
add 3,Y   ; The first add is without carry
st 3,X
ld 2,X
adc 2,Y   ; subsequent adds propagate carry.
st 2,X
ld 1,X
adc 1,Y
st 1,X
ld 0,X
adc 0,Y
st 0,X

Assuming an 8 bit processor with ld, st, adc and add and index registers X & Y which point to the values to be added, result replaces *X:

ld 3,X
add 3,Y   ; The first add is without carry
st 3,X
ld 2,X
adc 2,Y   ; subsequent adds propagate carry.
st 2,X
ld 1,X
adc 1,Y
st 1,X
ld 0,X
adc 0,Y
st 0,X
凉世弥音 2024-10-19 13:18:30

ADC 代表“ADd with Carry”,实际上就像将两个值相加,然后再将进位标志的值相加:

adc eax,ebx

就像:

add eax, ebx
add eax, cf

或:

add eax, ebx
jnc dont_add
inc eax

dont_add:
...

ADC stands for "ADd with Carry", in fact it is like add two values and add again the value of the carry flag:

adc eax,ebx

is like:

add eax, ebx
add eax, cf

or:

add eax, ebx
jnc dont_add
inc eax

dont_add:
...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文