【发布时间】:2015-05-12 11:47:09
【问题描述】:
我有以下代码:
section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry point
mov ecx, 2 ;read-write perms
mov ebx, name ;name of file
mov eax, 8 ;system call number (sys_creat)
int 0x80 ;call kernel
mov eax, 1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
name db 'C:\\test.txt',0xa
这意味着要在C盘创建一个文件(test.txt)但是不起作用,这样做的正确方法是什么?
【问题讨论】:
-
int 0x80是您在 32 位 Linux 上执行系统调用的方式。你是在 Linux 机器上运行它吗?如果是这样,我怀疑c:\test.txt是一个有效的路径。如果您的目标是 Windows,则必须使用一组不同的 API,而对于 DOS,这将是另一个 API。 -
Linux 的
C drive是什么? -
虽然没有 C 驱动器,但反斜杠不是目录分隔符,因此这本身不是问题。更成问题的是文件名应该以 0 结尾而不是换行。确实,如果已修复,上述代码确实可以工作。
-
嗯,好的,谢谢,我正在在线 linux 测试仪上运行脚本,因为我还没有弄清楚如何在 Windows 上运行汇编程序脚本,我会看看如何做到这一点。谢谢!