Добавление двух 64-битных чисел в emu8086

Я искал около одного дня, но ничего не могу найти о adding 64 bit numbers in assembly - emu8086

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

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


person Cosmin    schedule 05.03.2013    source источник
comment
Вы в основном добавляете их по 16 бит за раз, а затем включаете бит переноса в следующее добавление, например. добавьте ax, bx, adc cx, dx и так далее.   -  person 500 - Internal Server Error    schedule 05.03.2013
comment
но как я могу разделить числа на 16-битные регистры?   -  person Cosmin    schedule 06.03.2013
comment
Сохраняются ли числа в памяти? Вы можете прочитать их, 2 байта на 2 байта.   -  person osgx    schedule 06.03.2013
comment
Это должно быть что-то очень простое. Мне просто нужно объявить их и сохранить результат в другом 64-битном числе, скажем, sum. Я очень нуб в сборке. Это мой первый раз, когда я пытаюсь научиться этому. (Раньше я сделал небольшое приложение, но только со сравнением и переходами для 16-битных чисел)   -  person Cosmin    schedule 06.03.2013


Ответы (1)


Используйте 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
person Alexey Frunze    schedule 05.03.2013
comment
Большое тебе спасибо. О, я понимаю. Таким образом, в emu8086 я не могу использовать DQ (для объявления числа с 64 битами). Я просто объявляю его в 4 регистрах (по 16 бит каждый) - person Cosmin; 06.03.2013