网站大量收购独家精品文档,联系QQ:2885784924

汇编语言4(循环)课件.ppt

  1. 1、本文档共78页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
回顾 顺序程序设计 分支程序设计 例4.1 .model small .stack .data X dw 5 Y dw 6 Z dw 7 W dw ? .code .startup mov ax,X add ax,Y add ax,Z mov W,ax .exit 0 end 单分支程序设计 例题 求绝对值 ;计算AX的绝对值 cmp ax,0 jns nonneg ;分支条件:AX≥0 neg ax ;条件不满足,求补 nonneg: mov result,ax ;条件满足 双分支程序设计 例题 显示BX最高位 shl bx,1 ;BX最高位移入CF jc one ;CF=1,即最高位为1,转移 mov dl,’0’ ;CF=0,即最高位为0,DL←’0’ jmp two ;一定要跳过另一个分支体 one: mov dl,’1’ ;DL←’1’ two: mov ah,2 int 21h ;显示 多分支程序设计 游戏 B0811班小朋友们正在上数学课,老师随便点了一名同学(张三)起立,然后对他说:“张三,现在从第一排左边第一个同学开始,把比你学号小的所有同学的学号相加,直到学号大于你的学号的同学为止,最后把算得结果告诉老师”。 4.3 循环程序设计 循环结构一般是根据某一条件判断为真或假来确定是否重复执行循环体 条件永真或无条件的重复循环就是逻辑上的死循环(永真循环、无条件循环) 循环结构 循环结构 例4.5 求1—100之和 .model small .stack .data sum dw ? .code .startup xor ax,ax ;被加数AX清0 mov cx,100 again: add ax,cx ;从100,99,...,2,1倒序累加 loop again mov sum,ax ;将累加和送入指定单元 .exit 0 end 例4.6确定字变量wordX中为1的最低位(0-15) .startup mov ax,wordX ;测试目标送AX mov cx,16 ;循环计数器置初值 mov dl,-1 ;计位器置初值 again: inc dl test ax,1 ror ax,1 ;循环指令不影响ZF loope again ;CX≠0且ZF=1(测试位为0),继续循环 je notfound mov byteY,dl jmp done notfound: mov byteY,-1 ;ZF=1,16个位均为0 done: .exit 0 例4.7 把字符串中大写字母改为小写字母 mov bx,offset string again: mov al,[bx] ;取一个字符 or al,al ;是否为结尾符0 jz done ;是,退出循环 cmp al,A ;是否为大写A~Z jb next cmp al,Z ja next or al,20h ;是,转换为小写字母(使D5=1) mov [bx],al ;仍保存在原位置 next: inc bx jmp again ;继续循环 done: .exit 0 冒泡法 “冒泡法”是一种排序算法,不是最优的算法,但它易于理解和实现 冒泡法从第一个元素开始,依次对相邻的两个元素进行比较,使前一个元素不大于后一个元素;将所有元素比较完之后,最大的元素排到了最后;然后,除掉最后一个元素之外的元素依上述方法再进行比较,得到次大的元素排在后面;如此重复,直至完成就实现元素从小到大的排序 这需要一个双重循环程序结构 冒泡排序的过程 冒泡法的排序过程 例4.8 mov cx,count ;CX←数组元素个数 dec cx ;元素个数减1为外循环次数 outlp: mov dx,cx ;DX←内循环次数 mov bx,offset array inlp: mov al,[bx] ;取前一个元素 cmp al,[bx+1] ;与后一个元素比较 jna next ;前一个不大于后一个元素,则不进行交换 xchg al,[bx+1] ;否则,进行交换 mov [bx],al next: inc bx ;下一对元素 dec dx jnz inlp ;内循环尾 loop outlp ;外循环尾 例4.9 剔除空格-1/2 ;现有一个以$结尾的字符串,要求剔除其中的空格 .data string db ’Let us have a try !’,’$’ .code .startup mov si,offset string outlp: cmp byte ptr [di],’$’ ;外循环,先判断后循环 jz done ;为$结束 cmp

文档评论(0)

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

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

1亿VIP精品文档

相关文档