随笔分类 - 汇编
摘要:EQU var equ 1 与MASM中一致,定义常数 TIMES 与MASM 的 REPT 或者DUP 指令功能类似 其更像是 rept 的地条指令版本 TIMES n xxxx => REPT n xxxx ENDM 比如: 功能:初始化buffer的内容,并把长度凑满 64字节 BUFFER:
阅读全文
摘要:基本格式 nasm -f <format> <filename> [-o <output>] 比如: nasm -f elf myfile.asm ; 将myfile.asm 编译成 elf文件格式,的 myfile.o文件,elf 是linux的可执行程序格式 常用编译命令 -f 指定要编译的格式
阅读全文
摘要:完整的段定义 格式 段名 SEGMENT [定位类型] [组合类型] ['类别'] XXXXXXXXX 段名 ENDS 说明 定位类型 定位类型就是这个段的起始位置的对齐方式,有如下几种 BYTE 没有对齐的要求,随便起始地址是哪里 WORD 起始地址的最后一位是0,即地址是 XXXX XXXX X
阅读全文
摘要:结构 说明: 是一堆数据的定义的集合 基本格式: 结构名称 STRUC 字段的定义 结构名称 ENDS 举例: STUDENT STRUC ID DW ? SCORE DB 1 NAME DB 'STUDENTNAME' STUDENT ENDS 定义变量: 变量名 结构类型 < 参数表 > 举例:
阅读全文
摘要:字符串操作指令 基础设定 操作分为源地址和目标地址,表示源地址和目标地址的寄存器组合都是规定和不能变更的。 源地址: DS: SI 目标地址: ES: DI LODS 描述: 从 源地址(DS: SI)加载一个 BYTE/WORD 到 AL 或者 AX寄存器, 同时根据DF的值以及传送数的尺寸 ++
阅读全文
摘要:一、什么是中断 中断是打断CPU正常的指令执行顺序转而去执行位置的指令的行为。非常类似于CPU不听使唤的执行了一个CALL指令的样子。 中断主要由三部分组成,中断号 、中断向量表、中断程序程序。 中断号指明要去执行什么程序, 中断向量表表明这个程序存放的位置。 中断向量表存放在内存开始处,即地址为
阅读全文
摘要:一、什么是IO端口 计算机上有很多输入输出设备,比如显示器,打印机,鼠标,键盘。这些设备通过接口和CPU相连接,并提供了一组寄存器给CPU用于控制对应的硬件,为了方便管理这些寄存器,CPU给这个寄存器统一分配地址,如管理内存一样使用这些寄存器,这就称之为IO端口。 二、IO端口输入输出指令 80x8
阅读全文
摘要:前言 从本博文开始,我将主要学习NASM的语法格式,辅以MASM语法的相关了解 一个最简单的helloword 流程控制 1. if-else if-else 语句其实就是 cmp + 条件判断语句(如, je,ja,jb jne...)语句的组合 原理: 1. 使用cmp来调整标记寄存器的的标记位
阅读全文
摘要:前言 前面介绍了几种自己探索的MBR调试方法,但是可能都没有以下这种方式来的暴力。 IDA+VMware 通过GDB来调试。 参考:https://www.52pojie.cn/thread-173889-1-1.html 声明: 博客直接搬运了以上链接中的图片和部分文字,侵删。 步骤: 1. 先将
阅读全文
摘要:前言 前面已经提到了为什么从MASM转到NASM,并且也简单的介绍了一下MASM和NASM在伪指令和程序结构上的差异,现在就来搭建一下NASM的编译、开发、调试环境吧。 参考资料: http://blog.csdn.net/duweix/article/details/19911967 http:/
阅读全文
摘要:为什么使用NASM 1.开源 2. masm环境搭建麻烦 3. 似乎MASM已经不能编译纯二进制文件了..(听说) 4. 因为我学汇编开始的目的是希望汇编程序能在裸机上跑,所以我选择了nasm NASM 与 MASM的些许差别 这里有一篇文章说的很不错: http://blog.csdn.net/L
阅读全文
摘要:前言 汇编指令和伪指令前面学了不少,现在时候开始写一段完整的汇编程序了。 一个完整的汇编程序 ; 定义了一个堆栈段 SSEG SEGMENT PARA STACK DW 256 DUP(?) SSEG ENDS ; 定义一个数据段 DSEG SEGMENT MESS DB 'HELLO',0DH,O
阅读全文
posted @ 2017-10-15 11:23
蹦蹦骑士
摘要:前言 编写汇编代码的时候会使用到两种语句,一种就是前面介绍的汇编指令又CPU提供功能支持,另一种呢叫做伪指令,伪指令是由汇编的编译器提供支持。所以伪指令的运行结果都必须实在编译的时候就能确定的,下面介绍的就是伪指令了。 注意接下来介绍的伪指令都是基于MASM汇编编译器,比较常用的还有NASM 它的语
阅读全文
摘要:前言 (1)指令的一般格式 [标号:] 助记符 [操作数1 , [操作数2]] [; 注释] 一行一条指令 助记符就是指令的名称,每条指定必定有个助记符。 助记符前面的标号是给汇编编译器看的,由我们自己取名,一般取表示本段功能的相关的名字,对编译器而言表示的是指令的地址。 每个指令根据指令作用的不同
阅读全文
摘要:寻址方式 所谓寻址方式就是表示指令中数据所在地址的方式。一共有七种寻址方案 立即数寻址 寄存器寻址 直接寻址 寄存器直接寻址 寄存器相对选址 基址变质寻址 相对基址变质寻址 在此之前,先介绍一个数据复制指令 MOV 指令, 格式是 MOV AX, BX 。 AX, BX是寄存器上一章介绍过的MOV就
阅读全文
摘要:《80x86汇编语言程序设计教程》 第一章讲的是cpu的发展历史从8位cpu发展到如今的64位CPU,但是intel的cpu一直是向下兼容的也就是说现在的cpu还是兼容8位汇编的。 我们首先来讲一下8086 CPU的基础设定,这些设定是8086 CPU硬件设计决定的所以只要记住就是了,对我们而言没什
阅读全文

浙公网安备 33010602011771号