faqcn
Win32asm 初学者常见问答集
作者:Iczelion 中文版翻译:Neo
关于本问答集
这是一个 win32asm 新手常见问答集. 这个问答集由我( Iczelion )维护. 我的email是: Iczelion@galaxycorp.com
win32asm 是什么?
win32asm 是描述使用汇编语言进行 32位Windows 编程的一个术语, 它本身并不是一种语言. 在win32asm里你可以使用各种不同的汇编编译器.
在开始 win32asm 编程前需要做哪些准备?
至少, 你需要32位Windows :) 可以是Windows 95/98/NT/2000. 就我的个人意见, 最好的编程平台是Windows NT/2000, 因为它更稳定, 此外, 一些有着在Windows 95/98中会被忽略的小错误的程序运行在Windows NT/2000下将立即得到错误通知.
你必须要有一些汇编语言的基本知识. 如果你是一个完全的汇编语言新手, 你可以在网上寻找一些教材和指南. 完整的汇编书籍站点是 Randal Hyde's The Art of Assembly Language Programming. 注意这本书是关于16位DOS汇编的. 当然, 无论在OS/Windows 还是 Linux中, 基本的汇编命令是相同的. 我已经网上找到一些教授32位汇编语言的地方. 下一步是学习更多的关于一般Windows 编程的知识. 关于这方面, 可以找到的最好的书是Charles Petzold 的 《Programming Windows 95》. 这本书不是在线读物,你可以从本地的书店里购买。你将发现这本书的价值远远高于他的价格。
现在需要结合你的汇编语言的Windows编程两方面的知识以使得工作更加容易。我写了一些关于这个主题的指南,你可以在下面的网站找到: http://win32asm.cjb.net.
需要的工具是:
编译/连接器(Assembler/Linker). 你可以使用好几个编译器. 我更喜欢微软宏汇编 (MASM). 你可以从以下站点免费下载 http://masm32.cjb.net. 它包含在叫做 MASM32 的包中. 你也可以使用 Borland/InPrise 的 Turbo Assembler (TASM) 和 NetWide Assembler (NASM). TASM 未作为一个单独的产品升级. 最后的版本是5.0r. 此外, 它不是免费的. NASM 是一个自由软件汇编器. 可是,就我所知,它的定位并不在 win32asm. 它更多的用在Linux中. 你可以从以下站点下载最新版本的 NASM : its main page. 还有一个新的自由软件汇编器叫 SpAsm ,也可以使用. 它包含一个IDE和内置的调试器(debugger).
文本编辑/综合编程环境(Text Editor/IDE). 你可以使用任何文本编辑器. 我一般用 UltraEdit. 有的人更喜欢 WinEdit. Justin Decker 编的 VisualASM 是一个MASM的IDE. 对 TASM 用户来说, 可能会发现 TASM IDE 更让你喜欢.
资源编辑器(Resource editor). 如果你需要设计对话框,菜单,图标,光标等,就需要一个好的资源编辑器。 有几个资源编辑器可以选择. 比如, Borland Resource Workshop (BRW), Symantec Resource Editor. 我更喜欢整合到 Visual C++ IDE 中的那个资源编辑器.
Win32 API 参考. 在你编程过程中需要频繁的查找这个参考. 你可以从这个站点下载免费版本:Borland/InPrise site. 然而, 这个版本比较过时. 在里面找不到最新技术的信息. 在 Microsoft Developer Network有很多关于这个参考的升级更新信息,如果你能买到MSDN的CD那是最好的了,它将使得你的知识库里拥有许多很棒的资源。
调试器(Debugger). 相信我, 你需要一个调试器来找出你程序中的bug. 可以买到的最好的软件调试器是 SoftICE. 还有一个 Netwalker 的免费调试器,可以从这里下载: my site
概略的讲, 如果你想使用 MASM, 下载 MASM32 package 然后阅读 my win32asm tutorials. 我高度建议你使用 MASM: 99% 的 win32asm 程序员使用 MASM 所以你可以更容易的获得许多支持.
哪里可以获得关于 win32asm 编程的帮助?
你可以在 win32asm webboard 贴出你的问题,如果你喜欢更直接的方式,试试 IRC. 我可以连接到 EFNET, channel #win32asm. 或者如果 EFNET 上不去, 试试Undernet, channel #win32asm. 你也可以发email给我我的email地址是 Iczelion@galaxycorp.com. 我将尽量给你最好的回复但我不对我的回复做任何形式的担保.