数据窗口的数据是从低位到高位,跟汇编窗口和反汇编窗口相反 lea指令 储存的是地址编号
什么是堆栈:
一种内存的读写方式
堆栈的优点:
临时储存大量的数据,便于查找,能记录存入数据的量
堆栈操作: 两个寄存器,一个是栈底,一个是栈顶,栈底一般都是永远不变的,栈顶会变(可以用sub,add或者是lea来改变栈顶指向的值),找需要的值时可以用栈底或栈顶加偏移的方法 可以先存数据再更换栈顶地址,也可以先换地址再存数据 存入数据可以成为压入数据或者压栈,入栈 push和pop指令: push指令可以同时存入数据和改变栈顶地址, 1.)如果push后面是一个立即数或者是一个32位的寄存器,无论多大地址都会减4, 2)push后面不能是8位的 3.)push16位的寄存器地址减2 4.)push后面也可以是地址,跟寄存器的规律相同 pop指令可以同时弹出数据和改变栈顶地址 pop指令的使用和push相同,只不过是地址会加 pushad和popad指令: pushad就是把八个通用寄存器的数据存到堆栈中 popad就是把堆栈的数据放回八个通用寄存器中 可以称为保存堆栈 标志寄存器: CF:进位标志 :如果运算结果的最高位产生了一个进位或错位,那么其值为1,否则其值为0 PF:奇偶标志:奇偶标志PF用于反应运算结果中“1”的个数如果“1"的个数为偶数,则PF的值为1,否则为0(看1的个数时一定要转成二进制) AF:辅助进位标志:在发生以下情况时辅助进位的值为1否则为0 1.)在字操作时,发生低字节向高字节进位或错位时 2.)在字节操作时,发生低4位向高4位进位或错位时 ZF:零标志:零标志用来反映运算结果是否为0,如果运算结果为0,则ZF变成1否则为0 SF:符号标志:反映运算结果的符号位,与运算结果的最高位相同 OF:溢出标志:用来反映有符号数加减运算所得结果是否溢出,如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值为1否则为0(与CF的区别在于运算是否是有符号的,有符号的看OF,无符号的看CF) 正+正=正 如果结果是负数,则说明有溢出 负+负=负 如果结果是正数,则说明有溢出 正+负 永远都不会溢出 都要转换为二进制数 ADC指令:带进位加法,两边不能同时为内存,宽度要一样 SBB指令:带错位减法,两边不能同时为内存,宽度要一样 XCHG指令:交换数据,两边不能同时为内存,宽度要一样 MOVS指令:移动数据 内存-内存,宽度要一样 STOS指令:将AL/AX/EAX的值储存在指定的单元格 JUP指令可以修改EIP的值,无条件修改 CALL指令也能修改EIP的值,一般跟RETN成对出现,寄存器的值也会发生变化
|