如何从 MS-DOS 接收参数并在 16 位汇编中进行比较?

How to receive parameters from MS-DOS and compares it in Assembly 16-bits?

晚安,在中接收简单字符作为参数的最简单方法是什么汇编16-BITS,比较看对不对?我花了 2 天时间寻找如何做的例子,但没有人为我工作过... 我试过了 但它不起作用, dx 有 81h 没有我需要的字符的十六进制。我是 Assembly 的新手,所以我需要一些代码示例来理解...我想要最简单的方法,我不想浪费你的时间时间...谢谢。 在 MS-DOS 中 shell 我会在前面加上一个字符来调用我的程序,例如 "MOVE A"。上面引用的代码中的示例类似于 Echo 但我无法比较命令行中插入的字符。 我在 Windows 98 with TASM 4.1 我尝试了 Art of Assembly 上引用的 link 一书的例子,第 13.3.12 章,其中谈到 PSP,并且不满足我的需要。我认为人们不理解我想学什么。 谢谢大家

是的,如您所知,命令行位于 81h。然而,在这些示例中,地址必须传递给打印字符串函数。如果你想访问字符本身,你将需要内存加载,而不仅仅是它的地址。至少对于我可用的 dosbox 版本,不包括命令名称,但包含分隔符 space。因此,如果您以 move a 调用程序,则实际参数字符将位于偏移量 82h 处。因此,此示例代码将加载并打印字母:

org 100h

mov dl, ds:[82h]
mov ah, 06h
int 21h
mov ax, 4c00h
int 21h

显然 tasm 需要 ds: 前缀,否则它会发出 [Constant] assumed to mean immediate constant 警告并继续将其用作直接地址而不是地址。

PS: 学习使用调试器。