子程序设计

子程序设计时

Push bp

Mov bp, sp

Sub sp, 2

push其他需要保存的寄存器,这样可以不受保存要寄存器个数的影响,用bp+4定位到第一个参数,且释放局部变量空间时使用mov sp, bp即可。

 

宏调用中的参数如果有小于<符号,需要转义,写为!<

 

 

 

 

 

 

 

 

 

 

 

 

代码定式:

if(){

...

}

IF_BEGIN:

jcc IF_END

...

IF_END:

 

 

 

if(){

...

}

else{

...

}

IF_BEGIN:

jcc IF_END

...

jmp ELSE_END

IF_END:

...

ELSE_END:

 

 

 

if () {

...

}

else if () {

...

}

else if () {

...

}

else {

...

}

IF_BEGIN:

jcc ELSE_IF1_BEGIN

...

jmp ELSE_END

ELSE_IF1_BEGIN:

jcc ELSE_IF2_BEGIN

...

jmp ELSE_END

ELSE_IF2_BEGIN:

jcc ELSE_BEGIN

...

jmp ELSE_END

ELSE_BEGIN:

...

ELSE_END:

 

 

do{

...

}while()

DO_BEGIN:

...

jcc DO_BEGIN

DO_END:

 

 

while(){

...

}

WHILE_BEGIN:

jcc WHILE_END

...

jmp WHILE_BEGIN

WHILE_END:

 

 

 

for(FOR_INIT; FOR_CMP; FOR_STEP){

FOR_BODY

}

FOR_INIT:

...

jmp FOR_CMP

FOR_STEP:

...

FOR_CMP:

jcc FOR_END

FOR_BODY:

...

jmp FOR_STEP

FOR_END:

 

 

 

switch(i){

case 0:

...

break;

case 1:

...//break;

case 2:

...

break;

case 4:

...

break;

default:

...

break;

}

 

CODE segment

CASE_0:

...

jmp SWITCH_END

CASE_1:

...

CASE_2:

...

jmp SWITCH_END

CASE_4:

...

jmp SWITCH_END

CASE_DEFALUT:

...

jmp SWITCH_END

SWITCH_END:

 

ret

 

 

CASE_TABLE dw offset CASE_0,

  offset CASE_1,

  offset CASE_2,

  offset CASE_DEFALUT,

  offset CASE_4

ends

posted @ 2020-09-29 07:02  八转达人  阅读(274)  评论(0)    收藏  举报