如何声明一个返回值并具有参数x86 assembly MASM的函数

时间:2015-03-20 20:13:14

标签: assembly x86 masm

我试图使用PROC声明一个函数,到目前为止这不起作用:

inputArray(lpIntegerArray:dword,lpStrNum:dword,lpStrPrompt:dword):dword PROC

,这也不是

inputArray PROC lpIntegerArray:dword,lpStrNum:dword,lpStrPrompt:dword:dword

如何在x86程序集中声明一个函数MASM,其中参数返回一个双字值?

我正在使用.model flat

1 个答案:

答案 0 :(得分:0)

好吧,Chisx,如果你真的喜欢天文学,我可以告诉你汇编语言是另一个星球,与其他星球不同。下一个代码是一个带有Intel语法的8086汇编程序,它有一个计算阶乘的函数,从SI寄存器获取一个参数并返回AX寄存器中的值(用EMU8086制作):

.stack 100h
.data
.code          
;INITIALIZE DATA SEGMENT.
  mov  ax,@data
  mov  ds,ax

  mov  si, 5 ;PARAMETER FOR FUNCTION.                                         
  call non_recursive_factorial ;RESULTS RETURNS IN AX.

;FINISH PROGRAM PROPERLY.  
  mov  ax, 4c00h
  int  21h           
;-----------------------------------------
;FUNCTION TO CALCULATE FACTORIAL.
;PARAMETER : SI.
;RETURNS   : AX.
proc non_recursive_factorial
  mov  cx,2 ;SECOND NUMBER TO MULTIPLY.
  mov  ax,1 ;FIRST NUMBER TO MULTIPLY.
while:                                  
  mul  cx ;AX*CX = DX:AX.
  inc  cx ;NEXT NUMBER TO MULTIPLY.
  cmp  cx, si ;PARAMETER BEEN USED.
  jbe  while
  ret
endp

不确定这是否是您要找的。希望它有所帮助。