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