已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
4 1 38086 8088指令系统 8086 8088CPU指令系统包含有133条基本指令 按其功能可以分为6类 它们是 数据传送类指令 算术运算类指令 逻辑运算与位移类指令 字符串指令 控制转移类指令 处理器控制类指令 一 数据传送类指令 数据传送类指令时将数据 地址或立即数传送到寄存器或存储器单元中 可完成寄存器与寄存器之间 寄存器与存储器之间 寄存器与I O端口之间的字节或字传送 它又可分为通用数据传送指令 输入 输出指令 目标地址传送指令和标志传送指令四组 特点 除SAHF和POPF不影响标志寄存器内容 一 通用数据传送指令1 最基本的传送指令指令格式及操作 MOVdst src dst src 将源操作数s指定的内容送到d目的操作数dst是目的操作数 它可以是存储器 通用寄存器 不能为IP 和段寄存器 不能为CS 不能为立即数 Src是源操作数 它可以是存储器 通用寄存器 段寄存器和立即数 需说明一点 对于代码段寄存器CS和指令指针寄存器IP 通常无需用户利用传送指令改变其中的内容 但是CS可以作为源操作数 16位 MOVE指令需要注意的问题 MOVE指令可传送8位数据 也可传送16位数据 MOVE指令中的两操作数s和d 必用1个寄存器 不允许同时为存储单元 不能用CS和IP做目的操作数 不允许段寄存器之间直接数据传送 不允许立即数做目的操作数 不能向段寄存器送立即数 2 堆栈操作指令堆栈操作指令是用来完成压入和弹出堆栈操作的 8086 8088指令系统中提供了完成这两种操作的相应指令 压入堆栈指令指令格式及操作 PUSHsrc SP SP 2 SP 1 SP src src源操作数可以是寄存器操作数和存储器操作数 且必须是16位的操作数 但不能是立即数 弹出堆栈指令指令格式及操作 POPdst dst SP 1 SP SP SP 2dst目的操作数可以是寄存器操作数和存储器操作数 且必须是16位的操作数 但不能是立即数 特点 s和d可以是16位寄存器或存储器两相邻单元 堆栈按字操作 每执行一条入栈指令 堆栈地址指针SP减2 入栈的数据位于栈顶 高位字节先入栈 放在高位地址单元 低位字节后入栈 放在较低地址单元 先进先出原则 执行弹出指令时 过程相反 栈顶指针的值加2 CS段寄存器的值可以入栈 但不能反过来弹出一个字到CS 3 交换指令将源操作数和目的操作数 字或字节 相互对应交换位置 指令格式及操作 XCHGopr1 opr2 opr1 opr2 4 字节转换指令通过查表来完成代码转换 用于实现字节翻译的功能 指令格式及操作 XLATsrc table AL BX AL XLAT指令是用来将一种字节代码转换成另一种字节代码 执行的结果放在AL中 使用指令前 BX寄存器的内容指向表格首址 AL中存放待查的码 即某一项与表首地址的距离 XLAT指令还可以有以下几种表示形式 XLAT 不写操作数XLATB 有B就不允许再写操作数 XLATES src table 重设段寄存器为ES 例 在内存的数据段有一张16进制数的ASCII码表 其首地址为Hex table 如下图所示 为了查出第10个元素 即十六进制数A的ASCII码 则可用以下几条指令实现 MOVBX OFFSETHex tale BX 表首址MOVAL 0AH AL 序号XLATHex table 查表转换 BX 1000H AX 000AH Hex table 二 输入 输出指令只能用累加器作为执行I 0数据传送的机构 输入输出指令可以分为两大类 一类是直接端口地址的输入 输出指令 一类是通过DX寄存器间接端口地址的输入 输出指令 输入指令 直接寻址的输入指令寻址范围0 255 少于8位地址 指令格式及操作 INacc port acc port 间接寻址的输入指令寻址范围0 65535 少于或超过8位地址 指令格式及操作 INacc DX acc DX 输出指令 直接寻址的输出指令指令格式及操作 OUTport acc port acc 间接寻址的输出指令指令格式及操作 OUTDX acc DX acc 三 目标地址传送指令1 取有效地址指令指令格式 LEAreg16 mem此指令的功能是将存放源操作数的16位偏移地址 即有效地址EA 送到一个16位的通用寄存器中 即源操作数必须是一个存储器操作数 目的操作数必须是一个通用寄存器操作数 例如 LEABX bufferLEAAX BP DI LEADX beta BX SI 注意LEA指令和MOV指令的异同 不同 LEABX buffer 将存储器buffer的偏移地址送到BXMOVBX buffer 将存储器buffer的内容传送到BX相同 LEABX bufferMOVBX OFFSETbuffer以上两条指令都是将存储器buffer的偏移地址送到BX 其中OFFSETbuffer表示存储器偏移地址 2 地址指针装入DS指令指令格式 LDSreg16 mem32此指令的功能是将源操作数所对应的双字长的内存单元中的高字内容 一般为16位段基址 送入DS 低字内容 一般为偏移地址 送入指令所指定的寄存器中 例如 LDSDI 2130H 3 地址指针装入ES指令指令格式 LESreg16 mem32此指令的功能是将源操作数所对应的双字长的内存单元中的高字内容 一般为16位段基址 送入ES 低字内容 一般为偏移地址 送入指令所指定的寄存器中 例如 LESDI 2130H 四 标志传送指令1 取标志指令将标志寄存器F的低字节传送到AH中 指令格式 LAHF2 置标志指令将AH寄存器的内容传送到标志寄存器F的低字节 通过AH对标志寄存器的SF ZF AF PF CF标志位置位 指令格式 SAHF OF DF IF TF SF ZF AF PF CF FLAG AH LAHF和SAHF指令操作示意图 3 标志压入堆栈指令将16位标志寄存器F的内容入栈保护 指令格式及操作 PUSHF SP SP 2 SP 1 SP FLAG 4 标志弹出堆栈指令将当前栈顶和次栈顶中的数据弹出 送回标志寄存器当中 指令格式及操作 POPF FLAG SP 1 SP SP SP 2经常成对出现 用在子程序和中断处理程序的首尾 用来保护和恢复主程序涉及的标志寄存器的内容 必要时可修改标志寄存器的内容 二 算术运算指令 8086 8088有丰富的算术运算指令 而且可以处理4种类型的数据 无符号 有符号 8 16位二进制数 无符号压缩型 非压缩型十进制 根据运算结果影响标志位 有时要利用某些标志位才能得到正确的结果 分成5小类 加法减法乘法除法十进制调整指令 1 加法指令 在微处理器中 没有专用的BCD码运算指令 使用二进制运算指令进行BCD码数的运算 然后用BCD码运算调整指令进行调整 重新得到BCD码的结果 BCD调整指令 ASCII码调整指令 dst dst 1 dst dst src CF dst dst src 操作功能 1 C P S Z A DAA AAA INCdst ADCdst src ADDdst src O 标志位影响 指令格式 功能 源操作数和目的操作数相加 结果送到目的操作数 源操作数 通用寄存器 存储器 立即数目的操作数 通用寄存器 存储器提示 目的操作数不能为立即数 源操作数和目的操作数不能同时为存储器 ADDdst src dst dst src 功能 源操作数和目的操作数相加外 再加上进位标志CF 结果送到目的操作数 CF将从新根据结果置成新的状态 ADC指令一般用于16位以上的多字节数相加 ADCdst src dst dst src 1 功能 将目的操作数当作无符号数 加1后结果送到目的操作数 目的操作数 通用寄存器 存储器 但不允许为立即数 间接寻址的存储单元加1时 数据长度需用伪指令说明 循环程序中 常用该指令对地址指针和循环计数值进行修改 INCd d d 1 例4 3计算两个多字节十六进制数之和 3B74AC60F8H 20D59E36C1H 式中被加数和加数均有5个字节 可以编一个循环程序实现以上运算 假设已将被加数和加数分别存入从DATA1和DATA2开始的两个内存区 且均为低位字节在前 高位字节在后 如图4 15所示 要求相加所得结果仍存回以DATA1为首址的内存区 程序流程图如图4 16所示 程序如下 MOVCX 5 设置循环次数MOVSI 0 置位移量初值CLC 清进位CFLOOPER MOVAL DATA2 SI 取一个加数ADCDATA1 SI AL 和一个被加数相加INCSI 位移量加1DECCX 循环次数减1JNZLOOPER 加完否 若没完 转LOOPER 继续相加HLT 程序暂停 图4 15例4 3中被加数和加数在内存中的存放情况 图4 16例4 3的程序流程图 如果两个对应的BCD数相加若得到的结果大于9或向高位有进位就需要使用BCD码的调整指令 AAA指令 非压缩型BCD码加法调整指令 的操作为 如果 AL 0FH 9或 AF 1 低4位 9或有进位 则 AL AL 06H AH AH 1 AF 1 CF AF AL AL 0FH 否则 AL AL 0FH DAA指令 压缩型BCD码加法调整指令 的操作为 如果 AL 0FH 9 AF 1则 AL AL 06H AF 1如果 AL 9FH或 CF 1 高四位 9或有进位 则 AL AL 60H CF 1 例 要求计算两个至今指数之和 7 8 可用以下指令实现 MOVAX 0007H AL 07H AH 00HMOVBL 08H BL 08HADDAL BL AL 0FHAAA AL 05H AH 01H CF AF 1MOVAX 0007H AL 07H AH 00HMOVBL 08H BL 08HADDAL BL AL 0FHDAA AL 15H AH 00H CF 0 AF 1 2 减法指令 功能 目的操作数减去源操作数 结果送到目的操作数 源操作数 通用寄存器 存储器 立即数目的操作数 通用寄存器 存储器提示 目的操作数不能为立即数 源操作数和目的操作数不能同时为存储器 不允许进行段寄存器减法 SUBdst src dst dst src 功能 目的操作数减去源操作数外 再减去进位标志CF 结果送到目的操作数 CF将从新根据结果置成新的状态 SBB指令一般用于16位以上的多字节数相加 SBBdst src dst dst src 1 功能 将目的操作数减1后结果送到目的操作数 目的操作数 通用寄存器 存储器 但不允许为立即数 间接寻址的存储单元加1时 数据长度需用伪指令说明 循环程序中 常用该指令对地址指针和循环计数值进行修改 DECd d d 1 功能 将目的操作数取负后结果送到目的操作数 目的操作数 通用寄存器 存储器 但不允许为立即数 NEGd d 0 d 功能 目的操作数减去源操作数 不送回结果 只根据运算结果置标志位 源操作数 通用寄存器 存储器 立即数目的操作数 通用寄存器 存储器提示 目的操作数不能为立即数 源操作数和目的操作数不能同时为存储器 不允许进行段寄存器比较 CMPd s d s只置标志位 例4 4内存数据段存放了200个带符号数 首地址为TAB1 要求将各数取绝对值后存入以TAB2为首址的内存区 由于200个带符号数中可能既有正数 又有负数 因此先要判断正负 如为正数 可以原封不动地传送到另一内存区 如为负数 则需先求补即可得到负数的绝对值 然后再传送 程序如下 LEASI TAB1 SI 源地址指针LEADI TAB2 DI 目标地址指针MOVCX 200 CX 循环次数 CHECK MOVAL SI 取一个带符号数到ALORAL AL AL内容不变 只影响标志位JNSNEXT 若 SF 0 则转NEXTNEGAL 否则求补NEXT MOV DI AL 传送到目标地址INCSI 源地址加1INCDI 目标地址加1DECCX 循环次数减1JNZCHECK 如不等于零 则转CHECKHLT 停止 AAS指令的操作为 如果 AL 0FH 9或 AF 1则 AL AL 06H AH AH 1 AF 1 CF AF AL AL 0FH 否则 AL AL 0FH DAS指令的操作为 如果 AL 0FH 9 AF 1则 AL AL 06H AF 1如果 AL 9FH或 CF 1则 AL AL 60H CF 1 3 乘法指令 AL 源操作数 AX 源操作数 功能 完成两个无符号的二进制数相乘 被乘数 隐含在累加器AX或AL中乘数 指令中由s指定的源操作数 通用寄存器或存储器操作数 积 相乘后得到双倍长的积8位二进制数乘法 其16位的积高8位存于AH 低8位存于AL中 16位二进制数乘法 其32位的积高16位存于DX 低16位存于AX中 MULs 无符号乘法指令 功能 完成两个有符号的二进制数相乘 被乘数 隐含在累加器AX或AL中乘数 指令中由s指定的源操作数 通用寄存器或存储器操作数 积 相乘后得到双倍长的积8位二进制数乘法 其16位的积高8位存于AH 低8位存于AL中 16位二进制数乘法 其32位的积高16位存于DX 低16位存于AX中 IMULs 有符号乘法指令 4 除法指令 8086 8088CPU执行除法时规定 除数只能是被除数的一半字长 当被除数为16位时 除数应为8为 当被除数为32位时 除数应为16为 功能 完成两个无符号的二进制数相除 被除数 隐含在累加器AX或D
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年江西应用工程职业学院单招职业适应性考试备考题库及答案解析
- 2026年连云港职业技术学院单招职业适应性测试备考试题及答案解析
- 2026年抚顺职业技术学院单招职业适应性考试参考题库及答案解析
- 2026年河南林业职业学院单招职业适应性测试备考试题及答案解析
- 本科毕业生实习总结15篇
- 2026年桂林山水职业学院单招职业适应性测试备考题库及答案解析
- 2026年萍乡卫生职业学院单招职业适应性测试模拟试题及答案解析
- 2026年泉州经贸职业技术学院单招职业适应性考试模拟试题及答案解析
- 2026年泉州海洋职业学院单招职业适应性测试模拟试题及答案解析
- 2026年邯郸科技职业学院单招职业适应性考试模拟试题及答案解析
- 东北抗联英雄人物智慧树知到期末考试答案章节答案2024年牡丹江师范学院
- Turning Red《青春变形记(2022)》完整中英文对照剧本
- JT-T-1178.2-2019营运货车安全技术条件第2部分:牵引车辆与挂车
- 时尚流行文化解读智慧树知到期末考试答案章节答案2024年天津科技大学
- 齐鲁名家 谈方论药智慧树知到期末考试答案2024年
- 校园火灾发生时教师如何迅速报警并组织疏散
- 血尿病人的护理
- Python数据分析与应用-从数据获取到可视化(第2版)课件 第8章 文本数据分析
- 《数字经济学》教学大纲
- 第七章重介质选矿课件
- 气浮设计计算
评论
0/150
提交评论