Assembly 从8086汇编中的程序段前缀读取命令行参数
我正在使用16位8086汇编(DOSBox中的MASM 5.00)编写我的第一个汇编程序 我试图从PSP中读取命令行参数: 如果以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:在上下文中键入非法。我这里的语法错了吗 我的下一个目标是拆分参数字符串,并分别存储每个参数以
$
结尾,这将打印命令行参数,因此:
测试参数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],'$'