Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 如何从MS-DOS接收参数并在汇编16位中进行比较?_Assembly_Command Line_X86_Dos_Tasm - Fatal编程技术网

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

Assembly 如何从MS-DOS接收参数并在汇编16位中进行比较?,assembly,command-line,x86,dos,tasm,Assembly,Command Line,X86,Dos,Tasm,晚安,在16位汇编中接收简单字符作为参数并与测试是否正确进行比较的最简单方法是什么?我花了2天的时间寻找如何做到这一点的例子,但没有人为我工作过。。。我试过了,但没用,dx没有我需要的字符的十六进制。我在汇编方面非常新手,所以我需要一些代码示例来理解。。。我想要最简单的方法,我不想浪费你的时间。。。谢谢在MS-DOS shell中,我将使用前面的字符调用我的程序,如MOVE a。上面引用的代码中的示例类似于回音,但我无法比较命令行中插入的字符。我使用的是Windows 98和TASM 4.1,我

晚安,在16位汇编中接收简单字符作为参数并与测试是否正确进行比较的最简单方法是什么?我花了2天的时间寻找如何做到这一点的例子,但没有人为我工作过。。。我试过了,但没用,dx没有我需要的字符的十六进制。我在汇编方面非常新手,所以我需要一些代码示例来理解。。。我想要最简单的方法,我不想浪费你的时间。。。谢谢在MS-DOS shell中,我将使用前面的字符调用我的程序,如MOVE a。上面引用的代码中的示例类似于回音,但我无法比较命令行中插入的字符。我使用的是Windows 98和TASM 4.1,我尝试了链接中引用的《组装艺术》一书的例子,第13.3.12章,其中一本谈到PSP,但它不能满足我的需要。我想人们不明白我想学什么。谢谢大家

是的,命令行在81小时,正如已经告诉你们的那样。然而,在这些示例中,地址必须传递给打印字符串函数。如果要访问字符本身,则需要内存加载,而不仅仅是它的地址。至少在我提供的dosbox版本中,不包括命令名,但分隔空间是。因此,如果作为move a调用程序,实际的参数字符将位于偏移量82h处。因此,此示例代码将加载并打印信函:

org 100h

mov dl, ds:[82h]
mov ah, 06h
int 21h
mov ax, 4c00h
int 21h
显然,tasm需要ds:前缀,否则它会发出一个[Constant],假定它表示立即常量警告,并继续将其用作立即常量而不是地址


PS:学会使用调试器。

我们理解你想要什么,你不理解我们。你确实需要PSP的偏移量81h。该示例代码加载了地址,因为该函数需要该地址。否则,您可以只移动al、[81h]或cmp[81h]、“a”或类似值。附言:谢谢你,不要用粗体字。这正是我要说的!我试了很多方法,但都不管用。似乎char不去注册…是的,当然。我不知道如何调试和编程,需要参数才能工作。我几乎要放弃了…在这个测试中也不起作用,程序只会在发送一个文件时打印。但是它没有我用了82小时告诉了你原因。那你为什么有81h?您还创建了一个exe文件,而您一直在请求com文件。这只能作为com文件使用。也不能与[82h]@JesterNow一起使用mov-ah,02h而不是mov-ah,06h。。。错误的函数代码。这是相同的屏幕截图,现在加载dl但比较al.Works时没有显示