憔悴心只为你 发表于 2011-11-13 14:19:16

1.1 上机建立第一个工程

一条指令可能有很多细节,比如第二个操作数和第一个操作数中,哪个只能是寄存器,哪个不能用寄存器加立即数等。如果要用手写汇编语言来开发一个软件的话,这些知识很重要。但是实际上,现在需要的是用C语言或更高级的语言进行开发,只是需要理解一些没有C代码的部分。读者可以认为,那些代码的汇编指令用法一定是正确的,因为它们是编译器生成的。1.2节(简要复习常用的汇编指令)将简要地回顾那些指令,并保证这些回顾非常容易理解。1.1.1 用Visual Studio 创建工程建议读者的计算机操作系统的版本最好是windows xp或者更高的版本,使用Vista 问题也不大,虽然可能操作细节和界面与本书描述的情况稍有不同。然后,请安装某个版本的Visual Studio,推荐Visual Studio 2003或者更高的版本。下面的描述同时顾及Visual Studio 2003和Visual Studio 2005的情况,语言版本为英文。下面的步骤将在Visual Studio上建立一个用于实验的工程。有经验的读者可以忽略下面的描述。1、打开Microsoft Visual Studio2005,选择主菜单“File”。2、选择子菜单“New”下面的“Project”,打开“New Project”对话框。3、左边选择Visual C++,Win32;右边选择Win32 Console Application;下面输入一个工程名,然后单击“OK”按钮,出现向导。一切都选择默认设置,最后单击“Finish”按钮。此时新建立的主文件是一个扩展名为.cpp的文件,请将它改为扩展名为.c的文件。Windows底层代码基本上都是用C语言编写的,研究C语言和汇编指令的关系是本节的任务。为此,这个文件必须改变为扩展名为.c的文件,这样VC才会自动以C语言的方式进行编译。4、如果读者使用的是Visual Studio2005,直接在左边的Solution Explorer中用鼠标右键单击文件YourProjectName.cpp,选择“Rename”,然后把.cpp改为.c即可。   如果是更老的Visual Studio版本,请单击右键,Remove这个文件。然后在外面改名,再对工程单击右键,选择“Add”;再选择“Exist Item”,追加进来。   此时程序是这样的:   #include <stdio.h>
   int main(int argc,char* argv[])
   {
   return 0;
   }
1.1.2 用Visual Studio查看汇编代码   C语言程序对应的汇编代码,可以在VC中非常清楚地显示出对应关系。但是并不是所有的读者都知道哦如何调出汇编指令窗口。这个诀窍在下面描述。   1、VC必须处于调试状态才能看到汇编指令窗口。因此,请在return 0一句上设置一个断点:把光标移到那一行,然后按下F9键设置一个断点。   2、按下F5键调试程序。当程序停止在这一行的时候,打开菜单“Debug”下的Windows子菜单,选择“Disassembly”。这样,出现一个窗口,显示下面的信息:1:    #include <stdio.h>
2:    int main(int argc,char* argv[])
3:    {
00401010 55                   push      ebp
00401011 8B EC                mov         ebp,esp
00401013 83 EC 40             sub         esp,40h
00401016 53                   push      ebx
00401017 56                   push      esi
00401018 57                   push      edi
00401019 8D 7D C0             lea         edi,
0040101C B9 10 00 00 00       mov         ecx,10h
00401021 B8 CC CC CC CC       mov         eax,0CCCCCCCCh
00401026 F3 AB                rep stos    dword ptr
4:      return 0;
00401028 33 C0                xor         eax,eax
5:    }
0040102A 5F                   pop         edi
0040102B 5E                   pop         esi
0040102C 5B                   pop         ebx
0040102D 8B E5                mov         esp,ebp
0040102F 5D                   pop         ebp
00401030 C3                   ret
如果上面的内容完全看不懂,也许读者需要复习一下汇编指令。以上的汇编指令数量非常的少,只需要了解push、mov、sub、lea、stos、xor、pop、ret,就可以继续本书的学习之旅了。所以请不用担心,接下来就会熟悉这些代码。

ascxyh009 发表于 2011-11-13 16:41:32

这个是驱网的那本天书吗?

憔悴心只为你 发表于 2011-11-13 17:36:32

ascxyh009 发表于 2011-11-13 16:41 static/image/common/back.gif
这个是驱网的那本天书吗?

嗯,是的{:5_102:}

嗜血灵异狂 发表于 2011-11-13 17:45:43

无聊啊 :L:funk:

憔悴心只为你 发表于 2011-11-13 18:54:58

嗜血灵异狂 发表于 2011-11-13 17:45 static/image/common/back.gif
无聊啊

感觉无聊你可以不看的,没强制哦,亲{:5_111:}

美国派 发表于 2011-11-14 01:09:59

发这个干麽的?

ascxyh009 发表于 2011-11-14 18:27:04

憔悴心只为你 发表于 2011-11-13 17:36 static/image/common/back.gif
嗯,是的

支持~~~{:5_95:}

BinGu 发表于 2011-11-14 19:05:46

加油~~~但是C语言的请发到C语言板块,谢谢合作

憔悴心只为你 发表于 2011-11-14 22:05:01

BinGu 发表于 2011-11-14 19:05 static/image/common/back.gif
加油~~~但是C语言的请发到C语言板块,谢谢合作

这个是反汇编的,有C语言也有汇编,不让在这发?那没地方发了

BinGu 发表于 2011-11-15 19:19:05

憔悴心只为你 发表于 2011-11-14 22:05 static/image/common/back.gif
这个是反汇编的,有C语言也有汇编,不让在这发?那没地方发了

{:5_107:}哦~不错,加油!
页: [1]
查看完整版本: 1.1 上机建立第一个工程