找出3个数中的最大值
这里有关于函数的调用和入栈,我刚学,不太懂,请各位大虾帮忙!!!
; program to input numbers and display running average and sum
; author: R. Detmer
; date: revised 9/97
.386
.MODEL FLAT
INCLUDE io.h
cr EQU 0dh ; carriage return character
Lf EQU 0ah ; linefeed character
.STACK 4096 ; reserve 4096-byte stack
.DATA ; reserve storage for data
num1 DWORD 20 ;第一个数
num2 DWORD 5 ;第二个数
num3 DWORD 64 ;第三个数
labell BYTE cr,Lf,"最大值为:"
max DWORD 20 DUP(?)
BYTE cr,Lf,0
.CODE ; start of main program code
_start:
push num1 ;第一个数入栈
push num2
call max3
dtoa eax,max
output labell
PUBLIC _start ; make entry point public
max3 proc near32
push ebp
mov ebp,esp
pushf
;mov eax,0
mov eax,[ebp+16] ;第一个数放入eax
cmp [ebp+12],eax ;第一个数和第二个数比较
jg cont1 ;大于则转移,把第二个数存到eax里
jmp cont2 ;小于则跳到cont2
cont1:
mov eax,[ebp+12]
cont2:
cmp [ebp+8],eax ;把大的数与第三个数比较
jg cont3 ;大于则转移,把第三个数存到eax里
jmp endcont
cont3:
mov eax,[ebp+8]
jmp encont
endcont:
popf
pop ebp
ret 12
max3 endp
END