![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux汇编教程
文章平均质量分 77
Wyatt Jee
show me the code
展开
-
Linux汇编教程04:寻址方式
这一节,我们主要来讨论寻址方式,这一点十分重要。我们上一节有稍微提了一下,内存地址引用的通用格式:地址或偏移(%基址寄存器, %索引寄存器, 比例因子 )结果地址 = 地址或偏移 + %基址寄存器 + 比例因子 + %索引寄存器地址或偏移和比例因子必须是常数,剩下的那两个必须是寄存器,在缺省的情况下,都用0来代替。立即寻址方式直接将值加载到目地位置中movl $22原创 2015-05-09 11:48:34 · 680 阅读 · 0 评论 -
Linux汇编教程03:大小比较操作
我们在上一讲中,简单了解了汇编程序大概的样子。接下来我们来了解一下,汇编程序的大小比较操作。所以我们以编写寻找一堆数中的最大值作为学习的载体。 在编写程序之前,先要分析我们的目的,在得出解决方案。目的:在一堆数中找到最大的数思路:要实现这个目的,首先,我们一定要对数据进行索引,每一次比较,两个数应该分别占用一个寄存器,得到最大值,所以,我们有一个寄存器一定是存放最大原创 2015-05-07 21:09:15 · 1091 阅读 · 0 评论 -
Linux汇编教程11:函数与栈
开发一个程序,把所有的功能代码都在一块,会让程序变得难以维护。为了协助小组中的其他成员分工合作,我们需要把程序划分成互相独立的模块。一个模块问题不会牵连整个项目。一个程序有数千个函数构成,每一个函数实现一个功能,现在,我们开始学习函数部分。一个函数有下面一个部分函数名 —— 函数的名称作为一个标签,代表函数代码的起始位置。函数参数 —— 函数参数是现实给函数处理的数据项局部变量原创 2015-05-17 10:46:18 · 943 阅读 · 0 评论 -
Linux汇编教程12:函数范例
上一讲,我们介绍了函数和栈,这一讲我们就来写一个程序来巩固前面的内容。我们要写一个计算乘方的函数power,这个函数接受两个函数。我们先完成程序的整体框架,之后再来写power函数,或者这两个部分相互完成。.section .data.section .text.globl _start_start:pushl $2pushl $10call power.type原创 2015-09-15 22:45:14 · 734 阅读 · 0 评论 -
Linux汇编教程13:系统调用和文件处理上
缓冲区和.bss 缓冲区是连续的字节块,用于批量数据传输。.bss段类似于数据段,不同的是它不占用可执行程序空间。.bss段可以保存存储位置,却不能对其进行初始化。为了实现这一点,我们需要如下指令:.section .bss.lcomm buffer, 500.lcomm指令将开辟500字节的空间,使用buffer这个符号指向这个区域。接下来原创 2015-09-15 22:46:22 · 780 阅读 · 0 评论 -
Linux汇编教程14:系统调用和文件处理下
紧跟着上一节,这一节我们来完成把小写变大写的功能。在开始之前,我们简单说一下寄存器存放的东西。%eax – 缓冲区起始地址%ebx – 缓冲区大小%edi – 当前缓冲区偏移量%cl – 当前正在检测的字节具体实现如下: # 我们搜索的下边界 .equ LOWERCASE_A, 'a' # 我们搜索的上边界 .equ LOWERCASE_Z, 'z原创 2015-09-16 21:03:07 · 719 阅读 · 0 评论