Assembly Nasm错误:操作码和操作数的组合无效

Assembly Nasm错误:操作码和操作数的组合无效,assembly,x86,nasm,cpu-registers,integer-division,Assembly,X86,Nasm,Cpu Registers,Integer Division,在我学习NASM的过程中,我试图创建一个非常简单的程序,进行除法并输出结果 按规定,一切都会好起来的。我将15除以3,它应该自动存储在AX寄存器中,然后移到ecx进行输出 然而,当我试图编译时,我得到了错误 nums.asm:6: error: invalid combination of opcode and operands nums.asm:7: error: invalid combination of opcode and operands 有人知道第6行和第7行有什么问题吗 这是我

在我学习NASM的过程中,我试图创建一个非常简单的程序,进行除法并输出结果

按规定,一切都会好起来的。我将15除以3,它应该自动存储在AX寄存器中,然后移到ecx进行输出

然而,当我试图编译时,我得到了错误

nums.asm:6: error: invalid combination of opcode and operands
nums.asm:7: error: invalid combination of opcode and operands
有人知道第6行和第7行有什么问题吗

这是我的代码:

segment .text

    global main
main:

    div     3, 15
    mov     ecx, ax
    mov ebx,1       ; arg1, where to write, screen
    mov eax,4       ; write sysout command to int 80 hex
    int 0x80        ; interrupt 80 hex, call kernel



exit:   mov eax, 1
    xor ebx, ebx 
    int 0x80

我经常看到这样的表单:
div3,15
这不是任何有效的INTEL mneumonic

将15除以3:

xor     edx, edx
mov     eax, 15
mov     ecx, 3
div     ecx
对于第二个错误,不能将16位寄存器移动到32位寄存器中。您需要使用以下选项之一:

xor     ecx, ecx
mov     cx, ax
或:


你能把32位寄存器移到16位吗?你能把1加仑的水放在1/2加仑的水罐里吗?有些。。。这就是我在挠头思考为什么不能将16位寄存器放入32位寄存器时使用的逻辑
movzx   ecx, ax