想要学习装配,对于从哪里开始感到困惑

时间:2010-11-18 20:57:53

标签: windows assembly 64-bit

为了它的地狱,我对学习装配感兴趣。问题是我找不到一个好的起点......

似乎有很多可用的汇编程序(FASM,NASM,YASM,MASM),但每个汇编程序都有自己独立的语法,命令和功能。 FASM似乎是最方便的,因为它可以在没有链接器的情况下编译可执行文件但是我找不到任何教程来启动我。我见过的所有“Hello World”示例都是16位或32位,但我在64位Windows上运行,因此它们都不起作用。 FASM包含的Windows示例工作,但我不打算从一开始就进入Windows编程,我想先掌握基础知识。

有人能指出我正确的方向吗?

6 个答案:

答案 0 :(得分:6)

如果你想学习阅读程序集,我建议学习使用WInDbg或IDA Pro作为主要调试器 - 不仅要学习指令的作用,还要学习C ++编译器如何惯用地将源代码翻译成程序集将帮助你比你做的100%装配实例更好地学习

答案 1 :(得分:4)

我不是装配专家,但至少在计算方面是熟悉的。在计算机工程课上,我们使用James Laurus的SPIM,这是一个用于Windows的MIPS架构模拟器。我认为这是一个很好的起点。您可以通过Google搜索找到MIPS备忘单,以及一些教程。

装配很酷,因为它本质上是机器语言。快乐的黑客!

答案 2 :(得分:3)

即使主机操作系统是64位,32位示例也应该有效。

最重要的是32位和64位Hello World之间的区别仅为2个字符:

include 'win64ax.inc'

VS

include 'win32ax.inc'

答案 3 :(得分:2)

这是我发现的最好的x86 ASM介绍:

http://www.drpaulcarter.com/pcasm/

该页面上有他的书的pdf版本。它从非常基础开始,并逐步向上发展。我获得了本书所需的所有基本ASM知识(堆栈框架创建,调用约定,c互操作,仅举几个例子)。

答案 4 :(得分:1)

学习汇编程序没有任何目标是无聊的。

我可以建议您购买任何机器人套件吗?据我所知,RoboSavvy机器人由assmeblers / C管理。其他机器人可能只有DSL。

http://robosavvy.com/site/

P.S。当我需要在游戏中作弊时,我学习了汇编程序。但今天我会选择机器人套件。

答案 5 :(得分:1)

如果你是一个更大的人并且想要更好地学习装配以获得ASM知识第一。 其次尝试学习每个代码背后的基本逻辑。 3.尝试学习时是否喜欢该语言,否则请将其留下。