Найти сумму произведений индексов цикла - Assembler

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

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

Требуется найти сумму произведений индексов цикла. Т.е нужно создать двойной цикл, внутри цикла перемножить индексы и прибавить произведение к s. Вот на делфи код
s:=0;
p:=1;
 
for i:=n downto 1 do
for j:=m downto 1 do
begin
p:=i*j;
s:=s+p;
end;
writeln(s);
Вот что получилось на асм, не знаю, что делать дальше
include io.asm
sstack segment stack
db 100 dup(?)
sstack ends
sdata segment
a dw ?
x dw ?
i db ?
k db ?
m db ?
n db ?
s dw ?
p dw ?
 
sdata ends
scode segment
assume cs:scode,ds:sdata,ss:sstack
start:
 
mov ax, sdata
mov ds,ax
 
mov n,3
mov m,4
mov i,1
mov k,1

mov cx,3;
 
mov s,0 ;obnulyaem summu
mov p,1 ;nachalnoe proizvedeniye ravno 0

i1:mov bx,cx
k1:
mov ax,p
mov ax,cx
mul bx
add 

add ax,

;;

;;
 
cmp cx,1
jne i1
mov cx,bx ;schetchuk

loop k1
mov cx,bx
loop i1

finish
scode ends
end start
Никто не знает ассемблер?

Решение задачи: «Найти сумму произведений индексов цикла»

textual
Листинг программы
        mov     ebx,0
        mov     ecx,[n]
mn:
;        push    ecx
        mov     esi,ecx
 
        mov     ecx,[m]
mm:
;        pop     eax
;        push    eax
        mov     eax,esi
        mul     ecx
        add     ebx,eax
        loop    mm
 
;        pop     ecx
        mov     ecx,esi
        loop    mn

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

  1. Вначале, значение переменной n (количество итераций первого цикла) сохраняется в регистре ecx.
  2. Затем, запускается цикл, который выполняется n раз.
  3. Внутри цикла, значение переменной m (количество итераций второго цикла) сохраняется в регистре ecx.
  4. Затем, второй цикл запускается столько раз, сколько указано в переменной m.
  5. Внутри второго цикла, результат умножения ecx и eax (где eax содержит значение переменной m) добавляется к переменной ebx (которая инициализирована нулем).
  6. После завершения второго цикла, значение переменной m сохраняется обратно в регистр ecx.
  7. После завершения первого цикла, значение переменной n сохраняется обратно в регистр ecx.
  8. Затем, происходит выход из программы.

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


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

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

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