Сложение нескольких десятичных чисел - Assembler
Формулировка задачи:
Помогите выполнить казалось бы не сложное задание - "Вычислить сумму пяти чисел, расположенных начиная с адреса DS:0390. Для доступа к ячейкам памяти, содержащим числа можно воспользоваться косвенной базовой адресацией. Например, команда ADD AX, [BX] добавляет к регистру AX значение, находящееся по адресу BX.
Числа (десятичные): 62, 2548, 12, 1297, 2584.
С низкоуровневыми языками ранее не сталкивался, нужен хотя бы простой пример реализации.
Решение задачи: «Сложение нескольких десятичных чисел»
textual
Листинг программы
model tiny .code org 100h start: xor ax,ax mov cx,5 lea bx,dwArray @@01: add ax,[bx] add bx,2 loop @@01 ret org 390h dwArray dw 62, 2548, 12, 1297, 2584 end start
Объяснение кода листинга программы
- Устанавливается модель исполнения
tiny
. - Объявляется секция кода.
- Указатель инструкций устанавливается на 100h.
- Объявляется метка
start
. - Регистр
ax
очищается путем выполнения операции исключающего ИЛИ с самим собой. - В регистр
cx
записывается значение 5. - В регистр
bx
загружается адрес массиваdwArray
(dwArray указывает на первый элемент массива). - Метка
@@01
сигнализирует о начале цикла. - К значение регистра
ax
прибавляется значение, на которое указываетbx
(содержимое ячейки памяти по адресу, на который указывает регистрbx
). - Значение регистра
bx
увеличивается на 2 (чтобы указывать на следующий элемент массива, размер которого равен 2 байта). - Значение регистра
cx
уменьшается на 1 (поскольку произошло одно выполнение цикла). - Если значение регистра
cx
не равно 0, выполнение программы переходит к метке@@01
(т.е. цикл повторяется). - Если значение регистра
cx
равно 0, то все элементы массива были просуммированы. - Программа возвращается из функции.
- Указатель инструкций смещается на 390h.
- Массив
dwArray
объявляется и инициализируется значениями 62, 2548, 12, 1297, 2584. - Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д