| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1966 人关注过本帖
标题:找出3个数中的最大值
只看楼主 加入收藏
营养书
Rank: 2
等 级:论坛游民
帖 子:25
专家分:29
注 册:2011-4-17
结帖率:100%
收藏
已结贴  问题点数:0 回复次数:7 
找出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
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:10 
程序代码:
;created by zaixuexi 05/06/2011 1:03 a.m
;SeperateToken
    .model tiny
    .code
    main proc far
start:
    xor  ax,ax
    push ds
    push ax
    push cs
    pop  ds
    push bp
    mov  bp,sp
    add  sp,-6
    mov  word ptr[bp-2],','       
    mov  [bp-4],offset src       
    mov  [bp-6],offset dst
    call SeperateToken        ; SeperateToken(dst, src, ',');   
    mov  sp,bp
    pop  bp
    ret
    main endp
    SeperateToken proc near
    push bp
    mov  bp,sp
    add  sp,-2           
    xor  si,si                   
    mov  bl,[bp+8]            ;---------------;
    mov  si,[bp+6]            ; stack  layout ;      LOW
    mov  di,[bp+4]            ;---------------;
    mov  word ptr[bp-2],0     ;               ;
next:                         ;               ;
    cmp  byte ptr[si],0  ;sp->;    local i    ;
    jz   exit            ;bp->;    bp         ; +0h
    mov  ax,10                ;    ip         ; +2h
    mul  word ptr[bp-2]       ;    dst        ; +4h
    and  byte ptr[si],0cfh    ;    src        ; +6h
    add  al,byte ptr[si]      ;    ','        ; +8h
    adc  ah,0                 ;               ;
    mov  word ptr[bp-2],ax    ;---------------;      HIGH
    inc  si               
    cmp  bl,[si]
    jnz  short next
    mov  word ptr[bp-2],0
    mov  [di],ax
    inc  di
    inc  di
    inc  si
    jmp  short next           
exit:                   
    mov  sp,bp   
    pop  bp
    ret  6
    SeperateToken endp
    org 0200h
    src db '1,23,456,7890,',0
    dst dw 10 dup(?)
    end start
;--------------------------------------------------------------------------------
;DEBUG RESULT:
;
;C:\>debug cc.exe
;-g 62
;
;AX=1ED2  BX=002C  CX=0223  DX=0000  SP=FFF2  BP=FFFA  SI=020E  DI=0217
;DS=0C0E  ES=0BFE  SS=0C0E  CS=0C0E  IP=0062   NV UP EI PL ZR NA PE NC
;0C0E:0062 C20600        RET     0006
;-d cs:0200
;0C0E:0200  01 2C 02 03 2C 04 05 06-2C 07 08 09 00 2C 00 01   .,..,...,....,..
;0C0E:0210  00 17 00 C8 01 D2 1E 00-00 00 00 00 00 00 00 00   ................
;---------------------------------------------------------------------------------
你有时间可以看看这个

技术问题,请不要以短消息方式提问
2011-05-08 15:51
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
很喜欢楼上的代码风格!

My life is brilliant
2011-05-09 17:07
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
欢迎高手来交流

技术问题,请不要以短消息方式提问
2011-05-09 18:27
营养书
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
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
回复 5楼 营养书
没关系的,慢慢来

技术问题,请不要以短消息方式提问
2011-05-09 23:24
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:0 
.386
.model flat,stdcall
option casemap:none



[ 本帖最后由 xiaomarn 于 2011-5-10 19:58 编辑 ]
2011-05-10 19:56
快速回复:找出3个数中的最大值
数据加载中...
 
   



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

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