|
|
ret_sp macro dummy
^ C; W6 ]8 C% n local llll, lll
. i, r3 v9 C7 ^ even6 W1 V, _& b# ^3 U8 m- x2 D5 z
mov sp, offset cs:lll * Y/ n2 z8 ?/ t" |- ^, J
jmp dummy
$ ]" c$ y' g. {7 r, i+ glll:3 E/ w* l- E' g& `3 C5 z2 ~7 D
dw offset cs:llll ; return address- I0 V+ P/ t# F% r2 Y
llll:
+ N6 \9 X% ^3 G& R# `" y% ` eendm
$ g3 ` J' ?/ Z0 q' W
5 N8 `$ G- I) j; L关于ret_sp这个宏我有一点没有搞明白! w6 Z. T- w( W& I8 d5 E
假设lll的地址为200h,那么mov sp, offset cs:lll这条语句就是把200h赋给了SP,而jmp dummy中的dummy函数最后的ret语句相当于直接把sp pop给了IP,也就是说dummy执行完以后,IP直接回到了lll处,那么还要llll这个标号干什么呢?
. p7 j) m- ?, `- \$ y为什么不能直接写成:+ {/ ?* t8 d) [6 A' ?7 Q
ret_sp macro dummy 2 P- V# f2 o {0 h
local lll
' t$ C; ] r) B. R4 p- N even: w( C- i$ ]$ J0 ]
mov sp, offset cs:lll
3 i0 b7 p% Y5 n7 e jmp dummy
5 w- z, H F* h5 {9 b: |% w: rlll:( k. x7 |: m( A3 \, U
endm
6 H( S b, S/ B. l" B
( b' {, w* P- [+ Q' Z. l请知道的指点一下,谢谢! |
|