程序集 --> 操作码和操作数的无效组合
Assembly --> invalid combination of opcode and operands
我有一个名为 char 的变量,当我按下该键时,它应该将其值更改为键盘键。我访问了 How to change the value of a variable in assembly,它说让我使用 mov char, key_value
。问题是我得到了 terminal.asm:126: error: invalid combination of opcode and operands
。在网上搜索解决方案,我看到有必要放置方括号 [ ]。我试过了,但出现了同样的错误。
这是我文件的一部分:
printChar:
mov edx, char;
loop5_terminal:
mov al, [edx];
mov byte [edi], al;
inc edi;
inc edi;
inc edx;
inc ebx
call cursor_terminal
cmp byte[edx],0;
jne loop5_terminal;
jne l2_terminal
l2_terminal:
cmp al , 0x03 ; Checks for key 2 input
mov char, [two]
je printChar
谢谢。
您收到的错误很可能是由于行
mov char, [two]
其中包含两个内存操作数,即char
和two
。这是不可能的,因为x86架构不支持一条指令中的两个内存操作数。
您必须将该“指令”拆分为两个单独的(有效)指令,例如
mov al, BYTE [two]
mov BYTE [char], al
如果您使用 BYTE 大小的指令。
我有一个名为 char 的变量,当我按下该键时,它应该将其值更改为键盘键。我访问了 How to change the value of a variable in assembly,它说让我使用 mov char, key_value
。问题是我得到了 terminal.asm:126: error: invalid combination of opcode and operands
。在网上搜索解决方案,我看到有必要放置方括号 [ ]。我试过了,但出现了同样的错误。
这是我文件的一部分:
printChar:
mov edx, char;
loop5_terminal:
mov al, [edx];
mov byte [edi], al;
inc edi;
inc edi;
inc edx;
inc ebx
call cursor_terminal
cmp byte[edx],0;
jne loop5_terminal;
jne l2_terminal
l2_terminal:
cmp al , 0x03 ; Checks for key 2 input
mov char, [two]
je printChar
谢谢。
您收到的错误很可能是由于行
mov char, [two]
其中包含两个内存操作数,即char
和two
。这是不可能的,因为x86架构不支持一条指令中的两个内存操作数。
您必须将该“指令”拆分为两个单独的(有效)指令,例如
mov al, BYTE [two]
mov BYTE [char], al
如果您使用 BYTE 大小的指令。