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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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 从8086汇编中的程序段前缀读取命令行参数_Assembly_Masm_X86 16 - Fatal编程技术网

Assembly 从8086汇编中的程序段前缀读取命令行参数

Assembly 从8086汇编中的程序段前缀读取命令行参数,assembly,masm,x86-16,Assembly,Masm,X86 16,我正在使用16位8086汇编(DOSBox中的MASM 5.00)编写我的第一个汇编程序 我试图从PSP中读取命令行参数: 如果以$结尾,这将打印命令行参数,因此: 测试参数1参数2参数3$ 将打印 param1 param2 param3 我试图通过将$符号放入内存来终止字符串 xor bx,bx mov bl,[80h] mov byte [bx + 81h],'$' 但最后一行导致错误A2011:在上下文中键入非法。我这里的语法错了吗 我的下一个目标是拆分参数字符串,并分别存储每个参数以

我正在使用16位8086汇编(DOSBox中的MASM 5.00)编写我的第一个汇编程序

我试图从PSP中读取命令行参数:

如果以
$
结尾,这将打印命令行参数,因此:

测试参数1参数2参数3$

将打印

param1 param2 param3

我试图通过将
$
符号放入内存来终止字符串

xor bx,bx
mov bl,[80h]
mov byte [bx + 81h],'$'
但最后一行导致
错误A2011:在上下文中键入非法
。我这里的语法错了吗

我的下一个目标是拆分参数字符串,并分别存储每个参数以供以后使用(一些参数是数字的,因此我也需要转换它们,但我对如何实现这一点有一些想法)


有没有关于如何做到这一点的好例子?到目前为止,我找到的资源要么针对不同的CPU架构,要么使用标准库。

应该是
mov[bx+81h],字节“$”
?我对MASM不太熟悉。我想,“$”应该是
mov byte ptr[bx+81h],
。至于拆分参数,您需要一些内存来将值写入。您可以使用
db
分配一些固定大小的缓冲区,也可以向操作系统索要一些带有“$”的。
mov byte ptr[81h+bx]”的缓冲区,谢谢David!当您需要解析cmdline参数时,您可能会在以下位置找到灵感:
mov[bx+81h],字节“$”
?我对MASM不太熟悉。我想,“$”应该是
mov byte ptr[bx+81h],
。至于拆分参数,您需要一些内存来将值写入。您可以使用
db
分配一些固定大小的缓冲区,也可以向操作系统索要一些带有“$”的。
mov byte ptr[81h+bx]”的缓冲区,谢谢David!当您需要解析cmdline参数时,您可以在
xor bx,bx
mov bl,[80h]
mov byte [bx + 81h],'$'