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