Linux下汇编语言------计算n的阶乘
用高级语言比方C语言写个阶乘非常easy,那如今就来熟悉下Linux使用AT&T汇编格式写一个程序来计算阶乘吧
写法一是 使用跳转指令实现。写法二是使用函数来实现
约定:本程序没有将结果打印在标准输出上。
须要使用GDB调试查看
写法一
#as filename.s -o filename.o
#ld filename.o -o filename
# gdb filename .section .data
.section .text
.globl _start
_start:
movl $1, %eax #result = 1
movl $6, %ecx # n = 5
cmpl $1, %ecx
jle .loop_exit .start_loop:
imull %ecx, %eax
subl $1, %ecx
cmpl $1, %ecx
jge .start_loop
movl %eax, %ebx
movl $1, %eax
int $0x80
.loop_exit:
movl $1, %eax
int $0x80
--------------------函数写法待更新-------------------------
写法二:函数递归
.section .data
.section .text
.globl _start
_start:
pushl $5
call .JC movl %eax, %ebx
movl $1, %eax
int $0x80 .JC:
pushl %ebp
movl %esp, %ebp
pushl %ebx
subl $4, %esp
movl 8(%ebp), %ebx #get n = 5; movl $1, %eax #result = 1;
cmpl $1, %ebx
jle .L1
leal -1(%ebx), %eax
movl %eax, (%esp)
call .JC
imull %ebx, %eax
.L1:
addl $4, %esp
popl %ebx
popl %ebp
ret
查看结果:echo $?
Linux下汇编语言------计算n的阶乘的更多相关文章
- linux下汇编语言开发总结
汇编语言是直接对应系统指令集的低级语言,在语言越来越抽象的今天,汇编语言并不像高级语言那样使用广泛,仅仅在驱动程序,嵌入式系统等对性能要求苛刻的领域才能见到它们的身影.但是这并不表示汇编语言就已经没有 ...
- Linux下汇编语言学习笔记0 --- 前期准备工作
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- Linux下的计算命令和求和、求平均值、求最值命令梳理
在Linux系统下,经常会有一些计算需求,那么下面就简单梳理下几个常用到的计算命令 (1)bc命令bc命令是一种支持任意精度的交互执行的计算器语言.bash内置了对整数四则运算的支持,但是并不支持浮点 ...
- Linux下汇编语言学习笔记10 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- Linux下汇编语言学习笔记11 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- Linux下汇编语言学习笔记6 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- Linux下汇编语言学习笔记7 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- Linux下汇编语言学习笔记5 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- Linux下汇编语言学习笔记4 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
随机推荐
- js动态创建和删除option
1.动态创建select function createSelect(){ var mySelect = document.createElement("select&q ...
- 深入浅出CChart 每日一课——快乐高四第六课 二丫的青梅,返璞归真之普通窗体多区域画图
有好些朋友给我反映,就是一个窗体中加入好几个CChartWnd之后.工作不正常.这个的确是这样,CChartWnd会接管原来窗体的消息循环,加入多个CChartWnd之后,就相当于出租房转手好几道,消 ...
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)人机界面Paintbuffer Overflow怎么办
当在界面上绘制了太多元素时,点击运行会在左上角弹出对话框提示内容容量不够 在英文版的说明中,点击Visualization Manager就可以进行设置 更多教学视频和资料下载,欢迎关注以 ...
- Python学习笔记(三)多线程的使用
这节记录学习多线程的心得. Python提供了thread模块,不过该模块的缺点很多,例如无法方便的等待线程结束,所以我们使用更加高级的threading模块. threading模块的使用一 ...
- C++五种迭代器之间的关系
迭代器操作 说明(1)所有迭代器p++ 后置自增迭代器++p ...
- wamp通过phpMyAdmin修改登录密码
初始安装wamp后,默认mysql是没有密码的,这个时候如果想要修改密码,可以按照以下步骤进行: 第一.打开phpMyAdmin,看到界面如图所示: 第二.通过导航找到“用户”,再找到“编辑权限”进行 ...
- mongodb or and 条件拼凑 Query.And Query.Or
查询 1月 7月 8月 的数据 list - [0] { "$or" : [{ "JobDate" : { "$gte" : ISODate ...
- 解决window10系统电脑插入耳机之后没有声音的问题
其实办法也是从百度百科上查到的 ⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄ 可能是因为自己某个不小心的操作更改了设置 1. 首先要点开设置按钮,在搜索栏输入控制面板 (当然知道控制面板在哪里的小伙伴就不用 ...
- python判断文件是否存在目录中
##支持排除文件和目录#!/usr/bin/python #coding:utf-8 import os def list_file(file_name): data = [] file_name = ...
- ajaxform 提交,返回JSON时,IE提示下载的问题解决
在使用AJAXform提交表单时,返回的数据格式为JSON,头文件是application/json 时,在 火狐.ie9和谷歌下都能正常解析,在ie7下会提示下载. 解决方法:指定返回页的头文件为& ...