【问题标题】:Want to learn assembly, confused about where to start [closed]想学习组装,对从哪里开始感到困惑[关闭]
【发布时间】:2011-05-12 07:06:10
【问题描述】:

只是为了它,我对学习汇编产生了兴趣。问题是我找不到好的起点...

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

谁能指出我正确的方向?

【问题讨论】:

  • 如果您想先掌握基础知识,您会考虑使用基于 PIC 或 AVR 的微处理器制作一些简单的设备吗?您将使用更简单的指令集,并且可能会更快地完成任务。
  • @Jonathon:自相矛盾的是,它们的简单性会使它们更难学习使用。例如,如果没有乘法或除法指令,您需要编写一个(有点不重要的)例程来处理它。

标签: windows assembly 64-bit


【解决方案1】:

如果您想学习阅读汇编,我建议您学习使用 WInDbg 或 IDA Pro 作为您的主要调试器 - 不仅要了解指令的作用,还要了解 C++ 编译器如何惯用地将您的源代码转换为汇编,这将帮助您比你做人为的 100% 组装示例学得更好

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • MIPS 汇编比 x86 更简单,更容易学习,所以它是一个很好的起点。
    • MIPS 程序集基本上已经过时了。如果您想要一些不错的东西并且不介意它已经过时,请学习 PDP-11 汇编语言。
    • MIPS 更接近现代处理器使用的 RISC 风格,并且有比(比如)PPC 更好的模拟器和教学工具。我首先在 Sparc 上学习,是的,它已经过时了,但是技能转移得很好,以至于我能够在一天后拿起 MIPS(当时我们还在销售带有 MIPS 的消费电子产品)。
    • @Jerry Coffin:我这里的 ADSL 路由器有一个 MIPS 处理器。 PowerPC 与 MIPS 非常相似。
    • 过时了?消费电子产品目前在消费电子产品中出货。目前没有什么可以触及 ARM,但 mips 绝不过时。不会比 x86 指令集更过时。
    【解决方案3】:

    即使您的主机操作系统是 64 位,32 位示例也应该可以工作。

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

    include 'win64ax.inc'
    

    include 'win32ax.inc'
    

    【讨论】:

      【解决方案4】:

      这是我找到的最好的 x86 ASM 介绍:

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

      该页面上有他的书的 pdf 版本。它从最基本的开始,然后逐步上升。我通过这本书获得了我需要的所有基本 ASM 知识(堆栈框架创建、调用约定、c 互操作,仅举几例)。

      【讨论】:

        【解决方案5】:

        没有目标学习汇编很无聊。

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

        http://robosavvy.com/site/

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

        【讨论】:

        • 你的意思是“我个人认为没有任何目标的学习汇编很无聊。”
        【解决方案6】:

        如果您比较大,并且想更好地学习汇编以获取 ASM 知识 1st。 其次尝试学习每个代码背后的基本逻辑。 3.在尝试学习时享受语言,如果你感兴趣,否则离开它。

        【讨论】:

          猜你喜欢
          • 2011-06-01
          • 2011-03-23
          • 1970-01-01
          • 1970-01-01
          • 2010-09-10
          • 2011-11-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多