Assembly 在x86程序集中使用多个参数调用子例程

Assembly 在x86程序集中使用多个参数调用子例程,assembly,x86,Assembly,X86,试图找出如何在x86汇编中多次正确调用具有多个参数的子例程。感谢您的帮助!使用Irvine库进行此操作。 代码的第一部分是我尝试的,但它似乎不起作用,至少不是它应该的方式: push OFFSET r1 push OFFSET c0 push OFFSET b0 push OFFSET a0 push 0 call quadratic ;(0,a0,b0,c0,r1) 代码的第二部分似乎是正确的: quadratic PROC ; calculation of the roots of a

试图找出如何在x86汇编中多次正确调用具有多个参数的子例程。感谢您的帮助!使用Irvine库进行此操作。 代码的第一部分是我尝试的,但它似乎不起作用,至少不是它应该的方式:

push OFFSET r1
push OFFSET c0
push OFFSET b0
push OFFSET a0
push 0
call quadratic ;(0,a0,b0,c0,r1)
代码的第二部分似乎是正确的:

quadratic   PROC
; calculation of the roots of a parabola
; Receives from stack
;   flag = type of root (0=positive, 1=negative) [integer, value parameter]
;   a$, b$, c$ = parabola parameters [REAL reference parameters]
; Returns
;   Specified root [REAL8 reference parameter]
PARAMS  = 3*TYPE DWORD ; number of temporaries plus return address
FLAG = PARAMS+0
A$ = PARAMS+4
B$ = PARAMS+8
C$ = PARAMS+12
RESULT = PARAMS+16

如果需要更多的代码来确定调用子例程的正确方式,请告诉我。再次感谢

显然,昨晚编程时我太累了,没有意识到我的测试输入选择不当。我的代码一切正常!很抱歉给您带来不便!作为参考,这是MASM。

您没有向我们展示如何访问子例程中的参数。您使用哪种汇编程序?如果是FASM,请看一看,例如“它似乎不起作用”-什么?它是否在函数内部崩溃、返回时崩溃或返回成功但结果不正确?在这种情况下,该问题似乎对任何人都没有用处,应该在吸引反对票之前(由您)删除