9.7 习题

9.1、在宏定义时,使用的关键字是什么?宏名是否需要成对出现?

9.2、在宏引用时,是否要求实参与形参的个数相等?若不要求,请简述当二者个数不一致时,会出现什么情况。

9.3、宏和子程序的主要区别有哪些?一般在什么情况下选用宏较好,在什么情况下选用子程序较好?

9.4、宏的参数如何传入宏定义体的?宏的参数传递与子程序的参数传递有哪些区别?

9.5、在有标号的宏定义体中,为什么最好使用LOCAL伪指令来说明标号?它在宏定义体中应处于什么位置?

9.6、子程序和宏中的LOCAL伪指令的作用有哪些不同?

9.7、编写32位相加的宏ADD32,它把32位寄存器组BX-AX加到DX-CX中。

9.8、编写符号扩展的宏CBD,它将存于AL中的有符号数扩展成ECX-EBX中64位有符号数(其中:ECX是64位有符号数的高位)。

9.9、编写字母大小写互换的宏Exchange,其有一个形参,允许字节型的寄存器或存储单元作为实参来引用。

9.10、编写一个宏AddList  Para1, Para2, num,其功能是将从Para2开始的内存单元的值加到以Para1开始的内存单元中,num是相加的字节数。

9.11、编写一个宏SUM Data, Length, Result,其功能是求从Data开始的字节累加和,并把结果存入字类型参数Result中,Length是需要累加的字节数。

9.12、编写一个宏来定义26个大写字母表。

9.13、编写一个宏,它产生n条NOP指令,其中n是宏的形式参数。

9.14、INCLUDE指示符的作用是什么?

9.15、编写只有一个形式参数的宏PRINT,其具体功能如下:

1)、若引用时带有参数,则在屏幕上显示其参数字符,如:PRINT 'A',则显示字符'A';
2)、若引用时不带实参,则显示回车和换行,如:PRINT。
提示:用IFB或IFNB语句来测试是否有参数。