夜鸽 发表于 2012-3-24 22:18:44

附注4(用栈传递参数),第一个例子具体怎么执行

本帖最后由 夜鸽 于 2012-4-2 00:53 编辑

;说明:计算(a-b)^3,a,b为字型数据
;参数:进入子程序时,栈顶存放IP,后面依次存放a,b
;结果: (dx:ax)=(a-b)^3
difcube:pushbp         ;为什么这样?
         movbp,sp
         movax,   ;将栈中a的值送入ax中
         sub   ax,    ;减栈中b的值
         movbp,ax
         mulbp
         mulbp
         pop bp
         ret4                  ;啥意思?
这些个指令怎么执行的???

夜鸽 发表于 2012-4-2 00:41:16

自己给自己一个答案吧,使用push bp是防止主程序中需要用bp寄存器时,子程序对bp进行更改,所以用push bp对bp进行保护,尽管就本题而言并没有什么操作对bp进行更改,毕竟它是通用的一个子程序,而且很有必要将push ax ,pop ax也加进去,因为子程序也对ax进行了更改
页: [1]
查看完整版本: 附注4(用栈传递参数),第一个例子具体怎么执行