Jmp修改Eip的指令如果跳转的地址到开始跳转的地址 字节小于128个字节 则要加一个short jmp(无条件跳转)唯一的作用就是修改eip 唯一影响的就是eip的值 jmp 寄存器/立即数Call指令call指令执行之后压入(堆栈)Call的下一条地址ret指令相当于POP eip作业 使用jmp call return 跳出去再调回来
本文详细介绍了计算机编程中的寄存器、堆栈和标志寄存器的相关知识。文章首先解释了push和pop指令如何影响栈顶指针,然后讨论了PE、下断点、WIN32 API、函数调用和堆栈图的绘制。接着,文章深入探讨了标志寄存器中的各个标志位,如CF、PF、AF、ZF、SF和OF,并解释了它们在不同情况下的含义。文章还列举了会改变标志位的指令,包括算术运算、逻辑运算和移位/循环移位指令。最后,文章介绍了一...
本文介绍了内存地址、堆栈、寄存器窗口和汇编窗口的数据存放方式,以及寄存器的本质和显示逻辑。详细解释了五种内存寻址方式:直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址,并在OD中进行了演示。文章还展示了如何通过OD写一个堆栈的结构,包括堆栈的分配、压入数据、取出数据和弹出数据的过程。最后,提供了一些练习题目,帮助读者巩固对内存寻址和堆栈操作的理解。
本文介绍了CPU中的通用寄存器和内存的读写操作。通用寄存器位于CPU内部,执行速度快但成本较高,而内存容量大但速度较慢。寄存器和内存都是存储数据的容器,有宽度限制。计算机中常用的单位有BYTE、WORD和DWORD,分别对应8位、16位和32位。32位计算机的寻址范围为4GB。文章还讨论了从指定内存中读取和写入数据的方法,并提供了一些寄存器和内存之间的数据移动示例。最后,文章指出32位计算机...
本文介绍了数据宽度的概念,包括4位、8位、16位和32位数据的存储范围和表示方法。同时,解释了计算机中的容器单位,如字节、字和双字。文章还讨论了逻辑运算,包括或、与、异或和非,并展示了它们在实际应用中的使用,例如CPU计算加法、获取特定位的值和简单的加密算法。最后,文章提供了三个练习题,涉及八进制数的计算、使用异或进行加密和解密,以及仅使用逻辑运算计算减法。