Содержимое элемента внешнего массива в сборке x86 - PullRequest
0 голосов
/ 25 января 2019

Итак, у меня есть программа сборки, которая изменяет содержимое массива.Каково содержимое массива и каково значение array_length после выполнения?
Проблема в том, что при втором вызове процедуры Procm si = 10, затем si = 16, но длина моего массива равна 9. Какое содержимоетопора после мова ax, массив [si]?Содержимое адреса памяти?

DOSSEG
.MODEL SMALL
.STACK 200h
.DATA
array dw 9 ,8 ,7 ,6 ,5 ,4 ,3 ,2 ,1
array_length EQU $-array
l1 EQU 3

.CODE

    start: mov ax, @DATA
    mov ds, ax
    mov si, 2*l1-2
    call Procm
    mov si, 4*l1-2
    call Procm
    mov si, 6*l1-2
    call Procm
    mov si, 6*l1-2
    call Procm
    mov si, 6*l1-2
    call Procm
    mov ax, 4c00h
    int 21h
    Procm PROC NEAR
    mov cx, l1-1
    mov ax, array[si]
    B1: mov bx, array[si-2]
    mov array[si], bx
    sub si, 2
    loop B1
    mov array[si], ax
    FIN: ret
    Procm ENDP
    nop 

end start
...