【课前思考】
1. 宏汇编技术与子程序技术相比有哪些优、缺点?它们的工作方式有何差别?
2. 虚参与实参是否应一一对应?
3. 哑元表中的变元可以取何种值?
4. &操作符及%操作符如何应用?
5. 宏定义体内的程序段有标号怎么办?
6. 宏定义允许嵌套、递归调用吗?
7. IRP与IRPC之间的区别?
8. 条件汇编中有哪几种条件?
9. 高级语言结构中有哪几种形式?
【学习目标】
了解并掌握宏汇编、重复汇编及不定重复汇编、条件汇编和高级语言结构编程技术。
【学习指南】
学习宏汇编时注意与子程序技术做比较。通过多看举例,掌握哑元表变元取值、宏定义的嵌套、递归调用等难点技术。
与高级编程语言相比较地学习重复、不定重复、条件汇编以及几种高级语言结构汇编技术。
【难重点】
宏调用的优点、宏调用和子程序调用工作方式的差别
虚参与实元
哑元表中的变元取值的多样性
&操作符
%操作符
LOCAL伪操作解决宏定义体中的符号问题
宏定义的嵌套、递归
重复汇编
不定重复汇编
条件汇编中的多种条件
高级语言结构中的几种汇编形式
【知识点】
7.1 宏汇编
7.1.1 宏定义、宏调用和宏展开
宏定义体、宏指令名、哑元表、形式参数、实元表
宏调用的优点、宏调用和子程序调用工作方式的差别
7.1.2 宏定义中的参数
宏定义可以无变元
变元可以是操作码
&操作符可以把前后两个符号合并形成操作码、操作数或是一个字符串。
%操作符把跟在它之后的表达式的值转换成当前基数下的数,在宏展开期间,用这个数来取代哑元。
:= 操作符
:REQ操作符
7.1.3 LOCAL伪操作
7.1.4 在宏定义内使用宏
宏定义必须先定义后调用。允许嵌套、递归
7.1.5 列表伪操作
MASM提供 .XALL、.LALL和 .SALL控制汇编清单中宏展开的列出情况
MASM6用.LISTMACROALL、.LISTMACRO和 .NOLISTMACRO提供相应功能
;;伪操作符
7.1.6 宏库的建立与调用
7.1.7 PURGE伪操作
7.2 重复汇编
7.2.1 重复伪操作
7.2.2 不定重复伪操作
7.2.2.1 IRP伪操作
7.2.2.2 IRPC伪操作
REPEAT、FOR和FORC伪操作
:VARARG伪操作
7.3 条件汇编
7.4 高级语言结构