Сложение нескольких десятичных чисел - 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

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

  1. Устанавливается модель исполнения tiny.
  2. Объявляется секция кода.
  3. Указатель инструкций устанавливается на 100h.
  4. Объявляется метка start.
  5. Регистр ax очищается путем выполнения операции исключающего ИЛИ с самим собой.
  6. В регистр cx записывается значение 5.
  7. В регистр bx загружается адрес массива dwArray (dwArray указывает на первый элемент массива).
  8. Метка @@01 сигнализирует о начале цикла.
  9. К значение регистра ax прибавляется значение, на которое указывает bx (содержимое ячейки памяти по адресу, на который указывает регистр bx).
  10. Значение регистра bx увеличивается на 2 (чтобы указывать на следующий элемент массива, размер которого равен 2 байта).
  11. Значение регистра cx уменьшается на 1 (поскольку произошло одно выполнение цикла).
  12. Если значение регистра cx не равно 0, выполнение программы переходит к метке @@01 (т.е. цикл повторяется).
  13. Если значение регистра cx равно 0, то все элементы массива были просуммированы.
  14. Программа возвращается из функции.
  15. Указатель инструкций смещается на 390h.
  16. Массив dwArray объявляется и инициализируется значениями 62, 2548, 12, 1297, 2584.
  17. Конец программы.

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

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