第7章 高级汇编语言技术
1.教学目的:掌握高级汇编语言技术
2.教学要求:
理解宏汇编的概念和作用。
掌握宏汇编的编程技术。
了解重复汇编概念和使用方法。
掌握条件汇编概念和使用方法。
3.教学重点:
①宏汇编的编程技术。
4.掌握难点:
①宏汇编的概念
5.教学进程安排:P191~206
6.教学方法:
课堂讲授
7.教学内容摘要:
7.1 宏汇编
7.1.1 宏指令的定义、调用和展开
1,宏指令定义宏指令名 MACRO [形式参数1,形式参数2,… 形式参数N]
┇ ;宏指令体(宏体)
ENDM
宏指令名。
称宏体。
形式参数。
2,宏调用宏指令名 实际参数1,实际参数2,… 实际参数N
3,宏展开
7.1.2 宏体特殊处理伪指令
1,宏体符号指定伪指令LOCAL
LOCAL 符号1 [,符号2]…
2,退出宏伪指令EXITM
EXITM
3,伪指令PURGE
PURGE 宏指令名[,…]
7.1.3 宏操作符
1,操作符&
2,操作符!
3,宏操作符%
7.1.4 宏库建立与使用
1,建立宏库为了在宏指令库中存放一个或多个宏指令定义(宏定义),可以用EDIT或NE编辑器建立宏库。
2,调用插入伪指令INCLUDE
INCLUDE [ 驱动器名:][目录路径]文件名·扩展名
3,使用宏库
4.删除宏库中部分宏伪指令PURGE
PURGE MACRO_NAME[,MACRO_NAME,…]
7.1.5 宏指令与子程序的区别
1.处理的时间不同
2.处理的方式不同
3.参数处理不同,
4.执行速度不同,
5.占用的存储器空间大小不同
7.2 重复汇编
7.2.1 固定重复伪指令REPT
REPT 表达式
,;重复块
,
ENDM
【例7-10】 定义数字1到3的字节数据。
【例7-11】将字符A到Z的26个字母数据填入数组CHAR中。
7.2.2 不定重复伪指令IRP
 IRP 形参,< 实参[,…] >
,;重复的语句
   ,
  ENDM
注意:
①实参数必须写在尖括号内,可以有多个,参数之间用逗号分隔开。
②重复时,第一次重复将用第一个实参数替换语句块中的形参所在位置,第二次重复用第二个实参数,依此类推。如果没有实参数,那么这个块只处理一次,并且被一个空参数所替换。
【例7-12】产生将AX、BX、CX和DX压人堆栈的指令。
【例7-13】产生值为回车、换行和字符′A′、ˊBFˊ的5个字节数据的重复。
7.2.3 单字符不定重复伪指令IRPC
 IRPC 形参,字符串
,;重复的语句
ENDM
【例7-14】定义一串字符。
【例7-15】将AX、BX和CX顺序压入堆栈中。
7.3 条件汇编条件汇编伪指令的一般格式是:
 IF×× 表达式或参数
 ,;条件成立时汇编这一段语句
 ,;(称为条件语句块)
 [ELSE]
 ,;条件不成立时汇编这一段语句
 ,;(称为反条件语句块)
   ENDIF  ;条件汇编结束命令
1,IF和IFE 
IF 表达式
IFE 表达式
【例7-16】指定标号NEXTLAB 从页边界($ MOD 256=0)开始。
【例7-18】将宏定义递归调用与IF伪指令结束宏递归相结合,计算Y*2N,如S=AX*23。
2,IF1和IF2
IF1 和IF2分别在第一遍扫描、第二遍扫描时为真,它们无参数。
  【例7-19】下列条件语句只在第一遍扫描时输出PASS ONE。其中%OUT是直接显示其后文本的伪操作语句,当汇编程序遇到它时,在屏幕上显示其后的文本。
3,IFB 和IFNB
  IFB  <参数>
IFNB <参数>
  【例7-21】 将三个变量中的其中的最大值取至AX寄存器定义为一条宏指令,并使该宏操作适应不足三个变量数目的情况。
4,IFIDN和IFDIF
格式,IFIDN <参数1>,<参数2>
IFDIF <参数1>,<参数2>
5,IFDEF和IFNDEF
格式,IFDEF 符号名
IFNDEF 符号名
8.参考资料:《IBM-PC汇编语言程序设计》沈美明
9.作业:P205 习题7
10.本章小结:
本部分内容要求熟练掌握并学会灵活应用。