exp1:sys_exit()
.section .data
.section .text
.globl _start
_start:
movl $1,%eax #_sys_call
movl $0,%ebx #_return 0
int $0x80
exp2:sys_fork()
.section .rodata
msg: .ascii "hello,ak!\n"
len = .-msg
.section .text
.globl _start
_start:
movl $2,%eax
int $0x80
#This sys_call below, just test the fork work
movl $4,%eax #for see the fork call clear
movl $1,%ebx #do this ...interrupt
movl $msg,%ecx #this interrupt call will test ...
movl $len,%edx #print str to the terminal
int $0x80
movl $1,%eax
movl $0,%ebx
int $0X80
exp3: sys_read()
.section .data
d1: .fill 1
.section .text
.globl _start
_start:
movl $3,%eax
movl $0,%ebx
movl $d1,%ecx
movl $8,%edx #the size you can input
int $0x80
movl $1,%eax
movl $0,%ebx
int $0x80
exp4:sys_write()
.section .data
d1: .ascii "test the intterupt number 4!\n" #29
len=.-d1
.section .text
.globl _start
_start:
movl $4,%eax
movl $d1,%ecx
movl $len,%edx
movl $0,%ebx
int $0x80
movl $1,%eax
movl $0,%ebx
int $0x80
exp5:sys_open()
.section .data
filename: .ascii "myfile"
.section .text
.globl _start
_start:
movl $5,%eax
movl $filename,%ebx
movl $110,%ecx
movl $0x0080,%edx
int $0x80
movl $1,%eax
movl $0,%ebx
int $0x80
2014-04-05(finish)
exp6:sys_close()
.section .data
filename: .ascii "myfile"
#d1: .int -1
.section .text
.globl _start
_start:
#open a file
movl $5,%eax
movl $filename,%ebx
movl $111,%ecx
movl $0x80,%edx
int $0x80
#close a file
# movl $d1,%ebx
# movl (%ebx),%ebx
movl $filename,%ebx #unsigned int
movl (%ebx),%ebx
movl $6,%eax
int $0x80
movl $1,%eax
movl $0,%ebx
int $0x80
exp7:waitpid()
#waitpid() function
#need some parament
#%ebx = pid_t
#%ecx = unsigned int *
#%edx = int
.section .data
data:.int 8
.section .text
.globl _start
_start:
movl $7,%eax
movl $1,%ebx
movl $data,%ecx
movl $10,%edx
int $0x80
movl $1,%eax
movl $0,%ebx
int $0x80
exp8:sys_creat()
#creat a file
.section .data
#const char * type
filename:.ascii "creat_file"
.section .text
.globl _start
_start:
movl $8,%eax
movl $filename,%ebx
movl $777,%ecx #the file attribute
int $0x80
movl $1,%eax
movl $0,%ebx
int $0x80
exp9: sys_link()
.section .data
mylink:.ascii "link_"
myfile:.ascii "myfile"
.section .text
.globl _start
_start:
movl $5,%eax
movl $myfile,%ebx
movl $110,%ecx
movl $0x0080,%edx
int $0x80
movl $9,%eax
movl $myfile,%ebx
movl $mylink,%ecx
int $0x80
movl $1,%eax
movl $0,%ebx
int $0x80
exp10:sys_unlink()
#unlink file
.section .data
mylink:.ascii "myfile"
.section .text
.globl _start
_start:
movl $10,%eax
movl $mylink,%ebx
int $0x80
movl $1,%eax
movl $0,%ebx
int $0x80
2014-04-06(finish)
Reference:
2//http://syscalls.kernelgrok.com/
3//http://www.duntemann.com/assembly.html
4//http://www.amazon.com/exec/obidos/ASIN/0470497025/jeffduntemann-20
5//http://www.tutorialspoint.com/assembly\_programming/assembly\_numbers.htm
exp11:sys_execve()
#in fact it is execve()
#sys_call number 11
.section .data
run_file:
.asciz "/bin/sh"
.section .text
.globl _start
_start:
movl $11,%eax
movl $run_file,%ebx
int $0x80
movl $1,%eax
movl $0,%ebx
int $0x80
exp12:sys_chdir()
#change dir just like (cd)
#number 12 sys_call
.section .data
mypath:.ascii "~/etc/network/"
.section .text
.globl _start
_start:
movl $12,%eax
movl $mypath,%ebx
int $0x80
movl $1,%eax
movl $0,%ebx
int $0x80
exp13:sys_time()
#unfinish .....
.section .data
#data:.fill
.section .text
.globl _start
_start:
movl $13,%eax #sys_time
#movl $data,%ebx
int $0x80
movl $1,%eax #sys_exit
movl $0,%ebx
int $0x80
exp14:sys_mknod()
#sys_chnod
#sys_call number 14
#%ebx=const char *
#%ecx=int
#%edx=dev_t
.section .data
data:
.ascii "mydev"
.section .text
.globl _start
_start:
movl $14,%eax
movl $data,%ebx
movl $1,%ecx
movl $60,%edx #cpu dev
int $0x80
movl $1,%eax
movl $0,%ebx
int $0x80
exp15:sys_chmod()
#sys_chmod
#system call number 15
#the paramente
#%ebx=const char *
#%ecx=mode_t ==unsigned int
.section .data
filename:
.ascii "myfile"
.section .text
.globl _start
_start:
movl $15,%eax
movl $filename,%ebx
movl $1,%ecx
int $0x80
movl $1,%eax
movl $0,%ebx
int $0x80
2014-04-07(finish)
exp16: