汇编语言程序设计(第二版)第五章.ppt

汇编语言程序设计(第二版)第五章.ppt

  1. 1、本文档共99页,可阅读全部内容。
  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.1 条件控制伪指令 类似高级语言中IF、THEN、ELSE和ENDIF的相应功能 在汇编时要展开,自动生成相应的比较和条件转移指令序列,实现程序分支 条件表达式中的操作符 例题 ;单分支结构 .IF AX 0 neg ax .ENDIF mov result,ax ;双分支结构 .IF ax==5 mov bx,ax mov ax,0 .ELSE dec ax .ENDIF 例5.1-1/2 .data _a sbyte ? _b sbyte ? _c sbyte ? tag byte ? .code .startup mov al,_b imul al mov bx,ax ;bx中为b2 mov al,_a imul _c mov cx,4 imul cx ;ax中为4ac 例5.1-2/2 .if sword ptr bx = ax ;比较二者大小 mov tag,1 ;第一分支体:条件满足,tag←1 .else mov tag,0 ;第二分支体:条件不满足,tag←0 .endif .exit 0 5.1.2 循环控制伪指令 WHILE结构的循环控制伪指令 .WHILE 条件表达式 ;条件为真 循环体 ;执行循环体 .ENDW ;循环体结束 UNTIL结构的循环控制伪指令 .REPEAT ;重复执行循环体 循环体 .UNTIL 条件表达式 ;直到条件为真 WHILE循环结构的流程图 UNTIL循环结构的流程图 求1~100之和 ;WHILE结构 xor ax, ax mov cx,100 .while cx!=0 add ax,cx dec cx .endw mov sum,ax 例5.2 mov cx,100 xor ax,ax lea bx,array .repeat .if sword ptr [bx] = 0 add ax,[bx] .else .break .endif inc bx inc bx .untilcxz mov result,ax 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 PRO

文档评论(0)

junjun37473 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档