Интересно, как мне передать аргумент указателя в процедуру?
Мне нужно создать функцию с двумя аргументами:
- массив слов
- размер массива
Функция получает массив, равный размеру массива, и суммирует столбец.
Вот что я закодировал:
.MODEL Small .STACK 64 ; +===============================+ ; | DATA | ; +===============================+ .DATA array1 dw 1,2,3,4 array1size dw 4 result dw ? address dw ? ; print TMP dw 0 ; general temporary variable .. .code addNumbers proc ; reset result lea di,result ; use stack mov bp,sp ; get num array mov bx,[bp+2] ; get num of numbers mov cx,[bp+4] ; making additiontion adding: add [di],bx inc bx; go to the next bx loop adding ret 2 endp ; start start: mov ax,@DATA mov ds,ax ; set strings push array1size push offset array1 call addNumbers ; print mov dx:ax,result call printNumber mov ah,4ch mov al,0 int 21H end start
проблема - это добавление к результату указателя смещения (здесь _1 _, _ 2 _, _ 3 _, _ 4_), а не значения смещения (здесь: _5 _, _ 6 _, _ 7 _, _ 8_).
Из-за этого результат будет 6, а не 10.
может кто-нибудь мне помочь?