汇编
文章平均质量分 69
aksnzhy
这个作者很懒,什么都没留下…
展开
-
如何正确的对待汇编学习和反汇编学习?
首先要学会正确的学习方式。 学习汇编的正确方式: 1> 建议以 王爽汇编这本教材 为初级入门书籍 2> 在以 80x86汇编语言程序设计教程[黑皮书] 这本书 来深入学习32BIT的汇编以及保护模式的编程严格转载 2011-09-11 13:23:51 · 2397 阅读 · 1 评论 -
<学习笔记>王爽汇编语言__标志寄存器
CPU内部的寄存器中,有一种特殊的寄存器,具有以下3种作用。(1)用来存储相关指令的某些执行结果(2)用来为CPU执行相关指令提供行为依据(3)用来控制CPU的相关工作方式这种寄存器在8086CPU中被称为标志寄存器。8086CPU的标志寄存器有1原创 2011-09-22 12:12:23 · 2427 阅读 · 0 评论 -
走近汇编理解与内核编程
2006年,我工作时的座位坐在wowocock旁边。wowocock写代码的时候代码风格一团糟。满篇都是混乱型的命名、超级跨全工程的全局变量,诡异的跳转。而且屡教不改。但是调程序却很牛,开着WinDbg,基本上不用看源码,也知道发生了什么。因为不用看源码,所以看Windo转载 2011-10-14 22:33:05 · 1339 阅读 · 0 评论 -
C++反汇编之“认识启动函数,找到用户入口”
VC++开发的程序,在调试时总是从main或者WinMain开始的。初学编程时老师一定告诉过我们这是程序的入口,也就是程序的第一条指令执行处。这个认识其实是错误的,在他们之前还要更早的调用者。 在应用程序被加载时,操作系统会分析执行文件内的数据,分配相关资源,读取文件中的代码和数据适合的内存单元,然后才是执行入口代码,入口代码其实并不是main或WinMain,通常是mainCR原创 2012-01-28 16:35:04 · 2567 阅读 · 1 评论 -
深入浅出Windows PE(一) PE文件头
深入浅出Windows PE(一) PE文件头 PE文件头记录了PE文件中的所有数据组织方式,它类似于一本书的目录,通过目录我们可以快速定位到某个具体的章节;通过PE文件头部分对某些数据结构的描述,我们也可以定位到那些不在文件头部的信息,比如导入表数据,导出表数据,资源表数据等。1.与PE有关的基本概念地址PE中涉及的地址有四类,他们分别是:* 虚拟内存地址(VA)原创 2012-04-10 22:29:08 · 8586 阅读 · 0 评论 -
8086/8088汇编指令系统剖析(一)
这篇文章详细介绍8086/8088指令集中的大部分重要指令。 指令集说明 1.分组 与早先的8位微处理器相比,8086/8088的指令系统丰富,而且指令功能强大。大多指令既能处理字数据,又能处理字节数据;算术运算和逻辑运算不局限于累加器,存储器操作数也可以直接参加算术逻辑运算。8086/8088的指令系统可以分为如下六个功能组:(1)数据传送(2)算数运算原创 2012-05-16 22:21:33 · 2831 阅读 · 0 评论 -
8086/8088汇编指令系统剖析(三)
乘除运算指令 8086/8088除了提供加减运算指令外,还提供乘除运算指令。乘除运算指令分为无符号数运算指令和有符号数运算指令,这点与加减指令不同。乘除运算指令对标志位的影响有些特别,不像加减运算指令对标志位的影响那样自然。 1.乘法指令 在乘法指令中,一个操作数总是隐含在寄存器AL(8位数相乘)或者AX(16位数相乘)中,另一个操作数可原创 2012-05-16 22:23:26 · 2707 阅读 · 0 评论 -
8086/8088汇编指令系统剖析(二)
标志操作指令 8086/8088指令集中,有一部分指令是专门对标志寄存器或标志位进行的。包括四条标志寄存器传送指令和七条专门用于设置或者清除某些标志位的指令。 1.标志传送指令 标志传送指令属于数据传送指令组。 (1)指令LAHF(Load AH with Flags) 指令LAHF采用固定寻址方式,其指令格式如下:原创 2012-05-16 22:24:21 · 2453 阅读 · 0 评论 -
<学习笔记>王爽汇编语言__CALL和RET指令
call和ret都是转移指令,他们都修改IP,或同时修改CS和IP。他们经常被共同用来实现子程序的设计。1.ret 和 retfret指令用栈中的数据,修改IP的内容,从而实现近转移。retf指令用栈中的数据,修改CS和IP的内容,从而实现远转原创 2011-09-21 16:45:53 · 6210 阅读 · 0 评论 -
<学习笔记>王爽汇编语言__寄存器
对于一个汇编程序员来说,CPU中的主要部件是寄存器。寄存器是CPU中程序员可以用指令读写的部件。 不同的CPU,寄存器的个数,结构是不相同的。8086CPU有14个寄存器,每个寄存器都有一个名称:AX,BA,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES原创 2011-09-12 11:57:21 · 1578 阅读 · 0 评论 -
<学习笔记>王爽汇编语言__再论寄存器
在上篇文章中,我们主要从CPU的角度复习了8086CPU的逻辑结构,形成物理地址的方法和相关的一些寄存器。这篇文章我们一内存访问的角度来继续学习几个寄存器。内存中字的存储:CPU中,用16位寄存器来存储一个字。高8位存放高位字节,低8位存放低位字节。在内存中存储时原创 2011-09-12 18:15:46 · 1604 阅读 · 0 评论 -
<学习笔记>王爽汇编语言__[BX]和loop指令
[bx]和[0]一样同样表示一个内存单元,它的偏移地址在bx中。loop英文单词“循环”的意思,显然这个指令和循环有关。[bx]下面这条指令:mov ax , [bx]功能:bx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中,将SA:EA处的原创 2011-09-12 22:15:42 · 1791 阅读 · 0 评论 -
<学习笔记>王爽汇编语言__包含多个段的程序
在前面的程序中,只有一个代码段。现在有一个问题是,如果程序需要其他空间来存放数据,使用哪里呢? 程序取得所需空间的方法有两种,一是在加载程序的时候为程序分配,再就是在程序执行的过程中向系统申请。我们若要一个程序在被加载的时候取得所需空间,则必须要在源程序中作出说明。我们通原创 2011-09-13 15:24:56 · 1566 阅读 · 0 评论 -
<学习笔记>王爽汇编语言__更加灵活的定位内存地址的方法
在之前的文章中,我们用[0],[bx]的方法定位内存单元的地址,我们现在将用一些具体问题来复习一些更灵活的定位地址内存的方法和相关的编程方法。 and和or指令:(1)and指令,逻辑与指令,按位进行与运算例如指令:mov al,01100011Band a原创 2011-09-14 11:17:42 · 1720 阅读 · 0 评论 -
<学习笔记>王爽汇编语言__处理数据的两个基本问题
计算机进行数据的处理和运算,那么有两个基本的问题包含在其中:(1)处理的数据在什么地方(2)要处理的数据有多长1.关于bx , si,di,bp(1)在8086CPU中,只有这四个寄存器可以用在[...]中来进行内存单元的寻址。原创 2011-09-20 14:58:05 · 1756 阅读 · 0 评论 -
<学习笔记>王爽汇编语言__转移指令原理
可以修改IP,或者可以同时修改CS和IP的指令统称为转移指令。8086CPU的转移行为有以下几类:* 只修改IP时,称为段内转移,比如:jmp ax* 同时修改CS和IP时,称为段间转移,比如:jmp 1000:0由于转移指令对IP的修改范围不同,段内转移又分为:原创 2011-09-20 20:22:05 · 1971 阅读 · 0 评论 -
8086/8088汇编指令系统剖析(四)
<!--@page {margin:2cm}p {margin-bottom:0.21cm}-->转移指令8086/8088提供了大量用于控制程序流程的指令,按功能分为如下四类:(1)无条件转移指令和条件转移指令;(2)循环指令;(3)过程调用和过程返回指令(4)软中断指令和中断返回指令由于程序代码可以分为多个段,原创 2012-05-18 23:03:39 · 2328 阅读 · 1 评论