首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

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

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

.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内容)

热点排行