【Hacker News搬运】DOS调试器编程(2003)
-
Title: Programming with DOS Debugger (2003)
DOS调试器编程(2003)
Text:
Url: https://susam.net/programming-with-dos-debugger.html
使用 webscraper 抓取的内容是关于如何使用 DOS 调试器(DEBUG.EXE)进行汇编语言编程的教程。内容涵盖了创建简单的打印程序、调试器脚本编写、反汇编等内容。 以下是对抓取内容的总结: 1. 介绍: - MS-DOS 和 Windows 98 都带有名为 DEBUG.EXE 的调试器程序,可用于与汇编语言和机器代码交互。 - DEBUG.EXE 是一个以行为导向的调试器,支持各种有用功能,用于与由机器代码组成的二进制可执行程序进行交互。 2. 打印字符: - 创建了一个 7 字节的程序,用于打印字符 'A' 到标准输出。 - 使用 DEBUG.EXE 命令 A 来汇编机器可执行代码。 - G 命令用于执行内存中的程序。 - N 命令用于指定文件名。 - W 命令用于将机器代码写入文件。 3. 打印 "Hello, World" 字符串: - 创建了一个 23 字节的程序,用于打印 "hello, world" 字符串。 - 使用伪指令 DB 来定义字符串的字节。 - INT 21 用于打印字符串,而设置 AH 为 9。 4. 调试器脚本: - 可以创建一个单独的输入文件,其中包含所有调试器命令和汇编语言指令,然后将其提供给调试器。 - 使用 DOS 命令 EDIT 创建文件,然后输入调试器命令。 - 使用 DEBUG < 文件名 来汇编程序。 5. 反汇编: - 可以看到如何将二进制机器代码翻译成汇编语言助记符。 6. INT 20 与 RET: - INT 20 用于终止程序,而 RET 用于返回。 - 使用 RET 可以创建更小的可执行文件,但会影响调试器的重复运行能力。 7. 结论: - DOS 调试器虽然功能有限,但可以执行与汇编语言和机器代码相关的一些基本操作。 - 它可以在 MS-DOS 或 Windows 98 系统中无需额外工具即可进行基本的汇编语言编程。
Post by: susam
Comments:
userbinator: <i>The fact that this debugger program is always available with MS-DOS or Windows 98 system means that these systems are ready for some rudimentary assembly language programming without requiring any additional tools.</i><p>PC magazines from the 80s through the 90s took advantage of this, publishing listings of "source code" that could be typed into DEBUG to create tiny but useful utilities, mostly under 1K in size. It was an era when "power users" or even moderately advanced users would often know some actual programming too and many grew into full-time developers; a stark contrast from these days when many "real" developers barely understand anything about their environment (and are incentivised not to.)
userbinator: <i> 这个调试器程序在MS-DOS或Windows98系统中始终可用,这意味着这些系统可以在不需要任何其他工具的情况下进行一些基本的汇编语言编程</i> <p>从80年代到90年代的PC杂志利用了这一点;源代码“;可以输入到DEBUG中创建微小但有用的实用程序,大小大多在1K以下。那是一个“;电力用户”;或者甚至是中等程度的高级用户通常也会知道一些实际的编程,许多人成长为全职开发人员;这与现在的许多“;真实的“;开发人员几乎不了解他们的环境(并且被激励不了解。)
dleslie: I still have a copy of "Assembly language step-by-step" which started with DEBUG then moved to nasm in later chapters.
dleslie: 我还有一份“;汇编语言循序渐进”;它从DEBUG开始,然后在后面的章节中转移到nasm。
kazinator: I once made a tiny pre-emptive kernel using the DOS debugger. It was like the day after graduating from CS undergrad, and I needed a cleanse from the many years-long C on Unix mission (which happens to be continuing, decades later).
kazinator: 我曾经使用DOS调试器制作了一个小型的抢占式内核。这就像是从CS本科生毕业后的第二天,我需要从多年的Unix上的C任务中解脱出来(几十年后,这一任务仍在继续)。
M95D: I liked the Hello World program = 17 bytes. 13B is just the text to print.
M95D: 我喜欢Hello World程序=17字节。13B只是要打印的文本。