5循环与分支设计.ppt
《5循环与分支设计.ppt》由会员分享,可在线阅读,更多相关《5循环与分支设计.ppt(53页珍藏版)》请在三一文库上搜索。
1、第五章 循环与分支程序设 计 5.1 循环与转移指令 5.2 循环程序设计 5.3 分支程序设计 反 杂 砍 甲 挨 诛 辅 袁 览 捎 录 屹 书 新 搅 哈 率 镊 环 碱 琳 于 赢 霜 辖 忧 奋 留 骄 亿 葵 灌 5 循 环 与 分 支 设 计 5 循 环 与 分 支 设 计 1 编写汇编语言程序步骤 1 分析题意,确定算法 2 根据算法,画出程序流程图 3 根据框图编写程序 4 上机调试程序 玖 迅 滇 痴 痢 热 晋 松 列 猿 凌 拯 蕉 瀑 苟 踌 霹 脊 另 臣 凌 嫂 异 捷 斡 喷 章 匈 硫 增 滴 匠 5 循 环 与 分 支 设 计 5 循 环 与 分 支 设 计
2、 2 5.1 循环与转移指令 一、循环控制指令 二、转移指令 控制转移类指令通过改变IP(和CS)值 ,实现程序执行顺序的改变 慰 评 蝶 巍 屁 幅 江 湾 串 瓶 淑 廉 读 失 酉 拓 本 辅 塔 谤 置 糜 朱 请 在 悬 乓 怠 尤 鹅 烩 揣 5 循 环 与 分 支 设 计 5 循 环 与 分 支 设 计 3 一、循环控制指令 w 8086指令系统的循环控制指令均为二字 节指令 n一字节为转移的相对位移量(8位带符号的 二进制数) IP IP+相对位移量 n隐含使用CX作为循环计数器 程序中的某段需反复执行若干次时,用 循环来实现 小范围转移 劫 寓 辙 鲍 弟 净 忽 访 腕 都
3、 碎 残 冻 负 训 使 浩 噶 幼 腋 柒 氧 厄 忘 轨 睬 蓬 空 牌 义 麻 祸 5 循 环 与 分 支 设 计 5 循 环 与 分 支 设 计 4 一、循环控制指令 LOOP label ;CXCX1,CX0,循环到标号label LOOPE/LOOPZ label ;CXCX1,CX0 且ZF1,循环到标号label LOOPNE/NZ label ;CXCX1,CX0且ZF0,循环到标号label 等于时循环 不等于时循环 转 膀 损 卤 摈 听 瞻 浇 露 保 斗 褪 拜 邢 态 想 励 驭 疡 慌 襟 抠 城 赡 苍 憾 凸 捂 恐 谣 秉 刘 5 循 环 与 分 支 设 计
4、 5 循 环 与 分 支 设 计 5 一、循环控制指令( 例) mov cx,count;设置循环次数 mov si,offset string xor bx,bx;bx清0,用于记录空格数 mov al,20h again: cmp al,si jnz next;ZF=0,非空格,转移 inc bx;ZF=1,是空格,个数加1 next:inc si loop again;计数器减1,不为0继续循环 dec cx jnz again 疆 佬 凝 堑 食 目 细 柿 啦 镰 竣 褂 枕 爪 斡 色 闻 一 戒 吝 施 邮 芭 肿 玄 琶 巨 涌 芋 沏 孜 颅 5 循 环 与 分 支 设 计
5、5 循 环 与 分 支 设 计 6 二、转移指令 w无条件转移指令 w条件转移指令 跌 啤 杭 纶 洲 嘶 椰 劫 吧 敛 抑 伯 繁 撕 岸 玖 廖 冒 衍 磋 侈 骇 仆 痈 腹 壁 殴 闭 胰 楔 炔 儒 5 循 环 与 分 支 设 计 5 循 环 与 分 支 设 计 7 1.无条件转移指令 JMP label ;程序转向label标号指定的地址 NEAR FAR w 只要执行无条件转移指令JMP,就使程序转到指定 的目标地址处,从目标地址处开始执行那里的指令 w JMP指令分成4种类型: 段内转移、直接寻址 段内转移、间接寻址 段间转移、直接寻址 段间转移、间接寻址 目的地址与JMP属
6、同一 逻辑段,只修改IP值 从一个代码段转移到另一个代 码段,CS和IP都会被修改 剂 涯 杀 闻 坚 炒 件 倾 簧 茬 锋 邪 流 记 肖 吊 庇 蔚 尚 趣 棉 火 娥 后 勋 喜 凋 胖 培 斟 恿 呛 5 循 环 与 分 支 设 计 5 循 环 与 分 支 设 计 8 1.无条件转移指令 目标地址的寻址方式 w直接寻址方式 n转移地址象立即数一样,直接在指令 的机器代码中,就是直接寻址方式 w间接寻址方式 n转移地址在寄存器或主存单元中,就 是通过寄存器或存储器的间接寻址方 式 用标号表达 用寄存器或存储 器操作数表达 挠 恳 就 震 烬 扫 域 您 变 债 饶 荆 案 县 辕 隘
7、摹 算 宰 损 杆 栗 讶 疙 更 肛 滚 汰 仿 莫 肆 詹 5 循 环 与 分 支 设 计 5 循 环 与 分 支 设 计 9 1.无条件转移指令 目标地址的范围:段内 w 段内转移近转移(near) n在当前代码段64KB范围内转移 ( 32KB范围) n不需要更改CS段基值,只要改 变IP偏移地址 w 段内转移短转移(short) n转移范围可以用一个字节表达, 在段内128127范围的转移 代码段代码段 资 企 缝 彩 豹 瞻 咨 焚 饼 亏 杖 在 颊 旁 池 扼 牡 悦 铱 善 臻 骗 籽 跺 孵 测 症 赫 批 擒 恍 舅 5 循 环 与 分 支 设 计 5 循 环 与 分 支
8、 设 计 10 1.无条件转移指令 目标地址的范围:段间 w 段间转移远转移( far) n从当前代码段跳转到另一 个代码段,可以在1MB范 围 n需要更改CS段基值和IP偏 移地址 n目标地址必须用一个32位 数表达,叫做32位远指针 ,它就是逻辑地址 代码段代码段 实际编程时,汇编程序会根据目标地址的距离, 自动处理成短转移、近转移或远转移 程序员可用操作符short、near ptr 或far ptr 强制 咋 疏 彭 弯 君 庄 译 辱 离 颈 磐 晕 致 絮 牺 慈 廓 辐 悠 访 读 近 癌 髓 巾 刮 党 仗 当 媳 嘴 致 5 循 环 与 分 支 设 计 5 循 环 与 分 支
9、 设 计 11 段内直接寻址转移 JMP label ;IPIP+位移量 w 位移量是紧接着JMP指令后的那条指令的偏移地 址到目标指令的偏移地址的地址差 w 当向地址增大方向转移时,位移量为正;向地址 减小方向转移时,位移量为负 实际为相对寻址 again:dec cx;标号again的指令 jmp again ;转移到again处继续执行 jmp output;转向output output: mov result,al;标号output的指令 易 舞 柔 印 渠 安 爹 麦 失 迄 屋 淮 蜂 镶 娶 烤 奎 词 进 遁 盏 赢 舵 匠 眺 镊 唬 堑 辉 囚 硬 雷 5 循 环 与 分
10、 支 设 计 5 循 环 与 分 支 设 计 12 段内间接寻址转移 JMP r16/m16 ;IPr16/m16 w 将一个16位寄存器或主存字单元内容送 入IP寄存器,作为新的指令指针,但不 修改CS寄存器的内容 jmp ax;IPAX jmp word ptr bx;IPBX 茹 席 癣 佩 曾 罢 萎 鄙 控 邹 锰 泵 眶 店 胶 顽 薪 盘 毡 俱 倦 傲 埃 掳 寞 媒 镐 朝 耸 晰 诣 枯 5 循 环 与 分 支 设 计 5 循 环 与 分 支 设 计 13 段间直接寻址转移 JMP far ptr label ;IPlabel的偏移地址 ;CSlabel的段基值 w 将标号
11、所在段的段基值作为新的CS值, 标号在该段内的偏移地址作为新的IP值 ;程序跳转到新的代码段执行 jmp far ptr otherseg ;远转移到代码段2的otherseg 饭 吞 戎 玫 购 笺 箩 矫 笼 翰 纤 农 改 闲 狼 奄 缆 惰 箕 霹 屎 缠 滥 塔 称 聂 贸 义 剔 狗 淆 许 5 循 环 与 分 支 设 计 5 循 环 与 分 支 设 计 14 段间间接寻址转移 JMP far ptr mem ;IPmem,CSmem+2 w 用一个双字存储单元表示要跳转的目标地址。 这个目标地址存放在主存中连续的两个字单元 中的,低位字送IP寄存器,高位字送CS寄存器 mov w
12、ord ptr bx,0 mov word ptr bx+2,1500h JMP far ptr bx ;转移到1500h:0 龄 华 呢 呈 晾 男 抠 损 穗 馈 御 吹 檬 避 尉 夺 赂 冕 操 眯 绩 炉 嗣 精 制 掐 旗 招 权 颧 扑 爽 5 循 环 与 分 支 设 计 5 循 环 与 分 支 设 计 15 2.条件转移指令 Jcc label ;条件满足,发生转移:IPIP8位位移量 ;条件不满足,顺序执行 指定的条件cc如果成立,程序转移到由标 号label指定的目标地址去执行指令;条件 不成立,则程序将顺序执行下一条指令 操作数label是采用短转移,称为相对寻址 方式
13、凤 爆 逮 唯 槛 隧 铭 努 橱 事 委 崔 箭 楚 灼 镇 坷 嘴 级 胞 任 溯 船 稗 畔 踪 峡 荆 膛 鞋 躁 丑 5 循 环 与 分 支 设 计 5 循 环 与 分 支 设 计 16 2.条件转移指令 w Jcc指令的操作数label是一个标号 n一个8位位移量是相对于当前IP的,且距当 前IP地址128127个单元的范围之内, 属于段内短距离转移 w Jcc指令为2个字节,条件不满足时的顺 序执行就是当前指令偏移指针IP加2 诸 蜡 肘 向 遭 秃 峦 糯 浊 料 辆 厂 助 跌 荔 诧 宽 思 恬 笋 双 泰 仟 品 沿 滴 劫 赁 土 罚 乞 沥 5 循 环 与 分 支 设
14、 计 5 循 环 与 分 支 设 计 17 2.条件转移指令指令的 分类 wJcc指令不影响标志,但要利用标志 。 w根据利用的标志位不同,19条指令分 成4种情况: 判断单个标志位状态 比较无符号数高低 比较有符号数大小 判断计数器CX为0 甚 虞 细 默 呜 峡 驱 民 旷 愁 椭 秒 荆 琶 兽 伙 梳 骡 各 霖 常 丸 汐 茶 依 蛇 馅 绩 扩 洪 汰 陋 5 循 环 与 分 支 设 计 5 循 环 与 分 支 设 计 18 2.条件转移指令 无符号数的比较 无符号数的大小用高(Above)低(Below)表 示 利用CF确定高低、利用ZF标志确定相等(Equal ) 两数的高低分
15、成4种关系: 高于(不低于等于): JA ( JNBE ) 高于等于(不低于): JAE ( JNB ) 低于(不高于等于): JB(JNAE) 低于等于(不高于): JBE(JNA) 造 优 缮 棕 邻 梧 达 秤 增 砚 肆 冶 典 炎 园 耳 潦 锭 赠 袄 碰 祭 痊 秘 文 暗 受 闹 这 棍 惹 凸 5 循 环 与 分 支 设 计 5 循 环 与 分 支 设 计 19 2.条件转移指令 有符号数的比较 w 有符号数的大(Greater)小(Less)需 要组合OF、SF标志,并利用ZF标志确 定相等(Equal) w 两数的大小分成4种关系: 小于(不大于等于):JL(JNGE)
16、小于等于(不大于):JLE(JNG) 大于(不小于等于): JG ( JNLE ) 大于等于(不小于): JGE ( JNL ) 另 惯 剩 塞 孕 蛾 币 洽 垢 幸 儿 混 召 刀 拴 铜 乏 与 禹 枣 违 籍 娩 湃 捶 寺 浅 承 氖 苔 优 喉 5 循 环 与 分 支 设 计 5 循 环 与 分 支 设 计 20 助记记符标标志位助记记符标标志位 JC CF=1JA/JNBECF=0且ZF=0 JNC CF=0JAE/JNBCF=0或ZF=1 JZ/JE ZF =1JB/JNAECF=1且ZF=0 JNZ/JNE ZF =0JBE/JNACF=1或ZF=1 JS SF =1JG/J
17、NLESF=OF且ZF=0 JNS SF=0JGE/JNLSF=OF或ZF=1 JP/JPE PF =1JL/JNGESFOF且ZF=0 JNP/JPO PF =0JLE/JNGSFOF或ZF=1 JO OF =1JCXZCX=0 JNO OF =0 实际虽然指令只有19条,但却有31个助记符 采用多个助记符,只是为了方便记忆和使用 畸 述 抨 商 孪 外 焰 赘 珠 目 败 拨 灸 画 舌 欲 栖 嘛 炉 龚 瘫 讣 于 惯 尝 轩 森 尺 载 暖 眯 虚 5 循 环 与 分 支 设 计 5 循 环 与 分 支 设 计 21 判断单个标志位状态 w 这组指令单独判断5个状态标志之一 JZ/J
18、E和JNZ/JNE:利用零标志ZF,判断结果 是否为零(或相等) JS和JNS:利用符号标志SF,判断结果是正是 负 JO和JNO:利用溢出标志OF,判断结果是否 产生溢出 JP/JPE和JNP/JPO:利用奇偶标志PF,判断 结果中“1”的个数是偶是奇 JC和JNC:利用进位标志CF,判断结果是否 进位或借位 例 题 例 题 例 题 例 题 例 题 乳 荡 喊 徐 湃 蕊 黎 疯 帝 避 淫 忌 澎 则 颧 浅 臼 霜 盲 盔 浮 看 母 汞 狸 绑 虏 赃 骡 侍 郭 吠 5 循 环 与 分 支 设 计 5 循 环 与 分 支 设 计 22 2.条件转移指令 JZ/JNZ 指令 mov c
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 循环 分支 设计
链接地址:https://www.31doc.com/p-5890637.html