Как сделать сложение двух чисел по 32 бита в сборке с использованием АЦП?
Как сделать сложение двух чисел по 32 бита в сборке с использованием АЦП?
2 ответа
Предполагая, что 8-разрядный процессор с регистрами ld, st, adc и add и index и 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
ADC
расшифровывается как "ADd with Carry", фактически это похоже на добавление двух значений и добавление значения флага переноса:
adc eax,ebx
как:
add eax, ebx
add eax, cf
или же:
add eax, ebx
jnc dont_add
inc eax
dont_add:
...