Assembly 我的汇编x86-64代码有什么问题?

Assembly 我的汇编x86-64代码有什么问题?,assembly,x86-64,nasm,Assembly,X86 64,Nasm,今天我已经编写了我的第一个汇编程序之一,但我一直收到一条错误消息 我正在使用win64操作系统和nasm汇编程序 这是我的代码: section .data section .bss rcxOfFirst resq 1d rdxOfFirst resq 1d section .text global _main _main: mov ah,2ch ; display system time int 21h mov rcxOfFirst,RCX mov rdxOfFirst

今天我已经编写了我的第一个汇编程序之一,但我一直收到一条错误消息

我正在使用win64操作系统和nasm汇编程序

这是我的代码:

section .data

section .bss

rcxOfFirst resq 1d
rdxOfFirst resq 1d


section .text
    global _main
_main:


mov ah,2ch  ; display system time
int 21h

mov rcxOfFirst,RCX
mov rdxOfFirst,RDX
time2.asm:18:错误:操作码和操作数的组合无效;我的错误消息

time2.asm:19:错误:操作码和操作数的组合无效


在英特尔语法中,目标寄存器/地址位于操作数列表的第一位,源寄存器/地址位于第二位

    mov rcx, rcxofFirst ; loads rcx with rcxofFirst.
您混淆了操作数的顺序。
另外,您似乎正在使用DOS中使用的“int 21h”编写16位程序集。

可能,您的操作数周围需要方括号来取消对指针的引用:
mov[rcxOfFirst],RCX
还请注意
int 21h
是一个16位DOS函数,而您似乎正在为不同的操作系统编写64位代码(您忘记指定,以及使用的汇编程序)。那不行。此外,你的程序没有结尾,即使你让它进行汇编和链接,它也会崩溃。如何调用nasm?一个立即数不能是目的地,只能是内存或寄存器。
mov rcxOfFirst,RCX
mov 12345,RCX
基本相同,但链接器在链接时填充符号地址.