有人能帮小弟我解释一下这个代码吗

有人能帮我解释一下这个代码吗?
有人能帮我解释一下这个代码吗,看我的理解对不,不对请更正一下啊,先谢谢了

.386p ; 386+ required =)
.model flat ; 32 bit registers, no segs.

shit_size equ (offset delta-offset aztec)

.code

start label byte

aztec:
  pushad ; Push all the registers
  pushfd ; Push the FLAG register

  call delta ; 1 这句是调用delta:标签下的代码吗?
delta: pop ebp ; 2 这句是把当前的栈顶的4个字节内容弹出到ebp寄存器中么?
  mov eax,ebp
  sub ebp,offset delta ; 3 这句不明白什么意思了?请帮我解释下啊,谢谢

  sub eax,shit_size ; Obtain the Image Base on 4 不明白????请帮我解释下啊,谢谢
  sub eax,00001000h ; the fly
NewEIP equ $-4 ; 5 这句不明白什么意思了?请帮我解释下啊,谢谢
  mov dword ptr [ebp+ModBase],eax

------解决方案--------------------
Assembly code
       
        call    delta                           
delta:  pop     ebp              ;重定位基址放入ebp                      
         
         mov     eax,ebp 
        sub     ebp,offset delta ;算出偏移  

        sub     eax,shit_size    ;指向aztec:              
         sub     eax,00001000h    ;取得mod base               
        NewEIP  equ     $-4   ;cur EIP-4                               
         mov     dword ptr [ebp+ModBase],eax ;将运行时的模块基址
                                                  ;放入全局变量ModBase.

------解决方案--------------------
1,2,两句是汇编中非常常用的取当前指令地址的语句(也就是取EIP内容)