




已阅读5页,还剩46页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章8086的寻址方式和指令系统 H 乘法指令 H MUL无符号数乘法指令 MUL无符号数乘法指令 Multiplyunsigned 格式MULsrc 功能将源操作数和累加器中的数都当成无符号数 然后将两数相乘 src可以是字 0 65535 和字节 0 255 操作数要求可以是寄存器 存储单元 但不能是立即数 源操作数是存储单元时 必须在操作数前加B或W说明是字节还是字 H MUL无符号数乘法指令 运算情况源操作数是一个字节源操作数与累加器AL中的内容相乘 乘积为双倍长的16位数 高8位送到AH 低8位送AL 即AX AL 源 AL 被乘数 8位 操作数 乘数 8位 AX 乘积 16位 H MUL无符号数乘法指令 运算情况源操作数是一个字源操作数与累加器AX的内容相乘 结果为32位数 高位字放在DX寄存器中 低位字放在AX寄存器中 即 DX AX AX 源 AX 被乘数 16位 操作数 乘数 16位 AX 乘积 32位 DX H 举例MULCL AL乘CL 结果在AX中MULBX AX乘BX 结果在DX AX中MULBYTE DI AL乘存储器 8位 结果在AX中MULWORD BX AX乘存储器字 结果在DX AX中如果运算结果的高半部分 在AH或DX中 为零 则状态标志位 CF OF 0 否则 CF OF 1 因此 状态标志位 CF OF 1 表示AH或DX中包含着乘积的有效位 MUL无符号数乘法指令 H 举例MOVAL 14H AL 14H 20MOVCL 05H CL 05H 5MULCL AX 0064H 100本例中结果的高半部分 AH 0 因此 状态标志位 CF OF 0 通过检测标志 可以去除结果中的前导无效零 有了乘法 和除法 指令 使有些运算程序的编程变得简单方便 但是必须注意 乘法指令的执行速度很慢 除法指令也是如此 MUL无符号数乘法指令 H IMUL整数乘法指令 IMUL整数乘法指令 IntegerMultiply 格式IMULsrc 功能将源操作数和累加器中的数都当成有符号数 然后将两数相乘 src可以是字 32768 32767 和字节 128 127 操作数要求和运算情况与MUL要求相同 H 举例IMULCL AL乘CL 结果在AX中IMULBX AX乘BX 结果在DX AX中IMULBYTE DI AL乘存储器 8位 结果在AX中IMULWORD BX AX乘存储器字 结果在DX AX中如果运算结果的高半部分 在AH或DX中 为0或1 则状态标志位 CF OF 0 否则 CF OF 1 因此 状态标志位 CF OF 1 表示AH或DX中包含着乘积的有效位 为0 则表示高半部分是符号扩展 IMUL整数乘法指令 正数 AH或DX为全0负数 AH或DX为全1 H 举例MOVAX 04E8H AX 04E8HMOVBX 4E20H BX 4E20HIMULBX DX AX AX BX 以上指令的执行结果为 DX 017FH AX 4D00H 且 CF OF 1 实际上 以上指令完成带符号数 1256和 20000的乘法运算 得到乘积为 25120000 由于此时DX中结果的高半部分包含着乘积的有效数字 故状态标志位 CF OF 1 IMUL整数乘法指令 H AAM乘法的ASCII调整指令 AAM乘法的ASCII调整指令 ASCIIAdjustforMultiply 格式AAM 功能对AL中的两个非压缩十进制数相乘的乘积进行十进制数的调整 在AX中得到正确的非压缩十进制数的乘积 高位在AH中 低位在AL中 调整的过程把AL寄存器内容除以10 商放在AH中 余数在AL中 即 AH AL 10所得的商 AL AL 10所得的余数 H AAM乘法的ASCII调整指令 举例求两个非压缩十进制数08和04之乘积 解 MOVAL 08H 置初值MOVBL 04HMULBL AL 08与04之乘积20HAAM 调整得AH 03H 十位 AL 02H 个位 结果 AX 0302H 即BCD数32 若想转换成ASCII码 需再执行ORAX 3030H H 除法指令 H DIV无符号数除法指令 DIV无符号数除法指令 Divisionunsigned 格式DIVsrc 功能将两个无符号数相除 被除数的长度必须是除数长度的两倍 若不够 必须扩展被除数的长度 操作数要求可以是寄存器 存储单元 但不能是立即数 源操作数是存储单元时 必须在操作数前加B或W说明是字节还是字 H DIV无符号数除法指令 运算情况源操作数是一个字节16位被除数必须放入AX中 src为8位 AL AX src字节的商AH AX src字节的余数 H DIV无符号数除法指令 运算情况源操作数是一个字32位被除数必须放入 DX AX 中 src为16位 AX DX AX src字的商DX DX AX src字的余数 H 举例MOVAX 0F05H AX 0F05HMOVDX 068AH DX 068AHMOVCX 08E9H CX 08E9HDIVCX 运算完毕后 商 AX BBE1H 余数 DX 073CH DIV无符号数除法指令 H 注意事项执行DIV指令时 如果除数为0 或字节除法时AL寄存器中的商大于FFH 或字除法时AX寄存器中的商大于FFFFH 则CPU立即自动产生一个类型号为0的内部中断 DIV无符号数除法指令 H IDIV整数除法指令 IDIV整数除法指令 IntegerDivision 格式IDIVsrc 功能将两个带符号数相除 被除数的长度必须是除数长度的两倍 若不够 必须用CBW或CWD扩展被除数的长度 操作数要求与运算情况同DIV H 注意事项执行IDIV指令时 如果除数为0 或字节除法时AL寄存器中的商超出 128 127范围 或字除法时AX寄存器中的商超出 32768 32767范围 则CPU立即自动产生一个类型号为0的内部中断 IDIV整数除法指令 H IDIV整数除法指令 关于余数的符号在对有符号数进行除法运算时 例如 30除以8 可以得到商为 4 余数为 2 也可以得到商为 3 余数为 6 两结果都是正确的 对于8086 规定余数的符号和被除数的符号相同 因此第二种结果是8086执行完以后的结果 H 被除数扩展问题 无论是无符号数还是有符号数除法时 必须满足被除数长度是除数长度的两倍 当不够时 涉及到被除数的扩展 无符号数 被除数的扩展比较简单 添上足够的零就可以了 以下指令将AL中的一个8位无符号数扩展成为16位 存放在AX中 MOVAL 0FBH AL 11111011BXORAH AH AH 00000000B 有符号数 被除数的扩展必须根据各自的符号来完成 因此 需要借助指令CBW和CWD完成 H CBW把字节转换成字指令 CBW把字节转换成字指令 ConvertBytetoWord 格式CBW 功能把寄存器AL中字节的符号位扩充到AH的所有位 AH被称为AL的符号扩充 不影响标志位 扩展方法AL为正数 AL 80H 时 即D7 1时 使AH 0FFH H 扩展方法MOVAL 4FH AL 01001111BCBW 由于AL7FH 或者说AL为负数时 符号位为1 AH应补1 因此 AH 11111111B CBW把字节转换成字指令 H CWD把字转换成双字指令 CWD把字转换成双字指令 ConvertWordtoDoubleWord 格式CWD 功能把寄存器AX中字的符号位扩充到DX的所有位 扩展方法AX为正数 AX7FFFH 时 即D15 1时 使DX 0FFFFH H CBW和CWD指令在带符号数的乘法 IMUL 和除法 IDIV 运算中十分有用 在字节或字的运算之前 将AL或AX中数据的符号位进行扩展 例如 MOVAL MUL BYTE AL 8位被乘数 带符号数 CBW 扩展成为16位带符号数 在AX中IMULBX 两个16位带符号数相乘 结果在DX AX中 CBW和CWD H AAD除法的ASCII调整指令 AAD除法的ASCII调整指令 ASCIIAdjustforDivision 格式AAD 功能在做除法之前 将AX中BCD码转换成二进制数并存入AL中 调整过程AL AH 10 AL AH 00 H 位运算指令 12条 位操作指令是对8位或16位的寄存器或存储单元中的内容按位进行操作 H 逻辑运算指令 H NOT取反指令 NOT取反指令 LogicalNot 格式NOTdst 功能dst dst取反 执行完后不影响标志位 操作数要求 可以是8位或16位寄存器 存储器 对于存储器操作 需指明是字还是字节 H AND逻辑与指令 AND逻辑与指令 LogicalAND 格式ANDdst src src可以是立即数 功能dst dst src 执行完后影响标志位 主要用于使操作数的某些位保留 和 1 相与 而使某些位清除 和 0 相与 操作数要求 可以是8位或16位寄存器 存储器 不能同时为men 对于存储器操作 需指明是字还是字节 H OR逻辑或指令 OR逻辑或指令 LogicalOR 格式ORdst src src可以是立即数 功能dst dst src 执行完后影响标志位 主要用于使操作数的某些位保留 和 0 相或 而使某些位置1 和 0 相或 操作数要求 可以是8位或16位寄存器 存储器 不能同时为men 对于存储器操作 需指明是字还是字节 H AND OR NOT举例 举例MOVAL 35H AL 0011 0101BANDAL 0FH 0000 1111B 得AL 05HORAL 70H 0111 0000B 得AL 75HNOTAL 取反得1000 1010B 即AL 8AH H XOR异或指令 XOR异或指令 ExclusiveOR 格式XORdst src src可以是立即数 功能dst dst src 执行完后影响标志位 主要用于使操作数的某些位保留 和 0 相异或 而使某些位取反 和 1 相异或 操作数要求 可以是8位或16位reg men 不能同时为men 对于存储器操作 需指明是字还是字节 H TEST测试指令 TEST测试指令 Test 格式TESTdst src src可以是立即数 功能dst src 执行完后影响标志位 但是与完后的结果不回送 主要用于对某些位数据的检测 编程时 其后往往紧跟条件转移指令 操作数要求 可以是8位或16位寄存器 存储器 不能同时为men 对于存储器操作 需指明是字还是字节 H 逻辑运算指令总结 除了NOT指令外 其他指令都影响状态标志位 这些指令将根据各自逻辑运算的结果影响SF ZF和PF状态标志位 同时将CF和OF置 0 但AF的值不确定 H 算术逻辑移位指令 H SHL SAL逻辑 算术左移指令 SHL SAL逻辑算术左移指令 ShiftLogic ArithmeticLeft 格式SHL SALdst 1 CL 功能将寄存器或存储器中的目的操作数的各位左移 每移一次 最低有效位LSB补0 而最高有效位MSB进入标志位CF H SHL SAL逻辑算术左移指令 举例MOVAH 06H SALAH 1 MOVCL 03HSHLDI CLSALBYTEPTR BX 左移一次 相当于乘以2 仅移位一次时 可以直接用立即数表示 否则 移位次数必须送入CL中 H AH 06H 00000110B 将AH的内容左移1次 AH 00001100B 将DI的内容左移3次 将内存单元的字节左移1位 SHR逻辑右移指令 SHR逻辑右移指令 ShiftLogicRight 格式SHRdst 1 CL 功能各位进行右移 每移一次 低位进入CF 最高位补0 H SHR逻辑右移指令 说明若目的操作数为无符号数 每右移一次 目的操作数除以2 余数被丢掉 举例用右移的方法作除法133 8 16 5 解 MOVAL 10000101B AL 133MOVCL 03H CL 移位次数SHRAL CL 右移3次指令执行后 AL 10H 16 余数5被丢失 标志位CF AF不定 H SAR算术右移指令 SAR算术右移指令 ShiftArithmeticRight 格式SARdst 1 CL 功能各位进行右移 每移一次 低位进入CF 最高位保持不变 所谓算术和逻辑的区别就是在右移时 是补符号位还是零 H SAR算术右移指令 说明若目的操作数为带符号数 每右移一次 目的操作数除以2 余数被丢掉 举例用右移的方法作除法 128 8 16 解 MOVAL 10000000B AL 128MOVCL 03H CL 移位次数SHRAL CL 右移3次指令执行后 AL 1111 0000B 0F0H 16 H 循环移位指令 H ROL循环左移指令 ROL循环左移指令 RotateLeft 格式ROLdst 1 CL 功能将dst向左循环移动1位或CL寄存器指定的位数 最高位移到进位标志CF 同时 最高位移到最低位形成循环 进位标志CF不在循环回路之内 H ROR循环右移指令 ROR循环右移指令 RotateRight 格式RORdst 1 CL 功能将dst向右循环移动1位或CL寄存器指定的位数 最低位移到进位标志CF 同时最低位移到最高位 H RCL通过进位位循环左移指令 RCL通过进位位循环左移指令RotatethroughCarryLeft格式RCLdst 1 CL 功能将dst连同进位标志CF一起向左循环移动1位或由CL寄存器指定的位数 最高位移入CF 而CF移入最低位 H RCR通过进位位循环右移指令 RC
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 集资房产权过户合同及税务筹划服务协议
- 网络游戏销售提成与工资待遇合同范本
- 郑州二手房交易房产买卖合同终止条件与程序协议
- 郑州二手房交易全流程中介服务合同模板
- 香港公司股权转让手续全程辅导及法律支持合同
- 离婚登记全程服务与法律维权合同
- 鸡粪环保利用合作合同中的环保责任与效益分配
- 新购销合同范本3篇
- 【赠与合同】企业赠与合同4篇
- 2025年车辆赠与合同5篇
- 以《论语》为翼:高中生价值观构建的教学实践与探索
- 妇产科电子护理文书书写规范
- 2025年广东省中考物理试题卷(含答案)
- DB42 1537-2019 农村生活污水处理设施水污染物排放标准
- 第一单元 写作《热爱写作学会观察》课件 学年统编版语文七年级上册
- 钙钛矿有机叠层太阳能电池界面工程与载流子传输机制
- 病媒生物防培训课件
- 《生产运营管理》 课件 第15章-数字化转型背景下生产运营模式
- 影像学检查技术课件
- 中国肿瘤药物相关血小板减少诊疗专家共识(2023版)
- 皮带厂车间管理制度
评论
0/150
提交评论