欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    第5-2章循环程序设计.ppt

    • 资源ID:5924502       资源大小:332.50KB        全文页数:51页
    • 资源格式: PPT        下载积分:8
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要8
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第5-2章循环程序设计.ppt

    第六章第六章 循环程序设计循环程序设计 坐 术 婪 孪 映 潘 鲤 饰 螟 沧 晓 吵 甲 殊 杜 寺 腹 颇 怀 漠 份 松 奄 书 匿 允 惧 札 油 丘 崎 枷 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 设问: 1怎样用分支结构构成循环? 2循环指令有哪些? 3串处理操作是循环执行的吗? 4. 多重循环有什么特点? 5. 如何实现排序? 爵 第 苹 佬 踩 李 米 肤 交 嫡 刃 卧 蹭 掖 溃 檬 纺 郑 颗 妆 胚 斑 夕 碰 勇 塘 烷 礼 簇 硼 恋 长 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 本章重点 循环的概念 循环指令 串处理 多重循环 枫 拘 绝 孺 授 分 出 氏 万 志 没 烈 蝴 潜 昏 炉 慎 去 瘩 缩 憎 谢 耶 死 禽 吓 完 述 伙 古 缴 刘 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 6.1 循环的概念 在汇编语言中,程序的循环可以用 分支转移指令实现,也可以用8086指 令系统中提供的专门的循环指令,这 样使程序更清晰、简便。 除了循环指令之外,还有很多地方用 到了循环的概念。例如串处理,需要 对串中的字符循环地进行操作。 丹 园 稼 矿 乏 空 庐 诗 悍 绒 拽 礼 衡 魏 燃 葡 闽 淀 赣 丙 忽 粪 咯 镰 董 但 须 鸳 圈 于 勋 乎 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 6.1.1 循环结构 循环结构有两种形式。一种是DO WHILE结构, 另一种是DO UNTIL结构。 哦 镭 屈 杜 碾 归 畔 划 咏 器 蝉 厄 篇 卉 急 裳 吉 时 临 价 泣 舜 泣 腻 橙 裁 栋 哇 苍 蓖 艘 擦 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 循环程序有三部分: l 设置循环的初始状态 l 循环体 l 循环控制部分 在 义 栖 芹 翘 沈 屹 蔡 警 挎 枢 赤 伍 赡 铬 哄 歌 傀 堕 房 皿 乔 庇 茹 翌 帮 世 嵌 疟 蛛 壮 酷 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 6.1.1 循环程序例子 示例6-1 在5行16列上用写显存方法显 示多彩字符串。用循环指令实现。 运行结果: 境 情 贵 莉 羚 频 宇 求 雕 淌 刁 舆 民 勇 习 寅 警 胡 恍 焊 匣 凹 娶 逆 枝 帽 裔 牢 槛 荒 爪 补 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 设计思路: (1)用DH存放行号,DL存放列号; (2)BL存放字符属性,第1个字符的属性为4 ,红色;其他字符属性+1改变; (3)字符的位置计算公式:行号*160+列号; (4)用循环指令LOOP实现将多彩字符串循环 写入显存。 各 湿 甫 蛔 吱 弘 尺 傻 跌 钠 由 搀 栋 漫 信 焦 闽 脯 友 捻 攀 易 搽 刁 盆 搔 獭 虚 验 榨 冉 巫 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 程序如下: ;6-1.asm 在5行16列上用写显存方法显示多彩字符 串。 data segment a1 db Hello world! a2 db 0 data ends code segment assume cs:code,ds:data start: mov dh,5;行 mov dl,16;列 mov bl,4;属性 mov ax,data mov ds,ax mov si,0 威 急 卵 杰 棱 疑 莆 心 白 楼 秃 仆 呈 猾 撬 付 驶 学 命 愧 愧 伞 的 嘎 终 雹 彦 烟 溜 尝 苟 秉 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 show_str: mov ax,0b800h;显存首址 mov es,ax mov ax,160 mul dh;行号*160 mov di,ax;起始行位置 sal dl,1 mov dh,0 add di,dx;+列号 mov cx,a2-a1;字符串长度 let1: mov al,si;循环写字符和属性到显存 mov es:di,al mov byte ptr es:di+1,bl inc si inc bl add di,2;写完即显示完 loop let1;循环指令 mov ah,4ch int 21h code ends end start 孽 痴 榜 渝 篙 咖 渔 卤 狠 赐 妒 殊 爪 钒 汕 窗 杉 断 绑 唇 蛊 圆 礼 敷 卿 敬 瓣 艇 改 迄 叔 畴 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 6.2 循环指令 格式: LOOP OPR 执行的操作:(CX)=(CX)-1,若CX0,跳转 到标号OPR处循环执行,CX=0则执行LOOP 的下一条指令。 说明:目的操作数OPR是标号,该标号处的 指令应该在LOOP指令之前,以构成循环 。 6.2.1 LOOP循环指令 朵 率 勋 毯 苞 京 跟 甲 窃 捧 春 经 荆 大 祁 眨 永 憋 抹 狱 屉 敬 陷 阔 顾 盈 装 辊 究 岔 邦 瘫 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 例1 求X=1+2+3+10的累加值。 MOV AL,0 MOV BL,1 MOV CX,10 SS1:ADD AL,BL INC BL LOOP SS1 MOV X,AL 噬 吸 别 淳 铬 救 健 牙 喷 狄 韧 代 创 闺 菜 登 穴 瓦 今 肄 和 床 尸 锥 孜 塘 窜 恫 柬 翌 蔷 圭 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 6.2.2 LOOPZ/LOOPE 格式: LOOPZ/LOOPE OPR 执行的操作:(CX)=(CX)-1,若CX0,并且 ZF=1则跳转到标号OPR处循环执行,若 CX=0,或者ZF=0则执行LOOP的下一条指 令。 说明:结果为0或相等循环。当执行到 LOOPZ/LOOPE时,如果之前的指令结果为 0或者相等时继续循环,如果结果不为0或者 不相等,提前退出循环,即使计数值CX还没 减为0。 幂 位 慑 鹰 妒 慑 稍 戒 棍 担 啦 岿 聊 奢 悠 铣 诌 南 洒 谭 漱 遗 倡 阳 妹 暇 尝 平 诡 压 彻 堕 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 STRING DB *P* MOV CX,10 MOV BX,-1 MOV AL,0 SS3: INC BX CMP STRINGBX,* LOOPE SS3 MOV Y,BX 例1 10个星号字符的STRING串中有一个 字符不是星号,找出该字符的位置,保存 在Y单元。 晰 歉 槐 邹 游 涵 绝 积 耿 姓 完 淮 栽 居 埃 铲 姑 楞 佩 朱 牛 萝 荆 信 尿 秦 泥 褒 逝 藉 兴 梭 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 MOV BX,-1 MOV CX,M SS4:INC BX MOV AL,ALPHABX TEST AL,20H LOOPZ SS4 MOV DL,AL 例2 取出字母串ALPHA中的第一个小 写字母放入DL。 辆 誉 呢 列 雹 便 竭 氧 帖 爱 镣 琳 旧 悲 蓝 专 阶 乏 殿 银 扩 盼 山 伞 粕 榜 猎 聋 依 扫 萍 错 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 格式: LOOPNZ/LOOPNE OPR 执行的操作:(CX)=(CX)-1,若CX0,并且 ZF=0则跳转到标号OPR处循环执行,若CX=0 ,或者ZF=1则执行LOOP的下一条指令。 6.2.3 LOOPNZ/LOOPNE 说明:结果不为0或不相等循环。 当执行到LOOPNZ/LOOPNE时,如果之前的 指令结果不为0或者不相等时继续循环,如果 结果为0或者相等,提前退出循环,即使计数 值CX还没减为0。 傲 敷 晕 蚕 手 肪 辕 戒 叁 色 臻 插 钞 貌 皑 煮 巢 匪 掠 歌 科 闷 左 撞 桌 贰 坟 垢 惶 翔 罪 米 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 MOV BX,0 MOV AH,1 SS5:INT 21H MOV SYMBOLBX,AL INC BX CMP AL,0DH LOOPNE SS5 MOV AX,0 例1 循环输入字符,并将字符保存在 SYMBOL数组中,当输入回车时结束 。 柄 剧 玛 熙 畅 塘 怔 驭 悉 赛 脯 伸 捣 冯 冯 楷 奏 菱 挣 砰 诗 瘟 些 摈 镭 谎 谁 趋 颊 榷 躯 探 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 MOV BX,-1 MOV CX,M SS6:INC BX CMP SYMBOLBX,A LOOPNE SS6 OR SYMBOLBX,20H 例2 在长度为M的字符串SYMBOL中查 找大写字母A,找到后将其变为小写。 特 镜 牡 呆 蔑 极 炯 抓 腹 举 抿 琉 狄 棵 痪 枫 浪 啥 晚 来 虑 榜 盐 脾 侵 袄 仟 酗 兑 除 宴 炔 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 练习: 1写出计算Y=5!的程序段。 2写程序段。查找CATT表中的字符 ”,找到后将其保存到SIGN单元,其 位置值保存到ADDI单元。 3写程序段。在长度为N的字数组 VALUE中取出第一个负数保存到AX中 。 寿 迢 淑 计 冶 胆 炎 拜 帜 箱 火 唇 伸 炒 躺 俱 酗 阜 限 撅 观 氯 宙 子 氖 疤 拄 禹 闷 火 尸 噬 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 6.3 串处理 在汇编语言中,可将连续的n个存储单 元称为串、表、数组等。 对于这种数据结构的操作称为串处理 。 对串进行操作,需要几个参数,如串 的长度、串的起始单元地址等;而且 串操作大都是循环执行的,循环如何 控制、串的存取方式等都不同于其它 数据操作。 6.3.1 串的概念 腥 弧 块 揖 苞 锣 踞 紧 行 嘶 丽 亡 峙 文 拘 冬 芝 仍 漫 风 氢 立 赖 岭 才 卑 僚 棒 嗣 猖 拔 昭 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 6.3.2 串处理例子 设计思路: (1)分别定义数据段和附加段; (2)用SI保存源串STRG1的偏移地址,DI 保存目的串STRG2的偏移地址,传送个数 由CX指出; (3)用CLD指令将方向标志DF清0,以便 从低地址单元开始取数,依次地址增加, 取下一数; (4)用REP MOVSB指令实现串传送。 示例6-2 将数据段中的字符串STRG1传送到 附加段的STRG2中。 墙 镐 拄 酣 萧 陀 惠 桶 痘 愤 欲 诵 争 洱 问 涡 憎 锈 坦 躬 倡 讣 意 州 挖 蠕 祟 誊 茹 韦 袒 搅 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 程序如下: ;6-2.asm 串传送 data segment strg1 db 1234567890 data ends extra segment strg2 db 10 dup(?) extra ends code segment assume cs:code,ds:data,es:extra start: mov ax,data mov ds,ax mov ax,extra mov es,ax lea si,strg1 lea di,strg2 cld;方向标志清0 mov cx,10 rep movsb ;以字节形式重复传送CX次 mov ah,4ch int 21h code ends end start 刀 让 绚 刘 博 畦 推 筛 盅 寒 靴 些 副 尝 贸 宽 象 遁 弛 锈 躲 寿 郭 映 惨 泊 辈 猫 酪 颠 丈 礼 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 运行结果: 要观察运行结果,采用DEBUG执行6-2.exe。在 DEBUG下,用U命令查看,找到断点0018,用G 0018执行,再用D ES:0命令查看传送结果。 惕 烛 埂 堵 淘 篆 看 押 货 蛀 当 腺 卡 冈 颅 五 检 游 症 芝 俱 猛 嘎 说 梭 骏 檬 逃 琢 茂 羡 幼 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 此时,数据段的段地址为0B45H,而附加 段的段地址为0B46H。查看的结果在附 加段中。 思考:如果采用循环指令实现串传送, 程序如何改写? 细 炎 悸 换 挣 热 司 浚 俊 易 毋 候 陈 内 捻 烘 婿 塌 奴 钥 仟 醋 鸭 疫 滞 侮 慰 雪 胞 铭 裔 维 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 6.3.3 串处理指令 8086汇编语言指令系统中提供了5种串处理指令。 分别是: MOVS (move string)串传送 CMPS (compare string)串比较 SCAS (scan string)串扫描 LODS (load string)串获取 STOS (store string)串存入 上述串指令应该和重复前缀REP、REPZ/REPE、 REPNZ/REPNE结合. 例 比较两个字串BUNCH1和BUNCH2是否相同,相 同打印Y,不相同打印N。 审 乳 墒 煤 秤 综 青 标 娘 丧 参 窒 匙 终 塞 悯 健 怔 栓 毖 窒 硕 桨 目 浙 立 便 帛 蝇 甩 螟 十 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 示例6-3 比较两个字串BUNCH1和 BUNCH2是否相同,相同打印Y, 不相同打印N。 程序如下: 狭 炭 搽 另 践 虽 洛 面 助 箭 漫 苏 辨 要 粘 桐 网 恭 毛 突 侄 蚁 私 历 涌 宝 氟 彪 石 祭 钥 蝇 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 ;6-3.asm 比较两个字串BUNCH1和BUNCH2 data segment bunch1 db student bunch2 db studEnt data ends code segment assume cs:code,ds:data,es:data start: mov ax,data mov ds,ax mov es,ax lea si,bunch1 lea di,bunch2 cld mov cx,7 repe cmpsb jz let1;相等转LET1 mov dl,N;不相等,显示N jmp print 博 甲 通 瓷 鞋 痴 戌 恩 槽 肾 奶 臆 针 仓 魁 堡 言 斗 银 丘 娶 给 刃 蒋 株 最 兼 蓉 灌 声 庇 鳖 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 let1: mov dl,Y;相等,显示Y print: mov ah,2h int 21h mov ah,4ch int 21h code ends end start 偿 坦 趋 伯 彪 夹 壶 吧 刘 荣 桩 酮 宰 氨 晦 效 帜 炎 烯 扦 甜 蜒 莲 浇 蚀 默 帐 样 价 浸 贼 夷 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 6.3.4 串与循环 归纳循环结构的几种形式: (1)用条件转移指令实现循环 (2)循环指令LOOP/LOOPE/LOOPNE (3)重复前缀REP/REPE/REPNE 在实际编程中,采用哪种指令实现循环, 要从循环执行的条件和退出循环的要求等 方面综合考虑。下面通过几个例子作具体 分析。 址 鹏 成 柿 贾 盈 嫉 熟 光 抹 垛 笛 捧 函 巫 搭 资 懦 剖 阜 漂 新 漆 嫂 忠 偷 筷 富 常 匠 断 擎 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 例1 将ALPHA数组送入100个a。 (1)用条件转移指令实现循环 MOV CX,100 MOV SI,0 SS0: MOV ALPHASI,a INC SI DEC CX JNZ SS0 纲 衷 娜 桂 梗 狈 党 义 槛 岗 多 噪 由 懒 衅 拒 藉 哗 津 撂 巢 询 枕 仕 蛔 啊 春 钟 吮 失 尊 憋 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 (2)用LOOP指令实现循环 MOV CX,100 MOV SI,0 SS0: MOV ALPHASI,a INC SI LOOP SS0 (3)用串处理REP前缀实现循环 MOV CX,100 MOV DI,OFFSET ALPHA MOV AL,a REP STOSB 分析:由于问题简单,只是做赋值操作,且循环 次数已知,所以可以用这三种方法实现。 搂 讹 释 轨 霉 摹 雨 竹 罕 付 仰 链 汉 丛 常 肠 痞 晕 碾 牢 基 同 旱 烤 参 拯 宦 栽 生 瞧 踞 烫 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 6.4 多重循环 1. 内循环和外循环的控制 双重循环需要两个循环控制变量I,J。 多重循环嵌套时,不允许内外循环交叉。 6.4.1多重循环结构 匪 溜 游 酵 五 挣 督 证 与 泌 唱 洗 德 阎 涪 蹿 购 侦 握 林 堤 刚 愧 坷 滓 淖 藩 鲸 朔 搜 砷 烘 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 2内循环和外循环的跳转 在多重循环程序编写过程中,要注意循环体内条件转 移指令的转移方向。一般来说,可以从内循环跳入外 循环,或者跳出外循环;不允许从外循环跳入内循环 或者直接从循环外跳入循环内。 壤 术 警 嚎 诀 萝 拥 檄 孜 寝 靡 拉 择 涤 吟 漳 肺 炸 酵 逐 怀 购 涉 柑 猎 怒 汾 供 杂 淄 颁 率 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 6.4.2排序程序 双重循环程序的典型应用是排序。排序 采用冒泡算法。 冒泡算法的主要思想是从第一个元素开 始,依次对两个相邻的元素进行比较,如果 第一个元素比第二个大,则两数交换位置, 第一遍N-1次比较之后,最大的数排在最后 ;再做第二遍N-2次比较,比较出第二大的 数;以此类推,最多进行N-1遍比较, 所有的数按从小到大升序排序。 专 疗 恒 闲 佩 窘 籍 冒 蔬 晨 侩 坟 柜 鹅 猛 凶 完 辉 检 锋 危 忍 葫 祥 憋 崖 森 渤 羽 度 掐 宝 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 设计思路: (1)用两条LOOP指令实现双重循环时,对 CX寄存器有冲突。采用PUSH CX指令将外 循环的CX值入栈保存,内循环的LOOP结束 后,再将外循环的CX恢复; (2)用相对寄存器寻址取出两数进行比较。 示例6-5 将字数组PART按升序排序 。 势 忧 躁 克 描 劈 谚 咬 消 捕 柯 浓 乡 蜡 访 鲁 二 靡 苑 判 氛 爬 妄 锁 假 护 鸯 两 翼 砂 糠 邯 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 谋 汞 患 附 栗 刊 嫁 惧 怎 匪 酶 姿 街 庙 揉 侨 讲 者 窖 枚 内 疤 借 朔 答 锗 球 案 烽 袖 衅 绥 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 程序如下: ;6-5.asm 将字数组part按升序排序。 data segment part dw 15,32,6,-27,8 sign dw ? data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov cx,sign-part;数组长度 shr cx,1 ;元素个数 dec cx 躁 蒲 淫 荫 寐 坡 峰 浇 才 屋 商 召 通 侍 设 疯 籽 仆 亢 垣 坐 踊 沏 氨 鸟 景 古 潦 邀 想 慌 镐 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 loop1: push cx;保存外循环次数 mov bx,0 loop2: mov ax,partbx cmp ax,partbx+2 jle next;升序 xchg ax,partbx+2;交换 mov partbx,ax next: add bx,2 loop loop2 pop cx;恢复外循环次数 loop loop1 mov ah,4ch int 21h code ends end start 鹅 巨 恶 针 幂 瘦 沁 保 参 蛛 愧 炮 船 扇 毛 奄 伟 磋 铰 稗 照 素 剃 冶 砧 屉 寥 集 绘 钮 感 寄 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 练习: 数组TABLE中存放8个小 写字母computer。编程序,将它 们按降序排序。 祭 叙 豪 涤 勒 差 巡 诫 餐 沿 成 玖 懦 湿 饶 殆 既 逼 娥 庶 络 裙 污 箩 灭 歹 哭 膀 痔 花 衰 榨 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 6.5 循环程序举例 如X=5488114433225634H, Y=3499754783645231H, Z=8921868BB686A865H 设计思路: (1)在数据段中定义两个多字节变量,低字 节单元存放低位,高字节单元存放高位 ; (2)字节的个数N采用EQU赋值伪指令计算 获得; (3)多字节相加用带进位加指令ADC; 示例6-6 编程序实现两个多字节数相加运算。 Z=X+Y 效 胰 坪 虽 媒 荫 靳 涌 禾 娩 浚 堵 寅 觅 喧 寥 菇 无 陨 绒 场 棘 潘 辛 业 翔 柏 诅 友 瀑 熄 右 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 程序如下: ;program 6-6.asm 两个多字节数相加运算 data segment x db 34h,56h,22h,33h,44h,11h,88h,54h y db 31h,52h,64h,83h,47h,75h,99h,34h n equ $-y ;n,字节个数 z db n dup(?) data ends code segment assume cs:code,ds:data 莲 那 跌 鹊 畜 悼 歇 趋 厅 辱 坏 泡 勘 零 谱 磺 阎 熊 处 旁 刽 骋 拟 瘪 颐 俱 涟 蔚 乞 包 闽 史 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 start: mov ax,data mov ds,ax mov cx,n mov bx,0 clc;将进位标志CF清0 let1: mov al,xbx;从低位开始 adc al,ybx mov zbx,al inc bx loop let1 mov ah,4ch int 21h code ends end start 铀 趣 抖 里 茵 膳 胎 星 淡 唾 多 擂 烬 纹 摇 摇 搓 躬 殃 粉 嚣 员 重 柴 摊 罗 郊 敬 柄 滩 垄 逐 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 运行结果: 可以看出,从0号7号前8个字节单元是X, 8号F号8个单元是Y,10H号17H号单元 中为相加的结果Z。 清 霉 畸 朽 璃 排 耽 碘 醋 巡 关 总 腺 卜 闭 本 桂 贞 鸽 酋 凄 郝 赡 吃 涂 吟 餐 剥 晤 锣 又 婶 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 6.6 实例六 循环之循环 由于循环指令和转移指令都会改变程序的走向 ,如果程序有编写思路错误,则不容易找到 出错原因。最简便的方法是直接用DEBUG 工具和记事本打开源程序,边调试边修改。 6.6.1 循环的执行 踪 圾 箱 坡 脂 卸 味 随 增 算 懦 薯 隶 濒 楚 蛾 爪 肪 籍 猖 谦 舜 铆 令 狐 赫 焦 缄 痔 溺 枢 畸 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 (1)把程序调入DEBUG,用U命令反汇编, 显示出机器指令和对应的汇编指令 (2)用G命令先执行到断点处,再用D DS:0 命令查看数据段情况 (3)再用单步调试T命令单步执行,并观察结 果 (4)打开两个窗口 (5)执行LOOP指令 (6)查看结果 禁 鞋 外 颗 历 镇 褂 底 痈 髓 王 刑 多 米 惕 阔 院 的 照 那 略 狠 辕 鞭 啥 姓 索 吧 德 咋 胳 宿 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 6.6.2 实验示例 设计思路: (1)外循环控制行数,内循环控制列数并完 成最大值判断; (2)内外循环都用LOOP指令,用堆栈保存 外循环计数值CX,从外循环进入内循环时 要恢复内循环的计数值CX; (3)用已存入一维矩阵MAX 的数据与A矩阵 的数据做比较,较大的数放入MAX后再与其 它数继续比较。 示例6-10 查找34矩阵A每行中的最大值, 并放入MAX矩阵。 暗 痘 沉 美 谤 稍 桔 比 难 匿 汰 硅 漾 蹦 锦 褒 泵 角 胳 缕 蜒 原 阉 十 悉 赌 谗 肤 制 镰 棘 矮 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 ; 6-10.asm data segment a db 2,-4,-5,10 db 3,6,-7,-12 db 14,-5,9,-3 m dw 3;3行 n dw 4;4列 max db 3 dup(0) data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov cx,m;共找3次 mov bx,0 mov si,0 程序如下: 蛰 柠 卉 镐 豹 硬 公 耘 霍 腔 哇 袁 肥 另 玖 炽 撵 复 这 野 咽 近 薄 蜀 氓 讶 配 窘 团 巷 放 锯 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 rept2: push cx mov cx,n rept1: mov al,abx;找每行最大值 cmp al,maxsi jle let2 mov maxsi,al;最大值在max let2: inc bx loop rept1 inc si pop cx loop rept2 mov ah,4ch int 21h code ends end start 氨 松 糟 霖 比 良 基 潮 县 冀 眠 逢 刘 抡 寓 炙 齿 振 椒 针 雀 揩 酣 半 悔 操 拨 嘎 尊 阿 刽 刷 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 6.6.3 实验任务 实验目的: 通过分析和运行示例程序,掌握循环程序设计思路 和技巧。根据循环程序设计方法,尝试设计出各种 风格的循环程序。 实验内容: 参考示例6-10,完成下列实验内容: (1) 分别统计3个班级中某科成绩优秀的人数和不 及格的人数。 提示:可以看成3n二维数组。分别用MAX和MIN 存放90分以上和60分以下的人数。(6-11.asm) (2) 将上述题目改为用两个数组分别存放每班优 秀的成绩和不及格的成绩。 (3) 分别对两组成绩按降序排序。 郑 光 蹦 灵 意 慈 奶 郊 鹊 瑟 特 落 吻 攫 山 谨 彦 固 渔 象 判 誊 刁 幌 荡 妒 北 鼓 埔 折 必 翟 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 实验要求: (1) 3个题目可任选2个 (2) 实验内容用截图形式记录实验结果 (3) 写出实验结果分析 实验拓展: (1) 自己设计一个双重循环的题目并编程 实现。 (2) 分析例6-8,如果改为在数组中查找 某元素,然后在其后插入一个数据,程序怎 么设计? 漫 篙 椎 言 梢 烁 骇 牧 亦 航 置 浚 霖 疑 锅 其 悄 屎 幽 惜 窝 钟 菌 厨 哭 嫡 赡 波 炔 盖 厩 笺 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计 习题六 整 瑟 券 您 机 傍 茅 微 氟 渐 籍 糖 知 造 询 尉 讫 惋 朗 讳 溢 搽 屯 荆 岩 释 鹰 剃 悍 笛 恒 喘 第 5 - 2 章 循 环 程 序 设 计 第 5 - 2 章 循 环 程 序 设 计

    注意事项

    本文(第5-2章循环程序设计.ppt)为本站会员(京东小超市)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开