Склеить число из трех переменных - 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
    }

Объяснение кода листинга программы

  1. Создаются три переменные A1, A2, A3 со значениями 15697, 19123, 12345 соответственно.
  2. Создаются три переменные B1, B2, B3 со значениями 12345, 12345, 12345 соответственно.
  3. Создаются три переменные C1, C2, C3 со значениями 0, 0, 0 соответственно.
  4. В блоке _asm происходит следующее:
    • Значение переменной A1 добавляется к значению переменной B1, результат сохраняется в C1.
    • Значение переменной A2 добавляется к значению переменной B2, результат сохраняется в C2.
    • Значение переменной A3 добавляется к значению переменной B3, результат сохраняется в C3.
    • А также последние три строки кода выполняют операции с переменными C3 и ans_all. Предположительно, код написан на ассемблере для среды, в которой переменные C1, C2 и C3 могут быть обработаны программой.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5
Похожие ответы