我试图使用PROC
声明一个函数,到目前为止这不起作用:
inputArray(lpIntegerArray:dword,lpStrNum:dword,lpStrPrompt:dword):dword PROC
,这也不是
inputArray PROC lpIntegerArray:dword,lpStrNum:dword,lpStrPrompt:dword:dword
如何在x86程序集中声明一个函数MASM,其中参数和返回一个双字值?
我正在使用.model flat
答案 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
不确定这是否是您要找的。希望它有所帮助。