Insist_2020 发表于 2021-5-20 21:31

滴水汇编第五天

本帖最后由 Insist_2020 于 2021-5-20 22:32 编辑

堆栈
1.32位汇编寻址方式
         <1>处理器根据指令中给出的地址信息来寻找有效地址的方式,是确定本条指令的数据地址以及下一条要执行的指令地址的方法。
         <2>立即数寻址:直接给寄存器赋值
         
             <3>寄存器寻址:操作数存放在CPU的内部寄存器中
         
             <4>直接寻址方式:有效地址在指令中直接给出;LEA(Load effect address):取有效地址,也就是取偏移地址
         
            <5>寄存器间接寻址:有效地址在寄存器
         
             <6>寄存器相对寻址方式:有效地址是寄存器内容与位移量之和
         
            <7>基址变址寻址方式:有效地址由基址寄存器的内容加上变址寄存器的内容构成
            
            <8>相对基址变址寻址方式:有效地址是基址寄存器、变址寄存器与位移量之和:
            
            <9>比例因子变址寻址方式:比例因子只能是1,2,4,8
            
            <10>基址比例因子变址寻址方式
            
            <11>相对比例因子基址变址寻址方式
            
2.堆栈
         <1>栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底
         <2>栈的特点:后进先出(Last-In/First-Out);在程序中可以临时存储大量的数据,便于查找,在程序中栈的增长方向从高地址到低地址
         <3>模拟堆栈:一般情况堆栈中随着入栈和出栈而变化,栈底不会变化;所以一般通过栈底加偏移来获取栈中的数据,也可以通过栈顶
         <4>假设EBX为栈底,EDX为栈顶,开始栈底与栈顶在统一地址:0x19FF90
         
            <5>加入数据到栈里;数据为:0xAAAAAAAA,栈顶会变为0x19FF8C
         
            <6>再加入数据到栈里;数据为:0xBBBBBBBB,栈顶会变为0x19FF88
         
         <7>取数据0xBBBBBBBB到EAX,通过栈顶,取数据0xBBBBBBBB到ECX,通过栈底
      
          <8>从栈中弹出数据到esi,栈里的数据不被修改,但是栈顶位置会改变,再次使用栈时里面的数据可能被覆盖
      
         <9>再从栈中弹出数据到edi,栈里的数据不被修改,但是栈顶位置会改变,再次使用栈时里面的数据可能被覆盖
         
          <10>cput提供操作栈的指令push(入栈),pop(出栈),默认esp为栈顶,ebp为栈底;入栈ESP-4,加入数据;取出数据,出栈ESP+4。
      
         

hjw01 发表于 2021-5-20 21:49

看过视频,感觉不错

bigdawn 发表于 2021-5-20 23:45

这个有视频吗?

PpaPingggg 发表于 2021-5-21 00:07

传统手艺人啊

1054318313 发表于 2021-5-21 02:43

666我也在学

l441669899 发表于 2021-5-21 07:40

需要学习,感谢楼主!

tlf 发表于 2021-5-21 09:01

羽刃 发表于 2021-5-21 10:00

楼主报班学的吗?

987fw 发表于 2021-5-21 15:31

看不懂,太深奥

ff5500 发表于 2021-5-21 17:30

从入门到放弃
页: [1] 2
查看完整版本: 滴水汇编第五天