linux汇编输入程序,linux汇编学习(-)之从键盘输入输出

看了一个多月的汇编始终都是门外汉,连个输入输出都很困难,今天终于查阅相关资料实现了

0818b9ca8b590ca3270a3433284dd417.png,也借此寒假的时间好好学习一下汇编,就用下面这段代码来开始汇编的学习吧,如果有什么错误,还请各路大大见谅,毕竟本人也是菜鸟一个!

0818b9ca8b590ca3270a3433284dd417.png

#实现从键盘输入字符串 并输出

#如果不清楚系统调用函数参数可以使用man 2 function_name 查看

#如 man 2 read

#参数与寄存器对应关系为从左到右分别为ebx,ecx,edx,...(注此为lz自己发现的规律,不一定正确)

#eax 用于指定系统调用的函数代码

#函数对应的宏代码定义可以在头文件/usr/include/asm/unistd.h中看到

.section .bbs #定义bbs段

.lcomm buffer,30

.section .text

.globl _start

_start:

movl $buffer,%ecx #下面三条语句将sys_read参数分别传入到相应寄存器,$加变量名相当于取地址

movl $30,%edx

movl $0,%ebx

movl $3,%eax #系统调用sys_read函数代码

int $0x80 #使用ox80指定执行系统调用中断代码

movl $1,%ebx

movl $4,%eax #系统调用sys_write

int $0x80

movl $0,%ebx

movl $1,%eax #系统调用sys_exit

运行结果如下:

0818b9ca8b590ca3270a3433284dd417.png

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值