4

我正在寻找一种好的、简洁的、结构化的方式来开始学习 x86 ASM。我有使用 Perl、Python 和 C/C++ 的经验,并且我一直想“深入了解”可以这么说已经有一段时间了,但每次我研究它时,我都发现除了令人困惑、冲突和很大程度上之外什么都没有日期信息。我对 MASM、FASM、HLA 以及我在谷歌搜索时发现的其他一些东西感到困惑,但它们似乎都没有提供我正在寻找的东西:一个快速介绍,其中包含关于细节低级的良好信息ASM 世界。我不希望 HLA 之类的东西给你 stdout.put() 之类的东西。我希望能够看到实际的中断被调用,并了解一切是如何做的。有什么建议吗?

4

3 回答 3

3

您应该尝试 MIPS 汇编,如果您想了解汇编是如何工作的,它会更容易也更好。有一个名为 MARS 的模拟器可以在这里下载:http: //courses.missouristate.edu/KenVollmar/Mars/download.htm

这可以帮助你哟: http: //www.inf.pucrs.br/~calazans/undergrad/arq1/mips/cod-appa.pdf

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

于 2012-04-20T14:09:39.067 回答
3

有组装的明确圣经:组装的艺术。更重要的是,它可以在线免费获得!它有点过时了,这很好,因为你可以学习基础知识,而无需潜入非常复杂的新“ features”仅对操作系统有用。(来源:computer-books.us
装配艺术

一些提示:

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

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

  • 您可以在操作系统之上运行程序,或者使用Virtualbox

  • 尝试一开始就“坚持使用金属”。也就是说,没有库,除了组装之外别无其他。机器本身没有提供任何东西。

  • 一旦您掌握了理论(这很重要!),您可以尝试阅读有关 bios 功能,特别是打印到屏幕的功能(它们非常简单),以便您可以在虚拟机或真实硬件上快速测试您的代码。

  • 尽管没有必要,您也可以尝试学习 c,因为它们与汇编共享低级概念,并且与 c++ 相当相似。

参考:

一个快速的hello world 教程,让您开始使用 linux。

bios 函数(实际上是中断调用)。

于 2012-04-20T14:33:42.763 回答
-1

对于概念,从基础书籍开始总是好的。我会推荐 Kenneth J. Ayala 所著的“8086 微处理器:PC 编程和接口”一书。它是世界各地许多大学使用的教科书,将向您介绍该主题。

于 2012-04-20T14:40:11.433 回答