1、子程序中的寄存器入栈的主要原因是call 指令后还有执行语句,执行语句后,又要用子程序,如此反复,造成寄存器的冲突,所以为了避免冲突,要用栈把寄存器保护起来。
2、有些子程序不需要入栈保护,如实验十的第二个,不用的原因是因为他有返回值,所以,存有返回值的寄存器,不需入栈保护。其他还要继续该入站入站,该出战出战。
3、又返回值,但又反复使用子程序时,到底那些寄存器是否该入栈。
4、结合程序说明:
data segment
dd f4240h,f4241h,f4242h,f4243h,f4244h
dd 0,0,0,0,0
data ends
用自己编好的子程序2写上面的程序,结果存在他们后面的空白处,商存低位,余数存高位。
不知道这样分析,对吗? |