Склеить число из трех переменных - Assembler
Формулировка задачи:
Доброго времени суток. Появилась необходимость склеить число, части которого находятся в трех переменных типа __int16 (16 бит) в одну переменную.
Например, имеем переменные С1 = 123, С2=456, С3=789 (тип __int16)
Нужно получить одну переменную A, которая будет равна 123456789. Тип переменной A неважен.
Знаю про то, что можно использовать word ptr, но никак не могу понять, как работает эта штука.
Прошу благодарен любой помощи
Решение задачи: «Склеить число из трех переменных»
textual
Листинг программы
- __int16 A1 = 15697, A2 = 19123, A3 = 12345;
- __int16 B1 = 12345, B2 = 12345, B3 = 12345;
- __int16 C1 = 0, C2 = 0, C3 = 0;
- _asm
- {
- mov ax, A1
- add ax, B1
- mov C1, ax
- mov ax, A2
- adc ax, B2
- mov C2, ax
- mov ax, A3
- adc ax, B3
- mov C3, ax
- xor ax, ax
- xor dx, dx
- add ax, word ptr C3
- mov word ptr ans_all, ax
- }
Объяснение кода листинга программы
- Создаются три переменные A1, A2, A3 со значениями
15697
,19123
,12345
соответственно. - Создаются три переменные B1, B2, B3 со значениями
12345
,12345
,12345
соответственно. - Создаются три переменные C1, C2, C3 со значениями
0
,0
,0
соответственно. - В блоке _asm происходит следующее:
- Значение переменной A1 добавляется к значению переменной B1, результат сохраняется в C1.
- Значение переменной A2 добавляется к значению переменной B2, результат сохраняется в C2.
- Значение переменной A3 добавляется к значению переменной B3, результат сохраняется в C3.
- А также последние три строки кода выполняют операции с переменными C3 и ans_all. Предположительно, код написан на ассемблере для среды, в которой переменные C1, C2 и C3 могут быть обработаны программой.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д