【问题标题】:How I make an addition of two numbers of 32 bits in Assembly using ADC? [closed]如何使用 ADC 在汇编中添加两个 32 位? [关闭]
【发布时间】:2011-06-10 11:30:20
【问题描述】:

如何使用 ADC 在汇编中添加两个 32 位数字?

【问题讨论】:

  • 处理器的位数是多少?
  • 我需要在程序集中使用调试添加两个数字,程序必须接受 32 位。
  • 请举例说明这个操作。
  • 哪种架构?你认识的不止一个?

标签: assembly 32-bit add carryflag


【解决方案1】:

假设一个 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

【讨论】:

    【解决方案2】:

    ADC代表“ADd with Carry”,其实就是把两个值相加,再把进位标志的值相加:

    adc eax,ebx
    

    就像:

    add eax, ebx
    add eax, cf
    

    或:

    add eax, ebx
    jnc dont_add
    inc eax
    
    dont_add:
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      相关资源
      最近更新 更多