標題:

有關disammbly(電腦程序)的各種問題

發問:

為什麼程序開始總是push ebp的?我用od 載入簡單c++ helloworld 程序 :00401030 |> \55 PUSH EBP ; C0003.main(void)00401031 |. 8BEC MOV EBP,ESP00401033 |. 83EC 40 SUB ESP,4000401036 |. 53 PUSH EBX00401037 |. 56 PUSH ESI00401038 |. 57 PUSH EDI00401039 |. 8D7D C0 LEA EDI,[LOCAL.16]0040103C... 顯示更多 為什麼程序開始總是push ebp的? 我用od 載入簡單c++ helloworld 程序 : 00401030 |> \55 PUSH EBP ; C0003.main(void) 00401031 |. 8BEC MOV EBP,ESP 00401033 |. 83EC 40 SUB ESP,40 00401036 |. 53 PUSH EBX 00401037 |. 56 PUSH ESI 00401038 |. 57 PUSH EDI 00401039 |. 8D7D C0 LEA EDI,[LOCAL.16] 0040103C |. B9 10000000 MOV ECX,10 00401041 |. B8 CCCCCCCC MOV EAX,CCCCCCCC 00401046 |. F3:AB REP STOS DWORD PTR ES:[EDI] 00401048 |. 68 20104300 PUSH OFFSET 00431020 ; ASCII "Helloworld!" 0040104D |. 68 1C104300 PUSH OFFSET 0043101C ; ASCII "%s " 00401052 |. E8 F9700000 CALL printf ; [printf 裡面mov, push, pop, sub, cmp是什麼意思? 有什麼書籍和website關於這方面的可推薦?

最佳解答:

mov:這是組語裡面最常見的指令,將數值記入暫存器或是將A暫存器的內涵值移入B暫存器等等. 範例語法: mov 目的,來源 <==將來源值移入目的暫存器 mov DX,[zzz] <==將zzz變數內涵移入DX暫存器 mov EAX,14h <==移14h值移入EAX 詳細情況請google "組合語言教學“ http://zh.wikibooks.org/wiki/X86%E7%B5%84%E5%90%88%E8%AA%9E%E8%A8%80/%E5%9F%BA%E6%9C%AC%E6%8C%87%E4%BB%A4%E9%9B%86 http://www.google.com.hk/#hl=zh-TW&source=hp&q=%E7%B5%84%E5%90%88%E8%AA%9E%E8%A8%80%E6%95%99%E5%AD%B8&oq=%E7%B5%84%E5%90%88%E8%AA%9E%E8%A8%80&aq=1&aqi=g10&aql=&gs_sm=e&gs_upl=3078l7244l0l9327l3l3l0l0l0l0l186l406l1.2l3l0&fp=65743f01ae396df0&biw=1024&bih=609 2011-08-12 17:59:58 補充: http://www.google.com.hk/#hl=zh-TW&source=hp&q=%E7%B5%84%E5%90%88%E8%AA%9E%E8%A8%80%E6%95%99%E5%AD%B8&oq=%E7%B5%84%E5%90%88%E8%AA%9E%E8%A8%80&aq=1&aqi=g10&aql=&gs_sm=e&gs_upl=3078l7244l0l9327l3l3l0l0l0l0l186l406l1.2l3l0&fp=65743f01ae396df0&biw=1024&bih=609

其他解答:

免費註冊體驗

 

此文章來自奇摩知識+如有不便請留言告知

arrow
arrow

    oob73zj92b 發表在 痞客邦 留言(0) 人氣()