汇编中push寄存器的影响

简介:

由于汇编代码中的不同位置 ESP+40所指的地址不像EBP+40的地址那个是一定的,ESP+40指向的地址由栈顶变化影响。也就是和操作栈指令 PUSH POP 等影响。

 

汇编栈是一个线性的地址区间,地址上面小大面大。如下图所示,ESP指向栈顶地址

 

PUSH 寄存器相当于 ESP减4。由此可推算

 

那么则有如下公式

前面PUSH数目为PUSH_COUNT

前面POP数目为POP_COUNT

ESP基础值为 B_ESP

则汇编代码中的 ESP+OFFSET = ESP基础值+OFFSET-PUSH数*4。

则有计算代码中ESP+XX的地址实际相对于基础EPS有如下公式:  ESP+OFFSET = B_ESP + OFFSET-(PUSH_COUNT*4)+(POP_COUNT*4)。

那么定一相值,就可以使汇编代码中所有 ESP+XXX。转换为基础值+XXX 这样即可增加汇编代码可读性。

 

相关文章
|
存储 程序员 存储控制器
【读书笔记】汇编语言(第四版)第二章 寄存器
【读书笔记】汇编语言(第四版)第二章 寄存器
195 2
8086 汇编笔记(二):寄存器(内存访问)
8086 汇编笔记(二):寄存器(内存访问)
|
存储 程序员 开发者
深入理解汇编:push、pop、add、sub、lea 指令详解
深入理解汇编:push、pop、add、sub、lea 指令详解
2464 1
|
索引 存储 C语言
【汇编】[bx+idata]的寻址方式、SI和DI寄存器
【汇编】[bx+idata]的寻址方式、SI和DI寄存器
651 0
【汇编】[bx+idata]的寻址方式、SI和DI寄存器
|
编译器 存储 网络协议
【汇编】CS、IP寄存器与代码段,用汇编语言写的源程序,jmp指令
【汇编】CS、IP寄存器与代码段,用汇编语言写的源程序,jmp指令
1599 1
【汇编】CS、IP寄存器与代码段,用汇编语言写的源程序,jmp指令
|
存储 程序员
【汇编】内存的读写与地址空间、寄存器及数据存储
【汇编】内存的读写与地址空间、寄存器及数据存储
1275 1
【汇编】内存的读写与地址空间、寄存器及数据存储
|
存储 IDE Java
二进制到汇编:进制,原码反码补码,位运算,通用寄存器,内存一套打通
二进制到汇编:进制,原码反码补码,位运算,通用寄存器,内存一套打通
401 1
|
存储 Java C++
汇编语言、寄存器分类及程序计数器
汇编语言、寄存器分类及程序计数器
346 0