Не понимаю как пройтись по массиву
Я хочу пройтись по массиву чисел duration с помощью регистра si. Но у меня не выходит правильно. Если я передаю лишь одно число dur, то оно работает нормально, если хочу проитерировать, то оно зависает и больше ничего. Объясните ошибку. Спасибо!
sseg segment stack
db 256 dup(?)
sseg ends
dseg segment
music dw 4063, 2559, 3835
duration dd 270000, 360000, 180000
dur dd 270000
len dw 3
dseg ends
cseg segment
assume ss:sseg,cs:cseg,ds:dseg
start: jmp main
main: push ds
xor ax,ax
push ax
mov ax,dseg
mov ds,ax
cli
;------------------------------
xor di,di
xor si,si
cycle:
mov al,10110110b
out 43h,al
in al,61h
or al,3
out 61h,al
;------------
mov ax,music[si]
out 42h,al
mov al,ah
out 42h,al
les dx,dur ;duratin[si]
mov cx,es
mov ah,86h
int 15h
;------------
in al,61h
and al,11111100b
out 61h,al
;------------
inc si
inc di
cmp si,len
jnae cycle
;------------------------------
exit:
sti
mov ax,4c00h
int 21h
cseg ends
end start