已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1 4 3 3逻辑运算和移位指令 逻辑运算指令 与 或 异或 非 运算规则 按位操作 无进 借位 对标志位的影响 除NOT指令外 CFOFSFZFPFAF00 无定义 根据运算结果设置 注意 非指令NOT对标志无影响 2 逻辑运算类指令表 3 1 逻辑 与 AND 对两个操作数进行按位逻辑 与 操作 格式 ANDdest src用途 保留操作数的某几位 清零其他位 例1 保留AL中低4位 高4位清0 ANDAL 0FH例2 AL中有字符 a z 将其转换成大写 ANDAL 01011111B 4 例3 测试AL的bit7 bit5 bit2是否都是1 ANDAL 10100100BCMPAL 10100100BJZYES ifmatch gotoYES ifnotmatch YES goeshereifall 1 5 对两个操作数进行按位逻辑 或 操作 格式 ORdest src用途 对操作数的某几位置1 对两操作数进行组合 例1 把AL中的非压缩BCD码变成相应十进制数的ASCII码 ORAL 30H 2 逻辑 或 OR 6 例2 把AH和AL中的非压缩BCD码组合成压缩的BCD码 放到AL中 MOVCL 4SHLAH CLORAL AH例3 把AL的第5位置为1ORAL 00100000B 7 对操作数进行按位逻辑 非 操作 格式 NOTmem reg例 NOTCXNOTBYTEPTR DI 3 逻辑 非 取反 NOT 8 对两个操作数按位进行 异或 操作 格式 XORdest src用途 对reg清零 自身异或 把reg mem的某几位变反 与 1 异或 例1 把AX寄存器清零 例2 把DH的bit4 3变反 MOVAX 0XORDH 18H XORAX AX ANDAX 0 SUBAX AX 4 逻辑 异或 XOR 9 操作与AND指令类似 但不将 与 的结果送回 只影响标志位 AND与TEST间的区别类似于SUB与CMP间的区别作用 TEST指令常用于位测试 与条件转移指令一起用 例 测试AL的内容是否为负数 TESTAL 80H 检查AL中D7 1 JNZMINUS 是1 负数 转MINUS 否则 正数 不转移MINUS 5 测试指令TEST 10 移位操作类指令表 2 移位指令 11 移位指令功能示意 算术左移指令 算术右移指令 逻辑左移指令 逻辑右移指令 小循环右移指令 小循环左移指令 大循环左移指令 大循环右移指令 CF 12 2 移位指令 1 非循环移位指令算术左移指令SAL ShiftArithmeticLeft 算术右移指令SAR ShiftArithmeticRight 逻辑左移指令SHL ShiftLeft 逻辑右移指令SHR ShiftRight 这4条指令的格式相同 以SAL为例 SALmem reg CL 移位位数 1时1 移位位数 1时 13 移位指令执行的操作如下图所示 最低位 最高位 CF 0 a 算术 逻辑左移SAL SHL 最低位 最高位 CF b 算术右移SAR 最低位 最高位 CF c 逻辑右移SHR 0 非循环移位指令功能示意图 14 算术移位 把操作数看做有符号数 逻辑移位 把操作数看做无符号数 移位位数 一般放在CL寄存器中 但如果只移1位 也可以直接写在指令中 例如 MOVCL 4SHRAL CL AL中的内容右移4位对Flags影响 影响CF PF SF ZF OF标志 移位效果 结果未溢出时 左移1位 操作数 2右移1位 操作数 2 15 例 把AL中的数x 10因为10 8 2 23 21 所以可用移位实现乘10操作 程序如下 SALAL 1 2xMOVAH ALSALAL 1 4xSALAL 1 8xADDAL AH 8x 2x 10 x 16 不含CF的 小 循环左移指令ROL不含CF的 小 循环右移指令ROR含CF的 大 循环左移指令RCL含CF的 大 循环右移指令RCR格式同非循环移位指令 移位位数一般放在CL寄存器中但如果只移1位 也可直接写在指令中 对Flags的影响 只影响标志位CF和OF 2 循环移位指令 17 这4条指令的功能如下图示 最低位 最高位 CF a ROL 最低位 最高位 CF c RCL 最低位 最高位 CF b ROR 最低位 最高位 CF d RCR 循环移位指令功能示意图 18 用移位操作代替乘除法可提高运算速度例 前例中计算x 10 1 采用乘法指令 MOVBL 10MULBL共需70 77个T周期 2 采用移位和加法指令 SALAL 1 2TMOVAH AL 2TSALAL 1 2TSALAL 1 2TADDAL AH 3T只需11个T周期 仅相当于乘法的1 7 19 循环移位举例 例1 将AL的高4位与低4位互换 MOVCL 4ROLAL CL例2 MOVAL 82HRORAL 1执行结果为 AL 41H CF 0 OF 1 20 4 3 4串操作指令 串 顺序放在内存中的一组相同类型的数据 串操作 对串中的元素进行相同的操作 串操作的寻址方式 源操作数指针 DS SI DS可超越 目的操作数指针 ES DI数据块长度 CX功能 可完成两个存储单元之间的传送MOVS 比较CMPS 搜索SANS 读LODS 写STOS5种操作 也仅是串指令可以 一次操作对象为16位 W 或8位 B 数据 但为下一次操作做了准备 21 串操作指令执行动作示意图 自动循环 加前缀REPREPE REPZREPNE REPNZ a 方向标志DF 0 b 方向标志位DF 1 22 每次串操作后 辅助动作 串操作指令自动修改SI和DI 字节 1 字 2 DF标志决定 DF 0增地址方向 DF 1减地址方向 注意 退出串操作后 指针指向最后操作的元素的下一个元素 重复前缀有的串操作指令前面可加上重复前缀REP 当使用REP前缀时 该指令重复执行 重复执行次数由CX决定 带有REP前缀的串操作指令每执行一次 CX自动减1 重复前缀包括 REPCX 0时重复执行REPE REPZCX 0 ZF 1时重复执行REPNE REPNZCX 0 ZF 0时重复执行 23 串操作指令表 24 串指令使用的一般方法 设置源串地址 设置目标串地址 设置串长度 设置操作方向DF 串指令 MOVSI 源串首地址 或LEASI 源串 MOVDI 目的串首地址 或LEADI 目的串 MOVCX 串长度 CLD 或STD 串指令 注意 DS与ES一般在完整程序的开始处设置 在此串指令的程序段中不必重复设置 25 指令执行的操作为 MOVSB ES DI DS SI SI SI 1 DI DI 1MOVSW ES DI 1 DI DS SI 1 SI SI SI 2 DI DI 2指令也可写成 MOVSdest src 即无B或W标识 但要求 src用DS SI寻址 dest用ES DI寻址 传送是字节还是字 由操作数的类型决定 串传送指令MOVSB MOVSW 26 串传送指令使用举例 用串传送指令实现200个字节的数据传送 LEASI MEM1LEADI MEM2MOVCX 200CLDREPMOVSBHLT 27 串比较指令CMPSB CMPSW 指令执行的操作为 CMPSB ES DI DS SI SI SI 1 DI DI 1CMPSW ES DI 1 DI DS SI 1 SI SI SI 2 DI DI 2比较的结果只反映在标志位上 串本身无变化 本指令可用来检查两个串是否相等 格式 CMPSOPRD1 OPRD2CMPSBCMPSW 28 串比较指令举例 JZSTOPDECSIMOVAL SI MOVBX SISTOP HLT 测试内存中两块200个字节数据是否相同 并找出第一个不相等字符的地址 将该地址和字符存贮起来 LEASI MEM1LEADI MEM2MOVCX 200CLDREPECMPSB 29 串扫描SCASB SCASW 执行的操作 对字节 AL ES DI DI DI 1对字 AX ES DI 1 DI DI DI 2搜索指令执行的仍是比较 减法 操作 结果只影响标志位 要搜索的关键字放在AL 字节 或AX 字 中 本指令用于在串中查找指定的信息 格式 SCASOPRDSCASBSCASW 30 SCAS指令加上重复前缀后 可对串进行连续扫描比较 若前缀为REPZ 则表示比较结果相等且 ZF 1 且串未结束 CX 0 则继续比较 若前缀为REPNZ 则表示比较结果不相等 ZF 0 且串未结束 CX 0 就继续比较 31 例 在ES段的偏移1000H开始处存有10个ASCII码 搜索 E 若找到则记下搜索次数及存放地址 并在屏幕上显示 Y 若未找到则显示 N 见右图 在屏幕上显示一个字符的指令段如下 参见附录C 3DOS功能调用 MOVDL MOVAH 2INT21H实现题目要求的程序段见下页 1000H 41 42 43 44 45 46 A B C D F ES段 E 32 MOVDI 1000H DI 串偏移地址MOVCX 0AH CX 串长度MOVAL E 搜索关键字 E CLD 从低地址到高地址进行搜索REPNZSCASB 若未找到 继续搜索JZFOUND 找到 转至FOUNDMOVDL N 串中无 E DL N JMPDONE 转至DONEFOUND DECDI 指针回退MOVADDR DI ADDR E 的地址SUBDI 1000HMOVNUM DI NUM 搜索次数MOVDL Y DL Y DONE MOVAH 2INT21H 显示字符HLT 33 执行的操作为 对字节 AL DS SI SI SI 1对字 AX DS SI 1 SI SI SI 2串装入指令通常不加重复前缀 LODSB等价于 LODSW等价于 MOVAL SI MOVAX SI INCSIINCSIINCSI 串装入指令LODSB LODSW 格式 LODSOPRDLODSBLODSW 34 36H 32H 39H 31H STRING1 STRING2 38H 35H 36H 33H 被加数 加数 数据段 8 5 6 2 9 1 6 3 SUM 结果 07H 07H 02H 06H 265836196277 LEASI STRING1LEADI STRING2LEABX SUMMOVCX 4CLCAGAIN MOVAL SI ADCAL DI AAAMOV BX ALINCSIINCDIINCBXDECCXJNZAGAIN 35 下面要求将两个4字节的ASCII码数据求和 并将和的结果送显示 为此 要先化成ASCII码再送显示 程序段如下 LEASI SUM 3 SI SUM 3MOVCX 4 CX 和长度STD 置DF 1 减量修改SIMOVAH 02 AH 功能号LP LODSB 取BCD码至AL 且SI SI 1ADDAL 30H 转换为ASCII码MOVDL AL DL 字符INT21H 显示字符DECCXJNZ
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大学计算机教学中区块链技术原理的案例化课题报告教学研究课题报告
- 机构研究报告-指数基金投资分析报告:全天候新高半导体设备ETF
- 知识题库-消防安全知识综合考核题及答案
- 2025年高端厨具设计创新十年前瞻行业报告
- 第七章放射线的测量
- 2026年山西德瑞技工学校教师招聘备考题库及一套答案详解
- 长沙市湘一史家坡学校(初中部)2025年公开招聘教师备考题库及答案详解1套
- 高中生利用量子计算技术模拟校园雨水花园生态系统课题报告教学研究课题报告
- 2026年云南现代职业技术学院单招职业技能笔试备考试题及答案解析
- 2026年北京社会管理职业学院单招职业技能笔试备考试题及答案解析
- 年产1000吨溴代吡咯腈农药中间体项目可行性研究报告模板申批拿地用
- 幼儿园教育项目投标书范本
- 2025至2030全球及中国室内定位技术行业项目调研及市场前景预测评估报告
- 太空探索基础设施建设施工方案
- 2025年中国复合材料电池外壳行业市场全景分析及前景机遇研判报告
- 陕西亚联电信网络股份有限公司商业计划书
- 北京市朝阳区2023-2024学年七年级上学期期末质量监测历史试卷及答案
- 教代会提案工作培训指南
- 2025年数字化营销顾问职业素养测评试卷及答案解析
- 2025年保密试题问答题及答案
- 2025年四川单招试题及答案普高
评论
0/150
提交评论