V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Livid
V2EX  ›  程序员

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

  •  
  •   Livid · 2013-11-05 00:29:16 +08:00 · 5195 次点击
    这是一个创建于 4042 天前的主题,其中的信息可能已经有所发展或是发生改变。
    汇编我是完全不懂,大家帮看看他做的这个有没有什么问题吧,谢谢。



    22 条回复    1970-01-01 08:00:00 +08:00
    yangqi
        1
    yangqi  
       2013-11-05 00:37:56 +08:00
    貌似根本没有Loop起来啊,positive: 一次之后直接就结束了

    那个endWhileLE最后jmp endif这个是跳到哪?
    yangqi
        2
    yangqi  
       2013-11-05 00:54:50 +08:00
    汇编里面没有各种if, loop的statement, 只能通过各种jump来实现这些功能

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

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

    另外如果positive, negative主要操作放到loop里面,如果你跳出来的话,positive最后还要再跳回去
    orzfly
        3
    orzfly  
       2013-11-05 00:55:50 +08:00 via Android
    路过,话说 dec 1,eax 这是啥?难道不是 dec eax 或者 sub eax, 1 呢。
    yangqi
        4
    yangqi  
       2013-11-05 01:01:07 +08:00
    @orzfly 恩,add那边也是一样,直接用inc就可以了
    orzfly
        5
    orzfly  
       2013-11-05 01:18:32 +08:00 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  
       2013-11-05 01:27:31 +08:00
    @orzfly 没看细节,只看了下大概的框架。貌似题目的意思是,positive就inc posamount, negative就inc negamount

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

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

    @yangqi 研究了一天终于搞定了QAQ
    orzfly
        20
    orzfly  
       2013-11-05 21:58:32 +08:00
    tywtyw2002
        21
    tywtyw2002  
       2013-11-06 02:48:17 +08:00
    x86 汇编表示不懂。。。。
    目前只会mips的
    Golevka
        22
    Golevka  
       2013-11-06 09:40:04 +08:00
    用C写出来之后gcc -S
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2613 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:42 · PVG 23:42 · LAX 07:42 · JFK 10:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.