Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1063376
  • 博文数量: 284
  • 博客积分: 8223
  • 博客等级: 中将
  • 技术积分: 3188
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-01 13:26
文章分类

全部博文(284)

文章存档

2012年(18)

2011年(33)

2010年(83)

2009年(147)

2008年(3)

分类: LINUX

2009-09-17 19:09:52

读入一个文件,将文件内容复制到另外一个文件。
sem.s

.section .data
.equ SYS_READ, 3
.equ SYS_WRITE, 4
.equ SYS_OPEN, 5
.equ SYS_CLOSE, 6
.equ SYS_EXIT, 1

.equ O_READ, 0
.equ O_WRITE, 03101
.equ END_FILE, 0

.equ LINUX_CALL,0x80

.section .bss
.lcomm BUFF_DATA, 16

.section .text
.globl _start
_start:
 movl %esp, %ebp
 subl $8, %esp
 
 movl $SYS_OPEN, %eax
 movl 8(%ebp), %ebx
 movl $O_READ, %ecx
 movl $0666, %edx
 int $LINUX_CALL
 
 movl %eax, -4(%ebp)
 
 movl $SYS_OPEN, %eax
 movl 12(%ebp), %ebx
 movl $O_WRITE, %ecx
 movl $0666, %edx
 int $LINUX_CALL
 
 movl %eax, -8(%ebp)
 
start_loop:
 movl $SYS_READ, %eax
 movl -4(%ebp), %ebx
 movl $BUFF_DATA, %ecx
 movl $16, %edx
 int $LINUX_CALL
 
 cmpl $END_FILE, %eax
 jle end_loop
 
 movl $SYS_WRITE, %eax
 movl -8(%ebp), %ebx
 movl $BUFF_DATA, %ecx
 int $LINUX_CALL
 jmp start_loop
 
end_loop:
 
 movl $SYS_CLOSE, %eax
 movl -4(%ebp), %ebx
 int $LINUX_CALL
 
 movl $SYS_CLOSE, %eax
 movl -8(%ebp), %ebx
 int $LINUX_CALL
 
 movl $1, %eax
 int $LINUX_CALL
 

 

编译:

as -o sem.o sem.s

ld -o sem sem.o

./sem 11 12

阅读(2564) | 评论(0) | 转发(0) |
0

上一篇:递归函数调用

下一篇:汇编练习-动态库

给主人留下些什么吧!~~