汇编语言谁帮我解释一下!
00412B81 > 50 PUSH EAX ; /hWnd00412B82 . FF15 *********** CALL DWORD PTR DS:[<&USER32.GetDlgCtrlID>; \GetDlgCtrlID00412B88 > 85C0 TEST EAX,EAX ; Switch (cases 0..8024)00412B8A . 0F84 A1000000 JE 复件_chs.00412C3100412B90 . 3D 1E800000 CMP EAX,801E00412B95 . 77 25 JA SHORT 复件_chs.00412BBC00412B97 . 74 1C JE SHORT 复件_chs.00412BB500412B99 . 3D 0E040000 CMP EAX,40E00412B9E . 74 0E JE SHORT 复件_chs.00412BAE00412BA0 . 3D 1C800000 CMP EAX,801C00412BA5 . 75 36 JNZ SHORT 复件_chs.00412BDD00412BA7 . 68 E84E4500 PUSH 复件_chs.00454EE8 ; Case 801C of switch 00412B8800412BAC . EB 26 JMP SHORT 复件_chs.00412BD400412BAE > 68 *********** PUSH 复件_chs.*********** ; Case 40E of switch 00412B8800412BB3 . EB 1F JMP SHORT 复件_chs.00412BD400412BB5 > 68 0C554500 PUSH 复件_chs.0045550C ; Case 801E of switch 00412B8800412BBA . EB 18 JMP SHORT 复件_chs.00412BD400412BBC > 2D *********** SUB EAX,***********BC1 . 74 0C JE SHORT 复件_chs.00412BCF00412BC3 . 83E8 03 SUB EAX,300412BC6 . 75 15 JNZ SHORT 复件_chs.00412BDD00412BC8 . 68 *********** PUSH 复件_chs.*********** ; Case 8024 of switch 00412B8800412BCD . EB 05 JMP SHORT 复件_chs.00412BD400412BCF > 68 F4544500 PUSH 复件_chs.004554F4 ; Case 8021 of switch 00412B8800412BD4 > 8D4C24 08 LEA ECX,DWORD PTR SS:[ESP+8]00412BD8 . E8 11FB0100 CALL 复件_chs.004326EE00412BDD > 817E 08 F8FDFFFF CMP DWORD PTR DS:[ESI+8],-208 ; Default case of switch 00412B8800412BE4 . 75 13 JNZ SHORT 复件_chs.00412BF900412BE6 . 8B4C24 04 MOV ECX,DWORD PTR SS:[ESP+4]00412BEA . 6A 50 PUSH 50 ; /n = 50 (80.)00412BEC . 8D56 10 LEA EDX,DWORD PTR DS:[ESI+10] ; |00412BEF . 51 PUSH ECX ; |String200412BF0 . 52 PUSH EDX ; |String100412BF1 . FF15 D0324400 CALL DWORD PTR DS:[<&KERNEL32.lstrcpynA>>; \lstrcpynA00412BF7 . EB 16 JMP SHORT 复件_chs.00412C0F00412BF9 > 8B4424 04 MOV EAX,DWORD PTR SS:[ESP+4]想学高深的汇编,于是下了软件来反汇编,看能不能读,结果半句都不懂!请教高手:MOV EAX,DWORD PTR SS:[ESP+4]中,MOV 是赙值吧?EAX是寄存器?那么后面的DWORD PTR SS:[ESP+4]是什么意思?还有有的地方用DS有是什么意思?PTR是什么?谁愿意帮我每句注释以下,我再给100分.谢谢!
参考答案:MOV EAX,DWORD PTR SS:[ESP+4]
从堆栈段中ESP+4这个地址里取出数值赋给EAX,然而DWORD是双字,也就是4个字节的意思,从ESP+4里取出来的是4个字节,而且EAX正好可以容纳4个字节。
CS 属于代码段,用于存放执行的代码。
DS 属于数据段,常常用于存放变量,比如局部的和全局的,可能还有常量。
SS 则属于堆栈段,常常用于push pop等指令进行变量的暂时存储。