




已阅读5页,还剩45页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章8086 8088指令系统 3 3 3逻辑运算和移位指令 要点 逻辑运算指令可实现与 测试 或 非 异或等四类基本逻辑运算 移位指令可实现指定操作数的左移或右移 包括算术 逻辑 循环 操作 逻辑运算和移位指令中的绝大多数均会影响OF CF PF SF和ZF标志 对AF无影响 逻辑运算指令的运算规则是 按位操作 无进 借位 3 3 3逻辑运算和移位指令 1 逻辑运算指令要点 逻辑运算指令可对8位或16位的寄存器或存储器单元中的内容进行按位操作 逻辑运算指令不会产生进位 也不会产生溢出 NOT指令不会影响标志位 其它4条指令对标志位的影响相同 使CF OF 0 AF值不定 并对SF PF和ZF有影响 逻辑运算指令共有五条 包括 AND 与 OR 或 NOT 非 XOR 异或 及TEST 测试 指令 1 逻辑 与 AND 格式及操作 ANDdest src dest dest src 功能 源操作数和目的操作数按位执行 与 操作 结果送回目的操作数中 逻辑 与 指令对操作数的要求如下 可以是字节 8位 也可以是字 16位 但二者必须一致 源操作数可以是立即数 不允许都是存储器操作数 不允许是段寄存器 例1 ANDAL 88H AL AL 88HANDCX 0FF00H CX CX 0FF00HANDAX BX AX AX BXANDAL BX 1 AL AL BX 1 例 例2 保留AL中低4位 高4位清0 ANDAL 0FH 例3 将AL中的小写字母转换成大写 因为小写字母 a z 与大写字母 A Z 仅是bit5位不同 大写字符的bit5为0 所以只要把这一位清零即可 ANDAL 01011111B 2 逻辑 或 指令OR 格式及操作 ORdest src dest dest src 功能 源操作数和目的操作数按位执行 或 操作 结果送回目的操作数中 OR指令中对操作数的要求以及对标志位的影响和AND指令一样 3 逻辑 非 取反 指令NOT 格式及操作 NOTdest dest dest 功能 NOT指令只有一个操作数 它将指定的目的操作数按位变反 结果仍送回目的操作数中 目的操作数可以是8位或16位的寄存器或存储器操作数 但不能是立即数 NOT指令对标志位无影响 例 NOTAX AX AX NOTBL BL BL 4 逻辑 异或 XOR 格式及操作 XORdest src dest dest src 功能 源操作数和目标操作数按位进行 异或 运算 结果再送回目标操作数 异或 操作 两位相同则结果为0 不同则结果为1 所以称之为 异或 例11 XORAX 1122H AX AX 1122HXORAL BX AL AL BX 5 测试指令TEST 格式及操作 TESTdest src dest src 设置标志 功能 除了结果不送到目的操作数外 TEST指令和AND指令的功能 操作及其使用规则完全一样 故这条指令常用于在不破坏原操作数内容的情况下测试操作数中某些位是 1 还是 0 它常与条件转移指令一起使用 例 测试AL中的内容是否为负数 TESTAL 80H 测试AL的最高位是否为1JNZMINUS 1 负数 转MINUS 否则为正数MINUS 负数转到此处理点击观看TEST指令动画 2 移位运算 要点 移位指令可实现指定操作数的左移或右移 包括算术 逻辑 循环移位 操作 移位指令的操作都会与CF标志联动 移位指令会影响OF CF PF SF和ZF标志 对AF无影响 移位的位数通常放在CL寄存器中 但是 当移位位数为1时 也可直接将1作为指令的源操作数 一 非循环移位指令 8086有四条非循环移位指令 它们是 算术左移指令SAL ShiftArithmeticLeft 算术右移指令SAR ShiftArithmeticRight 逻辑左移指令SHL ShiftLogicLeft 逻辑右移指令SHR ShiftLogicRight 它们可以实现对8 16位寄存器或存储器单元进行指定次数的移位 算术移位 把操作数看做有符号数 逻辑移位 把操作数看做无符号数 算术左移和逻辑左移指令SAL SHL 格式 SHLmem reg 功能及操作 SHL和SAL具有相同的功能 将目的操作数的内容左移1位或CL所指定的位数 每左移1位 操作数的最高位被移入标志位CF 而右边的最低位补0 SHL将目的操作数视为无符号数 SAL将目的操作数视为有符号数 注 移位后 CL的内容保持不变 CL 移位位数大于1时1 移位位数等于1时 移位指令执行的操作如下图所示 最低位 最高位 CF 0 a 算术 逻辑左移SAL SHL 移位位数放在CL寄存器中 如果只移1位 也可以直接写在指令中 例如 MOVCL 4SHRAL CL AL中的内容右移4位影响C P S Z O标志 结果未溢出时 左移1位 操作数 2右移1位 操作数 2 例 把AX中的16位无符号数乘以10 把一个数乘10可写成 10 x 8x 2x 23x 21x 用左移指令实现乘10运算的程序段如下 SHLAX 1 AX 2xMOVBX AX BX 2xSHLAX 1 AX 4xSHLAX 1 AX 8xADDAX BX AX 8x 2x 10 xHLT 逻辑右移指令SHR 格式 SHRmem reg CL 移位位数 1时1 移位位数 1时 功能及操作 将目的操作数的内容向右移1位或CL所指定的位数 每右移一位 右边的最低位移入标志位CF 而在左边的最高位补零 移位指令执行的操作如下图所示 最低位 最高位 CF b 逻辑右移SHR 0 算术右移指令SAR 格式 SARmem reg CL 移位位数 1时1 移位位数 1时 功能及操作 将目的操作数的内容向右移1位或CL所指定的位数 操作数最低位移入标志位CF SAL将目的操作数视为有符号数 因此为了保证符号不丢失 算术右移时最高位不是补零 而是保持不变 移位指令执行的操作如下图所示 最低位 最高位 CF c 算术右移SAR 二 循环移位指令 8086有四条循环移位指令 它们是 不含CF的循环左移指令ROL RotatewithoutCarry flagLeft 不含CF的循环右移指令ROR RotatewithoutCarry flagRight 包含CF的循环左移指令RCL RotatewithCarry flagLeft 包含CF的循环右移指令RCR RotatewithCarry flagRight 它们可以实现对8 16位寄存器或存储器单元进行指定次数的循环移位 循环移位指令与非循环移位指令不同 循环移位后 操作数中原来的信息不会丢失 而只是改变了位置而已 如果需要还可恢复 反向移动即可 循环移位指令只影响CF和OF 与非循环移位指令相同 其余标志不受影响 不带进位标志位的循环左移指令ROL 格式 ROLmem reg CL 移位位数 1时1 移位位数 1时 功能及操作 将目标操作数向左循环移动1位或CL指定的位数 最高位移入CF 同时再移入最低位构成循环 CF不在循环圈之内 见图 这4条指令的功能如下图示 最低位 最高位 CF a ROL 最低位 最高位 CF c RCL 最低位 最高位 CF b ROR 最低位 最高位 CF d RCR 循环移位指令功能示意图 不带进位标志位的循环右移指令ROR 格式 RORmem reg CL 移位位数 1时1 移位位数 1时 功能及操作 将目标操作数向右循环移动1位或CL指定的位数 最低位移入CF 同时再移入最高位构成循环 CF不在循环圈之内 见图 ROR指令和ROL指令的操作正好相反 这4条指令的功能如下图示 最低位 最高位 CF a ROL 最低位 最高位 CF c RCL 最低位 最高位 CF b ROR 最低位 最高位 CF d RCR 循环移位指令功能示意图 带进位标志位的循环左移指令RCL 格式 RCLmem reg CL 移位位数 1时1 移位位数 1时 功能及操作 将目的操作数连同CF一起向左循环移动1位或CL指定的位数 最高位移入CF 而CF原来的值移入最低位 CF包含在循环圈之内 见图 这4条指令的功能如下图示 最低位 最高位 CF a ROL 最低位 最高位 CF c RCL 最低位 最高位 CF b ROR 最低位 最高位 CF d RCR 循环移位指令功能示意图 带进位标志位的循环右移指令RCR 格式 RCRmem reg CL 移位位数 1时1 移位位数 1时 功能及操作 将目的操作数连同CF一起向右循环移动1位或CL指定的位数 最低位移入CF 而CF原来的值移入最高位 CF包含在循环圈之内 见图 RCR指令和RCL指令的操作正好相反 这4条指令的功能如下图示 最低位 最高位 CF a ROL 最低位 最高位 CF c RCL 最低位 最高位 CF b ROR 最低位 最高位 CF d RCR 循环移位指令功能示意图 移位指令的分类总表 3 3 4串操作指令 要点 串操作指令可以对存储器中连续的若干地址单元的内容进行相同的操作 串操作指令采用隐含寻址方式 默认情况下源串地址由DS SI指定 目的串地址由ES DI指定 SI和DI中的串地址会自动增 减 量 串操作指令前可以使用重复前缀 以实现对多个数据的连续操作 这时 重复次数由CX指定 一 概述 1 串和串操作存储器中的地址连续的若干单元的字符或数据称为字符串或数据串 串操作指令就是用来对串中每个字符或数据进行操作的指令 串指令既可处理字节串 也可处理字串 并在每完成一个字节 或字 的操作后 能够自动修改指针 以便执行下一个字节 或字 的操作 串指令可完成两个存储单元之间的传送和比较操作 也只有串指令才可以 一 概述 2 串操作的共同点源串 源操作数 默认在数据段中 段基地址由DS指定 但允许段超越 偏移地址由SI指定 即源串指针为DS SI 目的串 目的操作数 默认在附加段中 段基地址由ES指定 偏移地址由DI指定 即目的串指针为ES DI 若要使用重复前缀 则应把串长度放在CX中 在对串中的每个字节 或字 操作后 SI和DI中的串地址都会自动修改 1或 2 其中 由方向标志DF决定 若DF 0 取 若DF 1 取 增减量大小由操作数类型决定 字节操作增减量为1 字操作增减量为2 若使用了重复前缀 CX的内容也会每次自动减1 一 概述 3 串指令的操作 执行规定的操作 SI和 或 DI自动增量 或减量 若有重复前缀 CX自动减1 二 前缀指令 串操作指令前面允许带有一个重复操作前缀 简称前缀指令REP 当使用REP前缀时 该指令重复执行 重复执行次数由CX决定 带有REP前缀的串操作指令每执行一次 CX自动减1 重复前缀包括 REPCX 0时重复执行指令规定的操作 无条件重复前缀 REPE REPZCX 0 ZF 1时重复执行指令规定的操作REPNE REPNZCX 0 ZF 0时重复执行指令规定的操作使用重复前缀可简化程序的编写 并加快串运算指令的执行速度 三 串操作指令 8086指令系统共有5条串操作指令 串拷贝 传送 MOVS串装载LODS串填充 存储 STOS串查找SCAS串比较CMPS 串指令使用的一般方法 设置源串地址 设置目标串地址 设置串长度 设置操作方向DF 串指令 MOVSI 源串首地址 或LEASI 源串 MOVDI 目的串首地址 或LEADI 目的串 MOVCX 串长度 CLD 或STD 串指令 串传送指令MOVSB MOVSW 指令执行的操作为 MOVSB ES DI DS SI SI 1 DI 1MOVSW ES DI 1 DI DS SI 1 SI SI 2 DI 2指令也可写成 MOVSdest src但要求 src用DS SI寻址 dest用ES DI寻址 传送是字节还是字 由操作数的类型决定 串传送指令使用举例 用串传送指令实现200个字节的数据传送 LEASI MEM1LEADI MEM2MOVCX 200CLDREPMOVSBHLT 执行的操作为 对字节 AL DS SI SI 1对字 AX DS SI 1 SI SI 2串装入指令通常不加重复前缀 LODSB等价于 LODSW等价于 MOVAL SI MOVAX SI INCSIINCSIINCSI 2 串装载指令LODSB LODSW 例 以MEM1为首地址的存储器中有10个字节数据 编写程序将这10个数都乘2 假定DS已设置好 LEASI MEM1 SI 源串首地址MOVCX 10 CX 串长度CLD DF 0NEXT LODSB 取一个数据到ALADDAL AL 乘2MOV SI 1 AL 存回去DECCX CX CX 1JNZNEXT CX 0则继续 指令的操作为 对字节 ES DI AL DI 1对字 ES DI 1 DI AX DI 2本指令用于把一块存储区域填充成某一初始值 即对存储区进行初始化 存储区域的首地址要预先设置到ES DI中 要存储到串中的数据要预先存到AL AX 中 3 串存储指令STOSB STOSW 例1 把从A000H开始的2KB内存单元清零 程序段如下 MOVDI 0A000HMOVAX 0MOVCX 1024CLDREPSTOSW 例2 把1000H开始的100个存储单元填入ASCII码2AH 程序段如下 MOVDI 1000H 首地址MOVAL 2AH MOVCX 100 重复执行100次CLD 增量修改DIREPSTOSB 4 串查找SCASB SCASW 执行的操作 对字节 AL ES DI DI 1对字 AX ES DI 1 DI DI 2搜索指令执行的仍是比较 减法 操作 结果只影响标志位 要搜索的关键字放在AL 字节 或AX 字 中 本指令用于在串中查找指定的信息 SCAS指令加上重复前缀后 可对串进行连续扫描比较 若前缀为REPZ 则表示比较结果相等 ZF 1 且串未结束 CX 0 则继续比较 若前缀为REPNZ 则表示比较结果不相等 ZF 0 且串未结束 CX 0 就继续比较 例 在ES段的偏移1000H开始处存有10个ASCII码 搜索 E 若找到则记下搜索次数及存放地址 并在屏
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业设计与消费心理的互动影响
- 工业遗产的旅游价值挖掘与利用
- 工作场所心理健康与防骗意识培养
- 工业设计与产品包装的关联性研究
- 工作流程标准化及其在企业管理中的应用案例
- 工作场所的多样化管理
- 工作流程优化与管理方法改进
- 工程教育的项目式学习与教学设计
- 工程机械的智能化设计与维护
- 市场分析与市场营销决策结合的研究
- 2023年重庆市铜梁区物理八下期末质量跟踪监视模拟试题(含解析)
- 中国华电集团公司信访事项处理程序
- 特种设备制造内审及管理评审资料汇编经典版
- 教师压力管理(教育心理健康C证培训)课件
- 工程勘察设计收费标准使用手册
- 网络暴力主题班会PPT课件讲义
- 《工程管理指导书》word版
- 合理低价法得分计算
- 关于涉农企业税收风险管理的实践和思考
- 05S502阀门井图集
- 轮扣式支架模板施工方案
评论
0/150
提交评论