Ввод двух массивов, вывод суммы элементов с заданным индексом - Assembler
Формулировка задачи:
Доброго времени суток, нужна помощь в написании программы на TASMе, суть задачи: необходимо ввести с клавиатуры комплексные числа и занести в один массив действительную часть - D, а в другой мнимую - M. Далее ввести индекс числа и вывести сумму D+M. Пример №1: Вводим числа: 2.7;3.4;5.6 Вводим индекс: 2 Выводим результат 3+4=7 Пример №2: Вводим числа: 2.7;3.4;5.6;7.9;13.8 Вводим индекс: 5 Выводим результат 13+8=21 Ограничений по способу ввода нет(максимум 100 чисел, но можно ввести как и больше так и меньше) другие варианты расчета без использования массива так же подходят, главное вводить с клавиатуры числа, затем указать индекс и посчитать сумму D+M.Заранее благодарен за помощь
Решение задачи: «Ввод двух массивов, вывод суммы элементов с заданным индексом»
textual
Листинг программы
lea si, [D] lea di, [M] mov bx, [i] shl bx, 1 mov ax, [si+bx] add ax, [di+bx] mov [Result], ax
Объяснение кода листинга программы
В данном коде происходит следующее:
- lea si, [D] - в данном выражении используется команда LEA (Load Effective Address), которая загружает в регистр SI адрес массива D.
- lea di, [M] - в данном выражении используется команда LEA, которая загружает в регистр DI адрес массива M.
- mov bx, [i] - в данном выражении используется команда MOV (Move), которая загружает в регистр BX значение переменной i.
- shl bx, 1 - в данном выражении используется команда SHL (Shift Left), которая сдвигает значение регистра BX влево на 1 бит и сохраняет результат в том же регистре.
- mov ax, [si+bx] - в данном выражении используется команда MOV, которая загружает в регистр AX значение элемента массива D, который находится по адресу SI+BX.
- add ax, [di+bx] - в данном выражении используется команда ADD (Add), которая складывает значение регистра AX с значением элемента массива M, который находится по адресу DI+BX, и сохраняет результат в регистре AX.
- mov [Result], ax - в данном выражении используется команда MOV, которая сохраняет значение регистра AX в переменной Result.