7.7 习题
7.7 习题
7.1、汇编语言的子程序是如何定义的?所使用的关键字有哪些? |
7.2、为了编写具有良好风格的子程序,一般需要书写哪些重要的说明性信息? |
7.3、简述调用指令CALL和转移指令JMP之间的主要区别。 |
7.4、简述段内和段间子程序调用指令CALL的主要区别。 |
7.5、子程序返回指令RET的功能能否用JMP指令来模拟,若可以,请用段内子程序的返回加以说明,否则,说明理由。 |
7.6、子程序返回指令“RET 6”的功能是返回数值“6”给调用程序吗?若不是,那其作用是什么? |
7.7、在子程序中要使其所用寄存器对调用者是透明的,请举例说明达到其目的的方法。 |
7.8、编写子程序实现下列功能,参数的传递方式可自行决定(假设所有变量都是字类型)。 |
1)、ABS(x)=|x| |
7.9、编写计算将CX值三次方的子程序,结果也存入CX(不考虑溢出问题)。 |
7.10、编写计算表达式AX=DI×SI/100H的子程序(不考虑溢出问题)。 |
7.11、编写计算EAX=EAX+EBX+ECX+EDX的子程序。在计算过程中,若产生进位,则EDI=1,否则,EDI=0。 |
7.12、在MASM 6.x编程环境下,简述子程序定义中USE说明语句的作用是什么? |
7.13、调用子程序指令CALL和调用伪指令INVOKE的主要区别是什么? |
7.14、在子程序的完全定义形式中,其语言类型所起的作用是什么?可用哪二种方法来设定子程序的语言类型? |
7.15、如何指定子程序的传递参数是动态的,对动态参数有哪些规定? |
7.16、编写一个子程序,其功能是把其所有参数数值之和存入AX中,每个参数都数16位二进制数,但个数不定。 |
7.17、子程序的参数传递有传值和传地址之分,在汇编语言中,如何实现传地址?请举例说明。 |
7.18、在高级语言中,子程序可定义其局部变量,在汇编语言中,能定义其局部变量吗?若能,请举例说明。 |
7.19、使用.REPEAT和.UNTIL语句编写一个子程序,其功能是从DS:SI开始的内存单元中查找是否有与AL相同的数值。若找不到,CF=0,否则,CF=1,且SI指向所找到位置。假设查找区域以0为结束标志。 |
7.20、用.REPEAT和.UNTILCXZ语句编写一个子程序,用以在内存缓冲区中填入00H。内存缓冲区的首址及长度分别由DS:SI和CX来确定。 |
7.21、用.WHILE和.ENDW语句实现7.16和7.17的功能。 |
7.22、在程序模块中,伪指令PUBLIC和EXTRN的作用是什么? |
7.23、在C语言程序中,存在关键字EXTERN,它与汇编语言中EXTRN的作用相似吗? |
7.24、如何创建和维护自己的子程序库?使用子程序库有何好处? |