4个数据寄存器(EAX、EBX、ECX和EDX)2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP)6个段寄存器(ES、CS、SS、DS、FS和GS)1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1、数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省 ...
分类:
其他好文 时间:
2016-10-31 21:45:23
阅读次数:
218
镇场诗:———大梦谁觉,水月中建博客。百千磨难,才知世事无常。———今持佛语,技术无量愿学。愿尽所学,铸一良心博客。—————————————————————————————————————————— 起因,上汇编语言的课,老师让我们判断各个指令运行后flag标志寄存器各个位的状态。这我就不乐意了, ...
来自:“http://blog.sina.com.cn/s/blog_af95b18b0101hmx0.html” pushad: 将所有的32位通用寄存器压入堆栈pusha:将所有的16位通用寄存器压入堆栈pushfd:然后将32位标志寄存器EFLAGS压入堆栈pushf::将的16位标志寄存器E ...
分类:
其他好文 时间:
2016-06-13 08:49:56
阅读次数:
208
CLI禁止中断发生STL允许中断发生 这两个指令只能在内核模式下执行,不可以在用户模式下执行;而且在内核模式下执行时,应该尽可能快的恢复中断,因为CLI会禁用硬件中断,若长时间禁止中断会影响其他动作的执行(如移动鼠标等等),系统就会变得不稳定。在标志寄存器中中断标志清零的情况下,可以以“int ×× ...
分类:
其他好文 时间:
2016-05-24 19:13:55
阅读次数:
120
这个版本主要在逆向代码输出上做功夫。首先就是对反汇编代码指令的直译,寻址访问则适配成结构体成员访问或数组访问的方式,使更加直观,效果图如下: 另一图: 接着就是有关SSE指令的直译: 直译中并没有对检测比较和条件跳转进行翻译,因为它们只有在couple成对才有意义(, 一条指令对标志寄存器进行修改, ...
分类:
其他好文 时间:
2016-05-13 10:47:20
阅读次数:
140
本博文系列参考自>第三版,作者:王爽
本博文将继续介绍另外一种内中断类型,int中断。
13.1 int中断
int指令格式为:int n,其中n为中断类型码。
int n中断过程如下:
取中断类型码n
标志寄存器入栈,TF=0,IF=0
CS,IP入栈
(CS)=(n*4),(IP)=(n*4+2)
上面的代码段运行后将在屏幕中间显示一个’!’,然后再...
分类:
编程语言 时间:
2016-05-03 18:41:46
阅读次数:
291
本博文系列参考自>第三版,作者:王爽
8086CPU的标志寄存器有16位,其中存储的信息通常被称为程序状态字(PSW)。除了前面介绍的寄存器。本博文将介绍最后一个寄存器,标志寄存器。不同于之前的寄存器,标志寄存器是按位起作用的。其每一位都有特殊的含义。
8086标志寄存器的结构如下图所示:
标志寄存器的1,3,5,12,13,14,15都没有特殊含义。其0,2,4...
分类:
编程语言 时间:
2016-04-29 15:52:04
阅读次数:
276
一、《Linux内核分析》总结 (一)计算机是如何工作的 1.存储程序计算机工作模型 2. X86CPU的寄存器:通用寄存器、段寄存器、标志寄存器等。 3.计算机的汇编指令 (1)movl指令: 寄存器寻址,寄存器模式,以%开头的寄存器标示符。不和内存打交道,eax赋值给edx; 立即寻址,把立即数 ...
分类:
系统相关 时间:
2016-04-20 23:11:27
阅读次数:
307
这里讲一个特殊的寄存器,flag 先看flag的16位显示 11.1 zf 指令执行后,结果0,ZF=1 指令执行后,结果不为0,ZF=0 11.2 pf 指令执行后,所有bit位中1的个数是否位偶数,若为偶数,那么pf=1 若为奇数,pf=0 11.3 sf 指令执行后,结果负,SF=1 指令执行 ...
分类:
编程语言 时间:
2016-04-11 22:36:53
阅读次数:
217
一、运算结果标志位 1、进位标志CF(Carry Flag) 进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。 使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值 ...
分类:
其他好文 时间:
2016-04-02 16:04:28
阅读次数:
118