Цикл с суммой на ассамблере - Assembler

Узнай цену своей работы

Формулировка задачи:

Написать программу создающую массив из 6 чисел и вычисляющую выражение : х1+(х1+х2)+(х1+х2+х3)+...+(х1+х2+х3+х4+х5+х6)

Решение задачи: «Цикл с суммой на ассамблере»

textual
Листинг программы
    org 100h
    mov ecx,6
    mov ebx,[x1]
@@: rdtsc
    shr eax, cl
    add ebx,eax
    loop    @B
    mov [x1], ebx
    ret
x1: dd  0DEADC0DEh

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

Отмечу, что перед вами код на языке ассемблера 32-битной системы с плавающей точкой, написанный под Windows (указатель на строку x1 содержит смещение от базового адреса в 10000000h).

  1. Устанавливаем указатель на начало цикла на адрес 100h.
  2. Задаём счётчик повторений цикла 6.
  3. Задаём начальное значение переменной ebx равным значению переменной x1.
  4. Используем инструкцию rdtsc для получения текущего значения счётчика процессора.
  5. Помещаем результат в eax, выполняя сигнальное сдвигание на количество бит, равное значению переменной ecx (в данном случае 6).
  6. Прибавляем значение переменной ebx к результату предыдущей операции.
  7. Выполняем переход к началу цикла (код после @B будет выполняться до тех пор, пока не будет выполнено условие перехода).
  8. Записываем в память по адресу x1 итоговое значение переменной ebx.
  9. Завершаем работу функции (код после ret будет выполнен без дополнительной итерации цикла).
  10. Указываем, что переменная x1 содержит значение 0DEADC0DEh.

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


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

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

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