第一个汇编号程序

1. 先让程序跑起来

第一步编写以下代码:  

1 .section .data  #定义数据段
  2 msg:             #定义一个变
  3 .ascii "hello world 123 \n"    #变量的内容为字符串
  4
  5 len=.-msg        # 计算字符串的长度, 表示当前地址减去msg的地址, 得到了msg的长度
  6
  7 msg2:   #定义一个变量
  8 .ascii "bbbb\n"  #变量的内容为字符串
  9
 10 #len=.-msg  #注意, 开始我放这里算msg的长度, 结果把msg2的长度也算进去了.
 11 len2=.-msg2 # 计算msg2的长度
 12 .section .text  # 定义代码段
 13 .global _start  #定义代码段入口, 相当于C 中的main函数, 如果用gcc 编译, 这里_start换成_main
 14 _start:            #定义代码段入口
 15 movl $len, %edx   #系统调用参数三, 打印的长度
 16 movl $msg, %ecx # 系统调用参数二, 起始地址
 17 movl $1, %ebx     #系统调用的1st 参数, 标准输出fd
 18 movl $4, %eax     #能实现打印的系统调用号
 19 int $0x80              # 执行系统调用   (15~19行相当于一个系统调用, 理解 了C中的print())

#

 20
 21 movl $len2, %edx
 22 movl $msg2, %ecx
 23 movl $1, %ebx
 24 movl $4, %eax
 25 int $0x80  #(同19行)
 26
 27 movl $0, %ebx # 返回值
 28 movl $1, %eax # 退出的系统调用
 29 int $0x80  #系统调用---退出
 30
第二步: 编译出hello.o

as -o hello.o hello.s

第三步: 链接生成可执行文件.

ld -o hello hello.o
第四: 

执行:

./hello

输出:

 2. 分析下每一步在做什么.

看以上红色字体.


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值