Сложение нескольких десятичных чисел - 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. - Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д