第5章 高级汇编语言程序设计
第 5 章
教学重点 在掌握基本的汇编语言程序 设计方法之后,了解提高编 程效率的各种实用方法: √高级语言特性 高级汇编语言猩序设计 √宏结构 √模块化 HTTP://DLS.ZZU.EDUCN郑州大学远程教育学院
HTTP://DLS.ZZU.EDU.CN 郑州大学远程教育学院 教学重点 在掌握基本的汇编语言程序 设计方法之后,了解提高编 程效率的各种实用方法: ✓高级语言特性 ✓宏结构 ✓模块化
第5章 5.1高级语言特性 >MASM60引入高级语言的程序设计 特性 条件控制伪指令 IF ELSE ENDIF ■循环控制伪指令 WHILE ENDW REPEAT UNTIL ■过程声明和过程调用伪指令 PROTO NVOKE HTTP://DLS.ZZU.EDUCN郑州大学远程教育学院
第 5 章 HTTP://DLS.ZZU.EDU.CN 郑州大学远程教育学院 5.1 高级语言特性 ➢MASM 6.0引入高级语言的程序设计 特性 ◼条件控制伪指令 .IF .ELSE .ENDIF ◼循环控制伪指令 .WHILE .ENDW .REPEAT .UNTIL ◼过程声明和过程调用伪指令 .PROTO .INVOKE
第5章 5.2宏结构程序设计 宏汇编 重复汇编 条件汇编 统称宏结构 宏( Macro)是汇编语言的一个 特点。它是与子程序类似又独具特色 的另一种简化源程序的方法 HTTP://DLS.ZZU.EDUCN郑州大学远程教育学院
第 5 章 HTTP://DLS.ZZU.EDU.CN 郑州大学远程教育学院 5.2 宏结构程序设计 宏汇编 重复汇编 条件汇编 ——统称宏结构 宏(Macro)是汇编语言的一个 特点,它是与子程序类似又独具特色 的另一种简化源程序的方法
第5章 5.2.1宏汇编 宏—具有宏名的一段汇编语句序列 宏定义时书写 宏指令——这段汇编语句序列的缩写 宏调用时书写 宏展开——宏指令处用这段宏代替的过程 宏汇编时实现 宏的参数功能强大,颇具特色 配合宏,还有宏操作符和有关伪指令 HTTP://DLS.ZZU.EDUCN郑州大学远程教育学院
第 5 章 HTTP://DLS.ZZU.EDU.CN 郑州大学远程教育学院 宏——具有宏名的一段汇编语句序列 ——宏定义时书写 宏指令——这段汇编语句序列的缩写 ——宏调用时书写 宏展开——宏指令处用这段宏代替的过程 ——宏汇编时实现 宏的参数功能强大,颇具特色 配合宏,还有宏操作符和有关伪指令 5.2.1 宏汇编
宏定义 宏名 macro[形参表] 宏定义体 endm mainbegin MACR0;定义名为皿 ainbegin的宏,无参数 moⅴax,@data ;宏定义体 mov ds. ax 宏注释符 ENDM ;法定义结束 mainend MACRO retum ;带有形参1 retum moy al, retum;;宏定义中使用参数 mov ah. 4ch int 21h ENDM
宏定义 宏名 macro [形参表] 宏定义体 endm mainbegin MACRO ;;定义名为mainbegin的宏,无参数 mov ax,@data ;;宏定义体 mov ds,ax ENDM ;;宏定义结束 mainend MACRO retnum ;;带有形参retnum mov al,retnum ;;宏定义中使用参数 mov ah,4ch int 21h ENDM 宏注释符
宏调用 宏名[实参表] start: mainbegin ;宏调用,建立DS内容 dispmsg string;宏调用,显示字符串 mainend 0 ;宏调用,返回D0S end start >宏调用的实质是在汇编过程中进行宏展开 宏展开的具体过程是:当汇编程序扫描源程序遇 到已有定义的宏调用时,即用相应的宏定义体取代 源程序的宏指令,同时用位置匹配的实参对形参进 行取代
宏调用 宏名 [实参表] start: mainbegin ;宏调用,建立DS内容 dispmsg string ;宏调用,显示字符串 mainend 0 ;宏调用,返回DOS end start ➢ 宏调用的实质是在汇编过程中进行宏展开 ➢ 宏展开的具体过程是:当汇编程序扫描源程序遇 到已有定义的宏调用时,即用相应的宏定义体取代 源程序的宏指令,同时用位置匹配的实参对形参进 行取代
宏展开 宏展开—在汇编时,用宏定义 体的代码序列替代宏指令的过程。 start: mainbegin;宏指令 moⅴax,@data;宏展开 moy ds. ax mainend0;宏指令 moy alo 宏展开 moy ah. 4ch int 21h
宏展开 宏展开——在汇编时,用宏定义 体的代码序列替代宏指令的过程。 start: mainbegin ;宏指令 1 mov ax,@data ;宏展开 1 mov ds,ax mainend 0 ;宏指令 1 mov al,0 ;宏展开 1 mov ah,4ch 1 int 21h
比较 宏 子程序 >仅是源程序级的简化:>还是目标程序级的简 宏调用在汇编时进行化:子程序调用在执 程序语句的展开,不行时由CALL指令转向 需要返回;不减小目RET指令返回;形成的 标程序,执行速度没目标代码较短,执行 有改变 速度减慢 >通过形参、实参结合>需要利用寄存器、存 实现参数传递,简捷储单元或堆栈等传递 直观、灵活多变 参数 HTTP://DLS.ZZU.EDUCN郑州大学远程教育学院
比较 ➢ 仅是源程序级的简化: 宏调用在汇编时进行 程序语句的展开,不 需要返回;不减小目 标程序,执行速度没 有改变 ➢ 通过形参、实参结合 实现参数传递,简捷 直观、灵活多变 ➢ 还是目标程序级的简 化:子程序调用在执 行时由CALL指令转向、 RET指令返回;形成的 目标代码较短,执行 速度减慢 ➢ 需要利用寄存器、存 储单元或堆栈等传递 参数 宏 子程序 HTTP://DLS.ZZU.EDU.CN 郑州大学远程教育学院
比较 宏 结论 子程序 >宏与子程序具有各自的特点,程序员应该 根据具体问题选择使用那种方法 通常,当程序段较短或要求较快执行时, 应选用宏;当程序段较长或为减小目标代码 时,要选用子程序 HTTP://DLS.ZZU.EDUCN郑州大学远程教育学院
➢ 宏与子程序具有各自的特点,程序员应该 根据具体问题选择使用那种方法 ➢ 通常,当程序段较短或要求较快执行时, 应选用宏;当程序段较长或为减小目标代码 时,要选用子程序 比较 宏 结论 子程序 HTTP://DLS.ZZU.EDU.CN 郑州大学远程教育学院