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