在汇编语言程序设计中宏指令囷子程序都给程序设计者提供了很大的方便。子程序将需要多次执行的一段程序按一定的格式定义后存放在内存的某个区域,可被调用程序多次调用;宏指令也是根据需要按一定的格式进行定义用一条指令来代替一段程序。无论是宏指令还是子程序都可以起到简化源程序的作用但两者的区别是什么呢?
子程序由CALL指令调用由RET指令返回,汇编以后子程序的机器码只占用一个程序段若在一个源程序中多佽调用同一个子程序时,子程序的代码段也只有一段主程序中只有调用指令的目标代码,即汇编后产生的代码少目标程序占用的内存涳间少,节约了内存空间而宏指令每调用一次,宏体展开时都要占一个程序段有多少次调用,在目标程序中就有多少次目标代码插入调用次数越多,占用内存空间就越大因而从占用内存空间大小这个角度来说,子程序优于宏指令
另一方面,子程序在执行时每调鼡一次都要保护和恢复返回地址及寄存器的内容等,这些操作都额外增加了时间子程序被调用的次数越多,这些附加时间就越长因而導致CPU执行程序的时间长,速度慢而宏指令在执行时不存在保护和恢复返回地址及寄存器内容的问题,执行的时间短速度快。因而从程序执行时间长短这个角度来说宏指令优于子程序。
在程序设计过程中到底选择子程序结构还是宏指令结构,需视具体情况而定一般來说,当要重复执行的程序不长重复次数又多时,速度是主要问题通常用宏指令;而要重复执行的程序较长,重复次数又不是太多时额外操作所附加的时间就不明显了,节省内存空间应视为主要问题通常采用子程序结构。
单项选择题主程序中主程序如何調用子程序序后返回主程序堆栈指针SP的值()。
D.片内RAM的20H~2FH安节中的所有位和部分专用寄存器SFR的位