assembly - 为什么这个汇编语言程序无法在 Windows 7 或 DOSBox 下运行?
问题描述
section .data
text db "Hello, World!",10
section .text
global _start
_start:
mov rax, 1
mov rdi, 1
mov rsi, text
mov rdx, 14
syscall
mov rax, 60
mov rdi, 0
syscall
我正在尝试使用 NASM 运行上述汇编代码。为了做到这一点,我正在关注本教程。
但是,它在 Win7 下从 cmd.exe 给出以下错误:
并且,它从 DOSBox 给出以下错误:
到底发生了什么?
解决方案
“系统调用”适用于 Linux。您也使用 64 位寄存器。64 位寄存器不适用于 16/32 位程序。系统调用在 Windows 上不起作用。
推荐阅读
- java - 将整数 1-max 映射到 1-1,000,000 的 100 个整数
- ios - Swift - 在一个视图中加载不同的视图
- php - 从结帐页面设置商店取货无法设置无运费(Woocommerce)
- php - 带有 PHP FDM for Apache 的 Nginx 服务器
- java - 测试继承的构造函数时出现类型不匹配错误
- ruby-on-rails - 在 has_one 关联中按父属性排序子模型
- spring - : 在类路径资源中定义名称为“entityManagerFactory”的 bean 创建错误
- r - 创建从各种其他变量的可能组合计算得出的变量
- excel - 判断指定范围内是否有匹配值
- sql-server - SQL Server:递归和开销