2013-03-05 7 views
0

Я искал в течение одного дня, но я не могу найти ничего о adding 64 bit numbers in assembly - emu8086Сложение двух 64 битных чисел в EMU8086

Как я могу это сделать?

Мои регистры всего 16 бит, и у меня есть 2 числа из 64 бит. Приложение, которое я использую, это emu8086. (это для школьного проекта)

+4

Вы в основном добавляете их по 16 бит за раз, затем включаете бит переноса в следующем добавлении, например. добавьте ax, bx, adc cx, dx и т. д. –

+0

, но как я могу разделить числа на 16-битные регистры? – Kosmog

+0

Сохранены ли в памяти числа? Вы можете прочитать их, 2 байта на 2 байта. – osgx

ответ

5

Использовать adc для распространения переводов между отдельными 16-битными дополнениями. Следующее добавит номер 2 из памяти в номер 1 в памяти:

mov ax, [num1_bits0_15] 
add ax, [num2_bits0_15] 
mov [num1_bits0_15], ax 

mov ax, [num1_bits16_31] 
adc ax, [num2_bits16_31] 
mov [num1_bits16_31], ax 

mov ax, [num1_bits32_47] 
adc ax, [num2_bits32_47] 
mov [num1_bits32_47], ax 

mov ax, [num1_bits48_63] 
adc ax, [num2_bits48_63] 
mov [num1_bits48_63], ax 
+0

Большое спасибо. О, я понимаю. Поэтому в emu8086 я не могу использовать DQ (объявить число с 64-битным). Я просто объявляю его в 4 регистрах (по 16 бит) – Kosmog

Смежные вопросы