Assembly ';错误的参数';在汇编中使用指针时,什么';怎么了?
我在课堂上了解到,我们可以使用带括号[]的汇编中的指针。 但在我的程序中,它不起作用,并给我“错误的参数错误”。 如果你能帮助我,我会非常高兴:)Assembly ';错误的参数';在汇编中使用指针时,什么';怎么了?,assembly,x86-16,emu8086,Assembly,X86 16,Emu8086,我在课堂上了解到,我们可以使用带括号[]的汇编中的指针。 但在我的程序中,它不起作用,并给我“错误的参数错误”。 如果你能帮助我,我会非常高兴:) 您看,我尝试在数组中计算“num”的个数,但第一行有问题,答案很简单:x86汇编不支持在一条指令中包含两个内存操作数 因此,您的第一条指令cmp[cx],num无效。首先将其中一个参数加载到寄存器中,然后执行比较(例如,如下所示): 这应该可以解决这个问题 [cx]也不是有效的16位寻址模式,因此选择BX、SI或DI在数组上迭代指针。我明白了,问题是
您看,我尝试在数组中计算“num”的个数,但第一行有问题,答案很简单:x86汇编不支持在一条指令中包含两个内存操作数 因此,您的第一条指令
cmp[cx],num
无效。首先将其中一个参数加载到寄存器中,然后执行比较(例如,如下所示):
这应该可以解决这个问题
[cx]
也不是有效的16位寻址模式,因此选择BX、SI或DI在数组上迭代指针。我明白了,问题是我将cx作为指针,但唯一的BX、DI和SI可以是指针。
现在我的代码如下所示:
mov bx, cx
cmp [bx], ax
JNE LOOP1
inc count
jmp LOOP1
mov ax, num ; preferably outside the loop
cmp [cx], ax
JNE LOOP1
inc count
jmp LOOP1
mov bx, cx
cmp [bx], ax
JNE LOOP1
inc count
jmp LOOP1