• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Livid
286.33D
534.95D
V2EX  ›  程序员

有好心人来帮小朋友看个作业么?

  •  
  •   Livid ·
    PRO
    · Nov 5, 2013 · 5800 views
    This topic created in 4597 days ago, the information mentioned may be changed or developed.
    汇编我是完全不懂,大家帮看看他做的这个有没有什么问题吧,谢谢。



    22 replies    1970-01-01 08:00:00 +08:00
    yangqi
        1
    yangqi  
       Nov 5, 2013
    貌似根本没有Loop起来啊,positive: 一次之后直接就结束了

    那个endWhileLE最后jmp endif这个是跳到哪?
    yangqi
        2
    yangqi  
       Nov 5, 2013
    汇编里面没有各种if, loop的statement, 只能通过各种jump来实现这些功能

    loop的最后都要jmp回开始, 例如

    whileLE: cmp eax, 0
    ...
    ...
    jmp whileLE

    另外如果positive, negative主要操作放到loop里面,如果你跳出来的话,positive最后还要再跳回去
    orzfly
        3
    orzfly  
       Nov 5, 2013 via Android
    路过,话说 dec 1,eax 这是啥?难道不是 dec eax 或者 sub eax, 1 呢。
    yangqi
        4
    yangqi  
       Nov 5, 2013
    @orzfly 恩,add那边也是一样,直接用inc就可以了
    orzfly
        5
    orzfly  
       Nov 5, 2013 via Android
    另外我不会汇编,手头也找不到 VS 但是我按照题目想了想思路大概是这样求指点… @yangqi

    #include <stdio.h>
    #include <stdlib.h>

    int main (void)
    {
        char get1[] = "Please input an integer:";
        char get2[]="posamount:";
        char get3[]="negamount:";
        char get4[]="input n: ";
        char format[] = "%d";
        char format2[] = "%s%d\n";
        int input;
        asm{
            xor ebx, ebx
            xor ecx, ecx

            lea eax, get4
            push eax
            call printf
            add esp, 4

            lea eax, input
            push eax
            lea eax, format
            push eax
            call scanf
            add esp,8

            mov edx, input
        loop:
            cmp edx, 0
            jng endloop

            lea eax, get1
            push eax
            call printf
            add esp, 4

            lea eax,input
            push eax
            lea eax,format
            push eax
            call scanf
            add esp,8
           
            mov eax,input
            cmp eax,0
            jg positive
            je loop
            inc ecx
            jmp loop
           
        positive:
            inc ebx
            jmp loop
       
        endloop:
            push ebx
            lea eax, get2
            push eax
            lea eax, format2
            push eax
            call printf
            add esp, 12

            push ecx
            lea eax, get3
            push eax
            lea eax, format2
            push eax
            call printf
            add esp, 12

        }
        return 0;
    }
    yangqi
        6
    yangqi  
       Nov 5, 2013
    @orzfly 没看细节,只看了下大概的框架。貌似题目的意思是,positive就inc posamount, negative就inc negamount

    所以loop里面的跳转还是有问题,还要加个和positive类似的negative分支

    细节部分需要看下手册才能确定
    pantaovay
        7
    pantaovay  
       Nov 5, 2013
    是香港中文大学的吧?我记着两年前我同学也问过我同样的题目
    hpowen
        8
    hpowen  
       Nov 5, 2013
    好无奈。。。。我这个还有这么多人问。。。。
    然后善用搜索吧。。。
    Air_Mu
        9
    Air_Mu  
       Nov 5, 2013 via iPad   ❤️ 6
    以为是什么高难度小学题,春风得意的想进来卖弄下。当场就傻逼了
    msg7086
        10
    msg7086  
       Nov 5, 2013
    直接扫字符串,遇到空格,有负号就加neg没负号就加pos
    raptium
        11
    raptium  
       Nov 5, 2013 via iPad
    @pantaovay 应该不是,comp103 这种课号不像。中大课号是4个字母4个数字的,CS的课开头是 CSCI
    Ultratude
        12
    Ultratude  
       Nov 5, 2013
    这不算 cheating 么。
    46fo
        13
    46fo  
       Nov 5, 2013 via iPhone
    @yangqi 伪指令
    holy_sin
        14
    holy_sin  
       Nov 5, 2013   ❤️ 1
    v2ex 水太深
    Virgoer
        15
    Virgoer  
       Nov 5, 2013
    @Air_Mu +1 。
    iptux
        16
    iptux  
       Nov 5, 2013
    大一之后就没碰过汇编。。。
    0racleTink
        17
    0racleTink  
       Nov 5, 2013
    @iptux 跟你一样
    Todd_Leo
        18
    Todd_Leo  
       Nov 5, 2013
    @raptium 泥好校友~
    orzfly
        19
    orzfly  
       Nov 5, 2013
    https://gist.github.com/orzFly/7319335

    @yangqi 研究了一天终于搞定了QAQ
    orzfly
        20
    orzfly  
       Nov 5, 2013
    tywtyw2002
        21
    tywtyw2002  
       Nov 6, 2013
    x86 汇编表示不懂。。。。
    目前只会mips的
    Golevka
        22
    Golevka  
       Nov 6, 2013
    用C写出来之后gcc -S
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2468 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 67ms · UTC 15:56 · PVG 23:56 · LAX 08:56 · JFK 11:56
    ♥ Do have faith in what you're doing.