在装配中操纵指针

时间:2019-01-13 16:52:26

标签: pointers assembly x86 emu8086

我有一个指向从C函数接收的矩阵的指针,我需要填充从同一C函数接收的另一个数组,并且需要用矩阵的每一列的总和填充它。问题在于,填充数组后,它会返回C函数,并在尝试打印数组时导致打印无关的数字(可能是地址),而不是实际的列总和。

这是C函数的代码:

.MODEL SMALL
.DATA
SUM DW ?
I   DW ?
J   DW ?
K   DW ?
.CODE

PUBLIC _sum_col
_sum_col PROC NEAR
PUSH BP
MOV BP,SP
PUSH SI
PUSH DI

MOV I,0
MOV J,0
MOV K,0
MOV CX,[BP+6]   ; CX = m
MOV BX,[BP+4]   ; BX = n
MOV SI,[BP+8]   ; SI = matrix
MOV DI,[BP+12]  ; DI = new_col


L1:
MOV SUM,0
PUSH CX
MOV CX,BX
MOV I,0
L2:
MOV SI,[BP+8]
ADD SI,I
MOV AX,[SI]
MOV SI,AX
ADD SI,J
MOV AX,[SI]
ADD SUM,AX
ADD I,2
LOOP L2
MOV AX,SUM
ADD DI,K
MOV [DI],AX
ADD J,4
ADD K,4
POP CX
LOOP L1

POP DI
POP SI
POP BP
RET
_sum_col ENDP
END

这是汇编代码:

{{1}}

有人可以告诉我我哪里出问题了吗?

0 个答案:

没有答案