随笔分类 -  ASM-学习

摘要:ddd 阅读全文
posted @ 2019-07-03 00:39 findumars 阅读(754) 评论(0) 推荐(0) 编辑
摘要:ddd 阅读全文
posted @ 2019-05-05 10:34 findumars 阅读(650) 评论(0) 推荐(0) 编辑
摘要:正在学PE结构...感谢个位大哥的文章和资料...这里先说声谢谢一般高级编译器都是编译好的PE头部,例如MASM,TASM等一直都说NASM,FASM是低级编译器.可以自定义结构但是苦于无人发布相关文章说明..我这里就简单的用NASM写一下由于刚学PE结构许多东西都不太懂希望个位大侠指点如何打造一个 阅读全文
posted @ 2019-01-02 14:10 findumars 阅读(819) 评论(0) 推荐(0) 编辑
摘要:现在总结一下:其中牵扯到lea指令,mov指令,[] 一.lea指令:对于寄存器来说:第二个操作数是寄存器必须要加[],不然报错,这里lea就是取[寄存器]的值,如:mov eax,2lea ebx,[eax];执行后ebx=2mov ebx,eax;等同于上句lea ebx,eax;编译器报错: 阅读全文
posted @ 2018-08-01 22:35 findumars 阅读(6389) 评论(1) 推荐(0) 编辑
摘要:这几天一直在弄一个嵌入式的程序,搭环境,熟悉库函数,熟悉汇编,乱成一锅粥,到现在还是没有什么系统性的收获。 或许下周弄出来吧,(一定得弄出来,不然老大该跟我急了……)。 今天,熟悉汇编,好歹用汇编写出了hello world,算是我汇编生涯的一个起点吧, 写下来纪念一下: 例: date segme 阅读全文
posted @ 2018-04-13 19:06 findumars 阅读(369) 评论(0) 推荐(0) 编辑
摘要:《80x86汇编语言程序设计》保护模式第一个例题的一些个人理解和注视 [cpp] view plain copy ; 16位偏移的段间直接转移指令的宏定义 jump macro selector, offsetv db 0eah ; jmp far 的操作码 dw offsetv dw select 阅读全文
posted @ 2018-01-16 22:46 findumars 阅读(444) 评论(0) 推荐(0) 编辑
摘要:看《天书夜读》第一章,感觉很亲切,于是自己动手操起VS,建立一个默认的Win32 Console Application,在一个空空的main函数里面F9下一个断点之后,按下F5进入调试,然后Alt+8进入反汇编查看窗口,代码如下,自己给他加了点注释,还是很浅显的东西。这里的是Debug模式的反汇编 阅读全文
posted @ 2017-07-06 21:03 findumars 阅读(1388) 评论(0) 推荐(0) 编辑
摘要:[plain] view plain copy .386 .model flat,stdcall option casemap:none ;include 定义 include windows.inc include gdi32.inc includelib gdi32.lib include us 阅读全文
posted @ 2017-05-22 18:18 findumars 阅读(1243) 评论(0) 推荐(0) 编辑
摘要:[cpp] view plain copy [cpp] view plain copy http://blog.csdn.net/zwfgdlc/article/details/17467453 阅读全文
posted @ 2017-01-23 21:58 findumars 阅读(1543) 评论(0) 推荐(0) 编辑
摘要:堆栈种分配的局部变量所谓的“标号”,你以为是什么?(都是那些该死的宏惹的祸,大家要都是老老实实写代码,就不会有这些疑问了)。 比如你用local在栈上定义了一个局部变量LocalVar,你知道实际的指令是什么么?一般都差不多像下面的样子: push ebp mov esp, ebp sub esp, 阅读全文
posted @ 2016-08-26 17:25 findumars 阅读(1286) 评论(0) 推荐(0) 编辑
摘要:转载于:http://cs.fjzs.edu.cn/ketang/hbyy/11-3-2.htm 11.3.2 数据传送指令 为了满足协处理器和CPU之间进行数据交流的需求,就需要实现内存单元和协处理器之间进行数据传送的指令。协处理器的指令系统中有三大类数据传送指令:BCD传送指令、浮点数传送和整数 阅读全文
posted @ 2016-07-03 05:22 findumars 阅读(1189) 评论(0) 推荐(0) 编辑
摘要:不会灵活使用函数指针,就不算掌握C语言 阅读全文
posted @ 2016-02-12 18:08 findumars 阅读(351) 评论(0) 推荐(0) 编辑
摘要:函数调用规范当高级语言函数被编译成机器码时,有一个问题就必须解决:因为CPU没有办法知道一个函数调用需要多少个、什么样的参数。即计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数调用者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结构来支持参数传递。 函数调用时,调用者依次把参数压... 阅读全文
posted @ 2015-12-04 01:27 findumars 阅读(1351) 评论(0) 推荐(0) 编辑
摘要:比如你用local在栈上定义了一个局部变量LocalVar,你知道实际的指令是什么么?一般都差不多像下面的样子: push ebp mov esp, ebp sub esp, 4 现在栈上就有了4各字节的空间,这就是你的局部变量。 接下来,你执行mov LocalVar, 4,那么实际的指令又是什么 阅读全文
posted @ 2015-08-02 02:40 findumars 阅读(2760) 评论(0) 推荐(0) 编辑
摘要:留个爪,稍后学习选择编译器nasm?fasm?yasm?还是masm、gas或其他?前面三个是免费开源的汇编编译器,总体上来讲都使用Intel的语法。yasm是在nasm的基础上开发的,与nasm同宗。由于使用了相同的语法,因此nasm的代码可以直接用yasm来编译。yasm虽然更新较慢,但对nas... 阅读全文
posted @ 2014-12-05 01:54 findumars 阅读(6892) 评论(0) 推荐(0) 编辑
摘要:汇编语言--call和ret指令call和ret指令call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP。它们经常被共同用来实现子程序的设计。ret和retfret指令用栈中的数据,修改IP的内容,从而实现近转移;retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移。CP... 阅读全文
posted @ 2014-11-25 21:32 findumars 阅读(1603) 评论(0) 推荐(0) 编辑
摘要:摘要:虽然jmp指令提供了控制转移,但是它不允许进行任何复杂的判断。80x86条件跳转指令提供了这种判断。条件跳转指令是创建循环和实现其他条件执行语句,如if…endif的基本要素。条件跳转指令检查一个或多个标志位,判断它们是否匹配某个特殊条件(就像setcc指令):如果标志匹配成功,该指令就将控制... 阅读全文
posted @ 2014-11-25 21:30 findumars 阅读(19544) 评论(0) 推荐(0) 编辑
摘要:32位CPU所含有的寄存器有:4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI)2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP)1个标志寄存器(EFlags)----------------------... 阅读全文
posted @ 2014-11-25 21:23 findumars 阅读(6004) 评论(1) 推荐(0) 编辑
摘要:一、汇编语言中PTR的含义及作用mov ax,bx ;是把BX寄存器“里”的值赋予AX,由于二者都是word型,所以没有必要加“WORD”mov ax,word ptr [bx];是把内存地址等于“BX寄存器的值”的地方所存放的数据,赋予ax。由于只是给出一个内存地址,不知道希望赋予ax的,是byt... 阅读全文
posted @ 2014-05-20 17:17 findumars 阅读(2858) 评论(0) 推荐(0) 编辑
摘要:段寄存器是因为对内存的分段管理而设置的。16位CPU有四个段寄存器,其程序可同时访问四个不同含义的段,引用方面有如下规定:1. 取命令:段寄存器CS指向存放程序的内存段,IP是用来存放下条待执行的指令在该段的偏移量,把它们合在一起可在该内存段内取到下次要执行的指令。2. 取堆栈:段寄存器SS指向用于... 阅读全文
posted @ 2014-05-04 23:55 findumars 阅读(6572) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示