| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1966 人关注过本帖
标题:找出3个数中的最大值
取消只看楼主 加入收藏
营养书
Rank: 2
等 级:论坛游民
帖 子:25
专家分:29
注 册:2011-4-17
结帖率:100%
收藏
已结贴  问题点数:0 回复次数:2 
找出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
搜索更多相关主题的帖子: return 最大值 
2011-05-07 13:28
营养书
Rank: 2
等 级:论坛游民
帖 子:25
专家分:29
注 册:2011-4-17
收藏
得分:0 
回复 2楼 zaixuexi
好复杂。。看半天都不明白,惭愧、、、
2011-05-09 23:10
营养书
Rank: 2
等 级:论坛游民
帖 子:25
专家分:29
注 册:2011-4-17
收藏
得分:0 
有些小错误,自己又改了一下,可还是不行,各位大虾帮帮忙看一下

.386
.MODEL FLAT
INCLUDE io.h
ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD
cr          EQU    0dh   ; carriage return character
Lf          EQU    0ah   ; linefeed character

.STACK  4096             ; reserve 4096-byte stack

.DATA                    ; reserve storage for data
num1    DWORD    15    ;第一个数
num2    DWORD    5      ;第二个数
num3    DWORD    64     ;第三个数
labell  BYTE     cr,Lf,"最大值为:"
_max    BYTE     20 DUP(?)
        BYTE     cr,Lf,0


.CODE                               ; start of main program code




_start:
      push   num1      ;第一个数入栈
      push   num2
      push   num3
      call   max3
      
      dtoa    _max,eax
      output labell
      
     INVOKE ExitProcess, 0   
PUBLIC _start
max3  PROC   NEAR32
      push  ebp
      mov   ebp,esp
      pushad
      pushf
      mov   eax,0
      mov   eax,[ebp+16]       ;第一个数放入eax
      cmp   [ebp+12],eax       ;第一个数和第二个数比较
      jng    cont1              ;不大于于则转移
      mov   eax,[ebp+12]
      
cont1:      
      cmp   [ebp+8],eax        ;把大的数与第三个数比较
      jng    endcont             ;不大于则转移
      mov   eax,[ebp+8]
     
endcont:
      
      popf
      popad
      mov esp,ebp
      pop ebp
      ret 16
max3 endp
        END
2011-05-09 23:13
快速回复:找出3个数中的最大值
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012717 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved