箩五章高级汇编语言程序设计 注释:对 REPEAT/. UNT ILCXZ(条件表达式) 1)不带表达式,结束循环的条件为GX-1减到0, 循环控制被汇编为L00P指令。 2)带条件表达式,结束循环的条件为减到0或 表达式为真,表达式只能比较寄存器与寄存器(存储单 元、常数),以及存储单元与常数相等(=)或不等 (!=),所以,汇编后的指令为L0oPE或L0oPNE 实分析教材举例 去浏览汇编结果 例题5.2:求数组前若干非负数之和 浏览例题5.2汇编结果 回5.1 16
第 五 章 高 级 汇 编 语 言 程 序 设 计 循环控制伪指令 16 注 释:对.REPEAT/.UNTILCXZ(条件表达式) 1)不带表达式,结束循环的条件为CX-1减到0, 循环控制被汇编为LOOP指令。 2)带条件表达式,结束循环的条件为CX减到0 或 表达式为真,表达式只能比较寄存器与寄存器(存储单 元、常数),以及存储单元与常数相等(==)或不等 (!=),所以,汇编后的指令为LOOPE或LOOPNE。 *分析教材举例 *浏览汇编结果 *例题 5.2:求数组前若干非负数之和。 *浏览例题5.2汇编结果 回 5.1
箩五章高级汇编语言程序设计 5.1.2过程声明和过程调用伪指令 利用堆栈传递参数为常用方式,但传统的编程方法 容易出错。MASM6.X扩充了PR0C伪指令的功能,并新增了 几条伪指令,使调用子程序具有高级语言的特性 按使用顺序介绍: 1.过程声明PR0T0 过程名PR0T0语言类型,[参数名]:类型 ······ 注释:1)使用带参数的过程调用,必须定义语言 类型,一般用C或 STDCALL。2)参数必须用逗号打头; 多个参数之间用逗号分割。3)参数名可省略,类型不 可省略。 55. 3 CHECKSUMD PROTO C V1: WORD, V2: WORD 17
第 五 章 高 级 汇 编 语 言 程 序 设 计 5.1.3过程声明和调用伪指令 17 5.1.2 过程声明和过程调用伪指令 利用堆栈传递参数为常用方式,但传统的编程方法 容易出错。MASM6.X扩充了PROC伪指令的功能,并新增了 几条伪指令,使调用子程序具有高级语言的特性。 按使用顺序介绍: 1.过程声明 PROTO 过程名 PROTO 语言类型 ,[参数名]:类型,…… 注释:1)使用带参数的过程调用,必须定义语言 类型,一般用C或STDCALL。2)参数必须用逗号打头; 多个参数之间用逗号分割。 3)参数名可省略,类型不 可省略。 例5.3 CHECKSUMD PROTO C ,V1:WORD,V2:WORD
箩五章高级汇编语言程序设计 2过程定义PR0G 过程名PRoC语言类型[USES寄存器列表] 形参1:类型,形参2:类型 L0CAL参数表] 过程名ENDP 注释:1)语言类型与USES之间用空格分割 2)寄存器列表:用空格分割的通用寄存器,决定 保护现场和恢复现场 3)参数用逗号打头,且用逗号分割;参数名为形 参名,调用时被实参替换。 4)如果过程用到局部变量,用L0CAL伪指令定义 18
第 五 章 高 级 汇 编 语 言 程 序 设 计 过程定义格式 18 2.过程定义PROC 过程名 PROC 语言类型 [USES 寄存器列表] , 形参1:类型,形参2:类型… [LOCAL 参数表] …… 过程名 ENDP 注释:1)语言类型与 USES 之间用空格分割。 2)寄存器列表:用空格分割的通用寄存器,决定 保护现场和恢复现场。 3)参数用逗号打头,且用逗号分割;参数名为形 参名,调用时被实参替换。 4)如果过程用到局部变量,用LOCAL伪指令定义
箩五章高级汇编语言程序设计 过程定义中其他几个可选项的说明: 1)调用距离:为NEAR或FAR,简化段定义格式中,由 model语句选择的存储模式决定,sma模式下,调 用距离为NEAR。可省略 2)作用范围:为PUBL、 PRIVATE等,表示该过程是否 对其他模块可见(可引用)。默认为PUBL,表示 该过程其他模块可见(可引用)。可省略 3)起始参数:是一个可带参数的宏的名字。该宏决定 过程的起始代码和结束代码,例如控制参数如何设 置、如何保存寄存器等。MASM调用的宏由用户自行 定义。可省略。 19
第 五 章 高 级 汇 编 语 言 程 序 设 计 几个可选项的说明 19 过程定义中其他几个可选项的说明: 1)调用距离:为NEAR或FAR,简化段定义格式中,由 .model语句选择的存储模式决定,small模式下,调 用距离为NEAR。可省略。 2)作用范围:为PUBLIC、PRIVATE等,表示该过程是否 对其他模块可见(可引用)。默认为PUBLIC,表示 该过程其他模块可见(可引用)。可省略。 3)起始参数:是一个可带参数的宏的名字。该宏决定 过程的起始代码和结束代码,例如控制参数如何设 置、如何保存寄存器等。MASM调用的宏由用户自行 定义。可省略
箩五章高级汇编语言程序设计 例5.3过程定义 语言类型 寄存器列表 checksum PRoC c USes bx Cx, countp: word arry: word mov bx,arry mov cx, countp 形参、形参类型 ret checksum ENdP 20
第 五 章 高 级 汇 编 语 言 程 序 设 计 过程定义举例 20 例5.3 过程定义 checksumd PROC c USES bx cx ,countp : word ,arryp : word mov bx,arryp mov cx,countp … … ret checksumd ENDP 语言类型 寄存器列表 形参、形参类型