微机
JMP G1
G4: POP DX
POP CX
POP BX POP AX RET DSPAL ENDP CODE ENDS END STAR 程序调试通过后,在DEBUG环境下观察CALL和RET指令执行时堆栈指针的变化及堆栈中压入和弹出的内容。
三、编程提示
1.子程序(过程)传递参数的方法,除简单情况利用数据段单元传递外,还有以下三种方法: (1)用寄存器传递,适用于参数个数少的情况。
(2)利用堆栈传递参数,适用于参数较多且子程序有嵌套、递归调用的情况。高级语言的过程(函数)的参数传递很多采用此方法。
(3)用程序存储器中的参数表传递,这个参数表紧跟在调用指令的后面。
2.用堆栈传递参数的方法是:在主程序中先把参数压入堆栈然后调用子程序。
3.用程序存储器传递参数的方法是在主程序中把要传递的参数直接放在调用指令的后面。传递的参数可以是参数的值(在本例中是乘数的值本身),也可以是参数的地址(在本例中是乘数存放的地址)。
四、思考题
1.画出PCS5_1.ASM程序层次结构框图。
2.假如MLT是一个远过程,画出第三次执行CALL MLT指令后堆栈中数据存放图。
3.怎样利用堆栈传送参数?第三次执行CALL MLTSS指令后,根据D命令所显示的堆栈内容画出堆栈中数据存放图并写出取参数的指令。
4.怎样利用程序存储器传送参数的地址?为什么返回主程序前要调整返回地址?怎样调整?
五、实验报告
1.打印一份程序清单。
2. 回答思考题。
13