高级汇编语言程序设计5.ppt

  1. 1、本文档共65页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第 5 章 教学重点 在掌握基本的汇编语言程序设计方法之后,进一步学习如何提高编程效率的各种实用方法: 高级语言特性 宏结构 模块化 5.1 高级语言特性 MASM 6.0引入高级语言的程序设计特性 条件控制伪指令 .IF .ELSE .ENDIF 循环控制伪指令 .WHILE .ENDW .REPEAT .UNTIL 过程声明和过程调用伪指令 .PROTO .INVOKE 5.1.3 过程声明和过程调用伪指令 过程名 PROC 调用距离 语言类型 作用范围 起始参数 USES 寄存器列表, 参数:类型 LOCAL 参数表 … ;汇编语言语句 过程名 ENDP 例5.3-1/2 ;汇编语言程序:lt503.asm .model small checksumd PROTO c,:word,:word ;声明过程 .stack .data array db 12h,25h,0f0h,0a3h,3 db 68h,71h,0cah,0ffh,90h count equ $-array ;数组的元素个数result db ? ;校验和 .code .startup INVOKE checksumd,count,offset array ;调用过程 mov result,al ;保存校验和 .exit 0 例5.3-2/2 checksumd PROC c USES bx cx,\ countp:word,arrayp:word mov bx,arrayp ;BX←数组的偏移地址 mov cx,countp ;CX←数组的元素个数 xor al,al sumd: add al,[bx] ;求和:AL←AL+DS:[BX] inc bx loop sumd ret checksumd endp end 例5.3-1/2 ;lt503.asm的列表文件(lt503.lst) ... INVOKE checksumd,count,offset array * mov ax,word ptr OFFSET array * push ax * mov ax,+000Ah * push ax * call checksumd * add sp,04h mov result,al ... 例5.3-2/2 checksumd PROC c USES bx cx,\ countp:word,arrayp:word * push bp ;起始代码 * mov bp,sp * push bx ;保护bx和cx * push cx mov bx,arrayp ;arrayp=[BP+6] mov cx,countp ;cuontp=[BP+4] ... ret * pop cx ;结尾代码 * pop bx * pop bp * ret 0000h checksumc endp 5.2 宏结构程序设计 宏汇编 重复汇编 条件汇编 ——统称宏结构 5.2.1 宏汇编 宏——具有宏名的一段汇编语句序列 ——宏定义时书写 宏指令——这段汇编语句序列的缩写 ——宏调用时书写 宏展开——宏指令处用这段宏代替的过程 ——宏汇编时实现 宏的参数功能强大,颇具特色 配合宏,还有宏操作符和有关伪指令 宏定义 宏名 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 ;宏调用,返回DOS end start 宏调用的实质是在汇编过程中进行宏展开 宏展开的具体过程是:当汇编程序扫描源程序遇到已有定义的宏调用时,即用相应的宏定义体取代源程序的宏指令,同时用位置匹配的实参对形参进行取代 宏展开 宏展开——在汇编时,用宏定义体的代码序列替代宏指令的过程。 start: mainbegin ;宏指令 1 mov ax,@data ;宏展开 1 mov ds,ax mainend 0 ;宏指令 1 mov al,0 ;宏展开 1 mov ah,4ch 1 int 21h 宏的参数 宏的参数使用非常灵活 宏定义时, 可以无参数,例如5.4a的m

文档评论(0)

开心就好 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档