Assembly 汇编学习资源?

Assembly 汇编学习资源?,assembly,x86,asmx,Assembly,X86,Asmx,我正在寻找一种好的、简洁的、结构化的方法来开始学习x86 ASM。我有Perl、Python和C/C++方面的经验,可以说,我一直想“躲起来”,但每次我研究它时,我都会发现除了混乱、冲突和大部分过时的信息之外,什么都没有。我被MASM、FASM、HLA和其他一些我在谷歌上搜索到的东西弄得乱七八糟,但它们似乎都不能提供我想要的东西:快速介绍ASM的本质和低级世界。我不希望像HLA这样的东西给你诸如stdout.put()之类的东西。我希望能够看到实际的中断被调用,并了解每件事情是如何做的。有什么建

我正在寻找一种好的、简洁的、结构化的方法来开始学习x86 ASM。我有Perl、Python和C/C++方面的经验,可以说,我一直想“躲起来”,但每次我研究它时,我都会发现除了混乱、冲突和大部分过时的信息之外,什么都没有。我被MASM、FASM、HLA和其他一些我在谷歌上搜索到的东西弄得乱七八糟,但它们似乎都不能提供我想要的东西:快速介绍ASM的本质和低级世界。我不希望像HLA这样的东西给你诸如stdout.put()之类的东西。我希望能够看到实际的中断被调用,并了解每件事情是如何做的。有什么建议吗?

您应该尝试MIPS汇编,如果您想了解汇编的工作原理,它会更简单、更好。有一个叫做火星的模拟器,可以在这里下载:

这可以帮助您:


很抱歉没有正确回答您的问题。

有明确的汇编圣经:。而且,它可以在网上免费获得!它有点过时了,这很好,因为您可以学习基础知识,而不必钻研只对操作系统有用的极其复杂的新“功能”。

(来源:)

以下是一些提示:

  • 使用nasm,它是unix和windows世界中的“标准”编译器,它的语法与本书使用的masm非常相似(这并不是说它更好,只是有更好的文档)

  • 您是对的,HLA是学习汇编的错误的方法。请将其保存为高级语言:)

  • 您可以在操作系统上运行这些程序,也可以使用

  • 试着在开始时“坚持到底”。也就是说,没有库,只有组装。没有机器本身不提供的东西

  • 一旦你学会了这个理论(这很重要!),你就可以试着阅读bios功能,特别是打印到屏幕的功能(它们非常简单),这样你就可以在虚拟机或真正的硬件上快速测试你的代码

  • >P>尽管不必要,但也可以尝试学习C,因为它们与汇编共享低层概念,并且与C++相似。

参考资料: 快速入门linux


(实际上是中断调用)。

对于概念,从基本书籍开始总是很好的。我想推荐Kenneth J.Ayala的书《8086微处理器:PC编程和接口》。这是世界上许多大学使用的教科书,将向你介绍这个主题。

你的操作系统是什么?(这样我可以提供更多建议;我已经发布了答案)我主要运行windows 7,但我有运行Ubuntu和FreeBSD的机器。我建议你使用Ubuntu和FreeBSD,因为它们有更好的文档记录。更重要的是,你肯定发现它们也更“对编程人员友好”。(我个人更喜欢freebsd,因为它的刚性,但是Linux(尤其是ubuntu)有一个更大的社区。这个模拟器看起来很有趣,肯定值得研究,谢谢!