我想知道如何将指针参数传递给程序?
我必须创建具有2个参数的函数:
-
个单词数组
-
数组的大小
该函数获取数组的大小和列的总和 .
这就是我编码的内容:
.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
问题 - 它添加到结果偏移指针(这里是 cs:0000
, cs:0001
,_ cs:0002
, cs:0003
)而不是偏移值(这里是: 1
, 2
,_ 3
, 4
) .
因此,结果将是6而不是10 .
有人能帮助我吗?
1 回答
当然会在BX中向指针添加1(字节) . 如果你需要移动一个WORD,你必须添加单词的大小 . 假设这是2个字节,那么你需要
而不是
INC
.你的另一个问题是你没有添加指向的值
[BX]
,但指针本身是BX
. 您可以使用备用寄存器(如AX
)来计算总和 .