assembly - 我的汇编 x86-64 代码做错了什么?
问题描述
我今天编写了我的第一个汇编程序之一 - 但我不断收到错误消息。
我正在使用 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:错误:操作码和操作数的组合无效
解决方案
在 intel 语法中,目标寄存器/地址在操作数列表中排在第一位,源在第二位。
mov rcx, rcxofFirst ; loads rcx with rcxofFirst.
您混淆了操作数的顺序。此外,您似乎正在使用 DOS 中使用的“int 21h”编写 16 位程序集。
推荐阅读
- python - Jupyter 运行不同版本的已卸载库?
- java - 为 Facebook 开发注册的 debug key 和 hash key 的区别
- python - 使用单个字符串发出完整的 HTTP 请求
- javascript - FullCalendar 资源视图 - 显示前 3 天的周视图
- configuration - 在 Tmux 配置中没有看到/使用 Shell 变量
- c - 如何在 C 中的缓冲区中推送一个字节?
- awk - 我对 awk 很陌生,我正在尝试解析/透视 JIL 以供 SAS 或 Excel 使用
- angular - 通过键入显示国家
- python - 无法将 python datetime.date 对象与 sqlite DATE 匹配
- java - yaml 规范中数组数据类型的 Swagger 代码生成问题