1
yangqi 2013-11-05 00:37:56 +08:00
貌似根本没有Loop起来啊,positive: 一次之后直接就结束了
那个endWhileLE最后jmp endif这个是跳到哪? |
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最后还要再跳回去 |
3
orzfly 2013-11-05 00:55:50 +08:00 via Android
路过,话说 dec 1,eax 这是啥?难道不是 dec eax 或者 sub eax, 1 呢。
|
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; } |
6
yangqi 2013-11-05 01:27:31 +08:00
@orzfly 没看细节,只看了下大概的框架。貌似题目的意思是,positive就inc posamount, negative就inc negamount
所以loop里面的跳转还是有问题,还要加个和positive类似的negative分支 细节部分需要看下手册才能确定 |
7
pantaovay 2013-11-05 03:32:27 +08:00
是香港中文大学的吧?我记着两年前我同学也问过我同样的题目
|
8
hpowen 2013-11-05 03:50:57 +08:00
好无奈。。。。我这个还有这么多人问。。。。
然后善用搜索吧。。。 |
9
Air_Mu 2013-11-05 04:09:45 +08:00 via iPad 6
以为是什么高难度小学题,春风得意的想进来卖弄下。当场就傻逼了
|
10
msg7086 2013-11-05 04:34:11 +08:00
直接扫字符串,遇到空格,有负号就加neg没负号就加pos
|
11
raptium 2013-11-05 07:55:10 +08:00 via iPad
@pantaovay 应该不是,comp103 这种课号不像。中大课号是4个字母4个数字的,CS的课开头是 CSCI
|
12
Ultratude 2013-11-05 08:23:36 +08:00
这不算 cheating 么。
|
14
holy_sin 2013-11-05 09:19:48 +08:00 1
v2ex 水太深
|
16
iptux 2013-11-05 09:41:00 +08:00
大一之后就没碰过汇编。。。
|
19
orzfly 2013-11-05 21:56:49 +08:00
|
20
orzfly 2013-11-05 21:58:32 +08:00
|
21
tywtyw2002 2013-11-06 02:48:17 +08:00
x86 汇编表示不懂。。。。
目前只会mips的 |
22
Golevka 2013-11-06 09:40:04 +08:00
用C写出来之后gcc -S
|