我尝试cat>filename
使用系统调用在 Ubuntu 11.04 的 NASM 中实现命令。我的程序编译成功并成功运行(似乎如此)。但是,每当我尝试触发cat filename
命令时,它都会显示“没有这样的文件或目录”,但我看到该文件位于目录中。如果我尝试通过双击打开文件,它会显示“您没有打开文件所需的权限”。你能帮我找出我的代码中的错误吗?
代码如下:
section .data
msg: dd "%d",10,0
msg1: db "cat>",0
length: equ $-msg1
section .bss
a resb 100
len1 equ $-a
b resd 1
c resb 100
len2 equ $-c
section .txt
global main
main:
mov eax,4 ;;it will print cat>
mov ebx,1
mov ecx,msg1
mov edx,length
int 80h
start:
mov eax,3 ;;it will take the file name as input
mov ebx,0
mov ecx,a
mov edx,len1
int 80h
mov eax,5 ;;it will create the file by giving owner read/write/exec permission
mov ebx,a
mov ecx,0100
mov edx,1c0h
int 80h
cmp eax,0
jge inputAndWrite
jmp errorSegment
inputAndWrite:
mov [b],eax
mov eax,3 ;;take the input lines
mov ebx,0
mov ecx,c
mov edx,len2
int 80h
mov edx,eax ;;write the input lines in the file
mov eax,4
mov ebx,[b]
mov ecx,c
int 80h
jmp done
errorSegment:
jmp done
done:
mov eax, 1
xor ebx, ebx
int 80h
ps 以上代码是根据RageD的建议重新编辑的。然而,我创建的文件不包含从“inputAndWrite”段给出的任何输入行。我正在寻找你的建议。