Перестроить код на основе команды loop

Нужно перестроить код. Вместо ;!!! перестроить код на основе команды loop

title cycle
model small
stack 100h
.data
n equ 5
mas db n dup (?)
sum db ?
.code
start:
mov ax,@data
mov ds,ax
xor dx,dx
xor bx,bx
xor cx,cx
mov bx, offset mas
m1: inc cx
mov [bx],cx
inc bx
cmp cx,5
jb m1
;!!!
m2: dec cx
dec bx
add dl, [bx]
jcxz m3
jmp m2
;!!!
m3: mov sum, dl
mov ax,4c00h
int 21h
end start

Ответы (1 шт):

Автор решения: insolor

По идее достаточно заменить две команды

jcxz m3
jmp m2

на одну loop m2 и убрать dec cx (т.к. loop сам уменьшает cx). Изначально можно было эти два перехода написать одной инструкцией: jcxnz n2 - т.е. переход, если cx не равен 0.

→ Ссылка