汇编语言 - 内存管理

汇编语言 - 内存管理

汇编语言 - 内存管理 内存管理是系统编程的重要部分。在汇编语言中,你可以通过系统调用动态分配和释放内存,直接操作内存地址,实现高效的内存管理。 程序的内存布局 一个运行中的程序在内存中的分布如下: 一个 Linux 进程在内存中的布局如下: 高地址 (0xFFFFFFFF) +----------------------+ | 内核空间 | 用户程序不可访问 +----------------..

汇编指令速查表

汇编指令速查表

汇编指令速查表 本文以最常见的 x86 架构汇编语言为对象,将常用指令助记符按功能分类整理,方便学习和快速查阅。 指令助记符在不同汇编器(MASM、NASM、GAS)中基本一致,仅在操作数书写格式上略有差异。 九大类指令概览: 分类 指令数量 主要用途 数据传送指令 15 条 在寄存器、内存、I/O 端口之间搬运数据 算术运算指令 18 条 加减乘除、比较及数制调整 逻辑运算与移位指令 14 条 按位与或非异..

汇编语言 - 字符串处理

汇编语言 - 字符串处理

汇编语言 - 字符串处理 字符串处理是编程中常见的需求。在汇编中处理字符串意味着直接操作内存中的字节序列,虽然更底层但也更灵活。 字符串的定义和存储 在 NASM 中,字符串本质上是字节序列,可以用 DB 伪指令定义: 实例 [mycode4 type='asm'] ; 字符串定义方式 section .data ; 方式1:标准字符串 str1 db 'Hello, run..

汇编语言 - 数组

汇编语言 - 数组

汇编语言 - 数组 数组是连续存放的同类型数据集合。在汇编中,数组就是内存中一段连续的空间,通过基址加偏移的方式来访问每个元素。 一维数组定义 实例 [mycode4 type='asm'] ; 数组的定义方式 section .data ; 方式1:逐个列出元素 arr1 dd 10, 20, 30, 40, 50 ; 5 个双字元素的数组 ; 方式2:用 dup 初始化 ..

汇编语言 - 过程(子程序)

汇编语言 - 过程(子程序)

汇编语言 - 过程(子程序) 过程(Procedure)是汇编语言中实现函数/子程序复用的机制,它能让代码结构化、可重用。理解过程和栈的关系是汇编编程的重要里程碑。 什么是过程 过程 是一段可以被多次调用的代码块,类似于高级语言中的函数(Function)或子程序(Subroutine)。 在汇编中,过程通过 CALL 指令调用,通过 RET 指令返回。CALL 会将返回地址压入栈中,RET 从栈中弹出返回地址并跳转回去。 ..

汇编语言 - 递归

汇编语言 - 递归

汇编语言 - 递归 递归(Recursion)是函数调用自身的技术。在汇编中实现递归需要正确管理栈帧,每次调用都有独立的参数和局部变量副本。 递归原理与栈帧 递归的核心在于 每次调用创建新的栈帧,将当前状态保存在栈上。 每次递归调用都会把参数、返回地址和局部变量压入栈中。当递归终止时,栈帧逐层弹出,每层获得其子调用的结果并完成计算。 递归要素说明汇编实现 终止条件防止无限递归条件判断 + je/jg 跳转 递归调用函数调用自..

汇编语言 - 宏

汇编语言 - 宏

汇编语言 - 宏 宏(Macro)是 NASM 提供的一种代码复用机制,它允许你在编译时展开代码模板,减少重复编写相似代码的需求。 什么是宏 宏(Macro) 是一种编译时文本替换机制,由汇编器的预处理器在编译前展开。 与过程(Procedure)不同,宏不会有 CALL/RET 开销——每次使用宏时,编译器直接将宏的内容复制到使用位置。 宏不是函数调用,没有栈帧开销;但可执行文件体积会更大,因为每次展开都会复制一份代码。 ..

汇编语言 - 文件管理

汇编语言 - 文件管理

汇编语言 - 文件管理 文件管理是程序与外部存储交互的基础。通过系统调用,汇编程序可以打开、读取、写入和关闭文件,与高级语言一样灵活地处理文件 IO。 文件操作流程总览 文件操作遵循打开→读写→关闭的基本流程,以及三个标准文件描述符: 文件操作相关的系统调用 系统调用调用号用途主要参数 sys_open5打开/创建文件EBX=文件名, ECX=标志, EDX=权限 sys_read3读取文件EBX=fd, ECX..

汇编语言 - 循环结构

汇编语言 - 循环结构

汇编语言 - 循环结构 循环是程序中最常见的控制结构之一。在汇编语言中,你可以用 LOOP 指令或条件跳转来实现各种循环逻辑。 LOOP 指令 LOOP 是 x86 专门为循环设计的指令,它使用 ECX 作为计数器: 每次执行 LOOP 时,ECX 自动减 1,如果 ECX 不为 0 就跳转到目标标签。 实例 [mycode4 type='asm'] ; 文件路径:loop_basic.asm ; LO..

汇编语言 - 数字处理

汇编语言 - 数字处理

汇编语言 - 数字处理 在汇编语言中处理数字涉及到进制转换、ASCII 转换和算术运算的结合。本章详细讲解如何在程序中输入和输出各种进制的数字。 数字的表示方式 计算机内部所有数字都以二进制存储,但程序中可以用不同进制表示: 进制基数NASM 写法数字范围(32位) 二进制20b10101010 或 10101010b0 和 1 八进制80o52 或 52o0-7 十进制10420-9 十六进制160x2A 或 2Ah0-9..