Решение задачки начального уровня - Assembler

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

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

Дан массив треугольников с заданными длинами своих сторон,определить периметр этих треугольников и сохранить их в массиве.N массив не больше 10 но не меньше 5. Большая просьба откликнуться сам с ассемблером дело не имею)

Решение задачи: «Решение задачки начального уровня»

textual
Листинг программы
use16
org 100h
 
mov si, src
mov di,dst
loop0:
    mov ax,[si]
    or ax,ax
    jz done
    add ax,[si+2]
    add ax,[si+4]
    mov [di],ax
    add di,2
    add si,6
    jmp loop0
done:
    ret
 
src:
    dw 1,2,3
    dw 4,5,6
    dw 7,8,9
    dw 10,11,12
    dw 13,14,15
    dw 16,17,18
    dw 19,20,21
    dw 0
    
dst:
    dw 10 dup(0)

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

Предполагается, что задание заключается в переносе данных из одного 16-байтового блока в другой. Список операций в коде:

  1. Переменная si инициализируется значением 0.
  2. Переменная di инициализируется значением 100.
  3. Цикл loop0 начинается.
  4. В каждой итерации цикла:
    • 16-битное значение в текущем байте блока src (индекс от 0 до 15) сохраняется в регистре ax.
    • Производится проверка на ноль: если значение в ax равно нулю, то цикл завершается.
    • К 16-битному значению в ax добавляется значение из следующего байта блока src (индекс от 2 до 17).
    • К 16-битному значению в ax добавляется значение из следующего байта блока src (индекс от 4 до 19).
    • Содержимое регистра ax записывается в блок dst (индекс от 100 до 115).
    • Указатель di увеличивается на 2.
    • Указатель si увеличивается на 6.
    • Цикл продолжается.
  5. Цикл завершается, и управление передается оператору ret, что приводит к возврату управления в вызывающую программу.
  6. Блок src содержит 16-байтовый массив, каждое 16-байтовое значение в котором состоит из трех 16-битных значений.
  7. Блок dst содержит 16-байтовый массив, каждое 16-байтовое значение в котором инициализировано нулями.

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


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

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

6   голосов , оценка 4.5 из 5