汇编语言第八次课.ppt_第1页
汇编语言第八次课.ppt_第2页
汇编语言第八次课.ppt_第3页
汇编语言第八次课.ppt_第4页
汇编语言第八次课.ppt_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程舒慧2011 9 19 汇编语言 程舒慧2011 11 7 8086 8088指令系统 二 算术指令1 加法指令加法指令 ADDDST SRC执行操作 DST SRC DST 带进位加法指令 ADCDST SRC执行操作 DST SRC DST CF加1指令 INCOPR执行操作 OPR OPR 1 8086 8088指令系统 2 减法指令减法指令 SUBDST SRC执行操作 DST DST SRC 带借位减法指令 SBBDST SRC执行操作 DST DST SRC CF减1指令 DECOPR执行操作 OPR OPR 1求补指令 NEGOPR执行操作 OPR OPR 比较指令 CMPOPR1 OPR2执行操作 OPR1 OPR2 注意 除DEC指令不影响CF标志外 均对条件标志位有影响 P63例题 8086 8088指令系统 3 乘法指令无符号数乘法指令 MULSRC带符号数乘法指令 IMULSRC执行操作 字节操作数 AX AL SRC 字操作数 DX AX AX SRC 注意 AL AX 为隐含的乘数寄存器 AX DX AX 为隐含的乘积寄存器 SRC不能为立即数 除CF和OF外 对条件标志位无定义 8086 8088指令系统 4 除法指令无符号数除法指令 DIVSRC带符号数除法指令 IDIVSRC执行操作 字节操作 AL AX SRC 的商 AH AX SRC 的余数字操作 AX DX AX SRC 的商 DX DX AX SRC 的余数 注意 AX DX AX 为隐含的被除数寄存器 AL AX 为隐含的商寄存器 AH DX 为隐含的余数寄存器 SRC不能为立即数 对所有条件标志位均无定义 P67例题3 55 8086 8088指令系统 三 逻辑指令1 逻辑运算指令 逻辑非指令 NOTOPR OPR不能为立即数执行操作 OPR OPR 不影响标志位逻辑与指令 ANDDST SRC执行操作 DST DST SRC 逻辑或指令 ORDST SRC执行操作 DST DST SRC 异或指令 XORDST SRC执行操作 DST DST SRC 测试指令 TESTOPR1 OPR2执行操作 OPR1 OPR2 CFOFSFZFPFAF00 无定义 根据运算结果设置 8086 8088指令系统 3 17 3 Z W X Y 6 R 余数MOVAX WIMULXMOVBX YADDBX 6IDIVBXMOVZ AXMOVR DX 4 Z W X 5 Y 2MOVAX WSUBAX XCWDMOVBX 5IDIVBXIMULYSALAX 1RCLDX 1MOVZ AXMOVZ 2 DX 8086 8088指令系统 3 23 1 BX 9AH CF OF都为0 AF无定义 SF 0 ZF 0 PF 1 2 BX 61H CF OF都为0 AF无定义 SF 0 ZF 0 PF 0 3 BX 0FBH CF OF都为0 AF无定义 SF 0 ZF 0 PF 0 4 BX 1CH CF OF都为0 AF无定义 SF 0 ZF 0 PF 0 5 BX 00H CF OF都为0 AF无定义 SF 0 ZF 1 PF 1 6 BX 0E3H CF OF都为0 AF无定义 SF 0 ZF 0 PF 0 8086 8088指令系统 2 移位指令 逻辑左移SHLOPR CNT逻辑右移SHROPR CNT算术左移SALOPR CNT 同逻辑左移 算术右移SAROPR CNT CF0 0CF CF 循环左移ROLOPR CNT循环右移ROROPR CNT带进位循环左移RCLOPR CNT带进位循环右移RCROPR CNT CF CF CF CF 8086 8088指令系统 注意 OPR可用除立即数以外的任何寻址方式 CNT 1 SHLOPR 1CNT 1 MOVCL CNTSHLOPR CL 以SHL为例 条件标志位 CF 移入的数值1CNT 1时 最高有效位的值发生变化0CNT 1时 最高有效位的值不变移位指令 SF ZF PF根据移位结果设置 AF无定义循环移位指令 不影响SF ZF PF AF OF 8086 8088指令系统 例 BX 84F0H 1 BX 为无符号数 求 BX 2SHRBX 1 BX 4278H 2 BX 为带符号数 求 BX 2SALBX 1 BX 09E0H OF 1 3 BX 为带符号数 求 BX 4MOVCL 2SARBX CL BX 0E13CH 例 AX 0012H BX 0034H 把它们装配成 AX 1234H MOVCL 8ROLAX CLADDAX BX 8086 8088指令系统 例 实现把AL的高4位与低4位交换ROLAL 1ROLAL 1ROLAL 1ROLAL 1MOVCL 4ROLAL CL 例把AL的最低位送入BL的最低位 保持AL不变 RORBL 1RORAL 1RCLBL 1ROLAL 1 8086 8088指令系统 MOVCH 4 循环次数MOVCL 4 移位次数NEXT ROLBX CLMOVAX BXANDAX 0FHPUSHAXDECCHJNZNEXT 0008 0004 000F 0000 SP 例 BX 84F0H 把 BX 中的16位数每4位压入堆栈 习题3 26 3 27 8086 8088指令系统 控制转移指令控制转移类指令用于实现分支 循环 过程等程序结构 是仅次于传送指令的常用指令 控制转移类指令通过改变IP 和CS 值 实现程序执行顺序的改变分为 无条件转移指令 条件转移指令 循环指令 子程序调用和返回指令 中断与中断返回指令 8086 8088指令系统 1 无条件转移指令JMPlabel 程序转向label标号指定的地址只要执行无条件转移指令JMP 就使程序转到指定的目标地址处 从目标地址处开始执行指令操作数label是要转移到的目标地址 目的地址 转移地址 JMP指令分成4种类型 段内转移 相对寻址 段内转移 间接寻址 段间转移 直接寻址 段间转移 间接寻址 8086 8088指令系统 目标地址的寻址方式相对寻址方式相对寻址方式以当前IP为基地址 加上位移量构成目标地址直接寻址方式转移地址象立即数一样 直接在指令的机器代码中间接寻址方式转移地址在寄存器或主存单元中 用标号表达 用标号表达 用寄存器或存储器操作数表达 8086 8088指令系统 目标地址的范围 段内段内转移 近转移 near 在当前代码段64KB范围内转移 32KB范围 不需要更改CS段地址 只要改变IP偏移地址段内转移 短转移 short 转移范围可以用一个字节表达 在段内 128 127范围的转移当向地址增大方向转移时 位移量为正 向地址减小方向转移时 位移量为负 8086 8088指令系统 目标地址的范围 段间段间转移 远转移 far 从当前代码段跳转到另一个代码段 可以在1MB范围更改CS段地址和IP偏移地址目标地址必须用一个32位数表达 叫做32位远指针 它就是逻辑地址 实际编程时 MASM汇编程序会根据目标地址的距离 自动处理成短转移 近转移或远转移 程序员可用操作符short nearptr或farptr强制 8086 8088指令系统 1 段内直接转移 段内转移相对寻址 段内直接短转移 JMPSHORTOPR执行操作 IP IP 8位位移量段内直接近转移 JMPNEARPTROPR执行操作 IP IP 16位位移量 again deccx 标号again的指令 jmpagain 转移到again处继续执行 jmpoutput 转向output output movresult al 标号output的指令 8086 8088指令系统 2 段内间接近转移格式 JMPWORDPTROPR执行操作 IP EA 将一个16位寄存器或主存字单元内容送入IP寄存器 作为新的指令指针 但不修改CS寄存器的内容jmpax IP AX jmpwordptr 2000h IP 2000h 8086 8088指令系统 3 段间直接远转移格式 JMPFARPTROPR执行操作 IP OPR的段内偏移地址 CS OPR所在段的段地址将标号所在段的段地址作为新的CS值 标号在该段内的偏移地址作为新的IP值 这样 程序跳转到新的代码段执行jmpfarptrotherseg 远转移到代码段2的otherseg 8086 8088指令系统 4 段间间接远转移格式JMPDWORDPTROPR执行操作 IP EA CS EA 2 用一个双字存储单元表示要跳转的目标地址 这个目标地址存放在主存中连续的两个字单元中的 低位字送IP寄存器 高位字送CS寄存器movwordptr bx 0movwordptr bx 2 1500hJMPfarptr bx 转移到1500h 0 8086 8088指令系统 例 IP 2BC0H CS 0200H 位移量D 5119H BX 1200H DS 212AH 224A0 0600H 275B9 098AH试一下的转移指令找出转移的偏移地址 1 段内直接寻址偏移地址 IP D 5119 2BC0 7CD9 2 使用BX及寄存器间接寻址方式的段内间接寻址EA 16d DS BX 212A0 1200 224A0 0600H 3 使用BX及寄存器相对寻址方式的段内间接寻址EA 16d DS BX D 212A0 1200 5119 275B9 098AH 8086 8088指令系统 2 条件转移8086 8088提供了大量的条件转移指令 它们根据某标志位或某些标志位的逻辑运算来判别条件是否成立 如果条件成立 则转移 否则继续顺序执行 所有条件转移都只是段内转移 P87条件转移指令不影响标志位 条件转移指令是用得最多的转移指令 通常在条件转移指令前 总有用于条件判别的有关指令 8086 8088指令系统 1 根据单个条件标志的设置情况转移格式测试条件JZ JE OPRZF 1JNZ JNE OPRZF 0JSOPRSF 1JNSOPRSF 0JOOPROF 1JNOOPROF 0JPOPRPF 1JNPOPRPF 0JCOPRCF 1JNCOPRCF 0 8086 8088指令系统 例 测试AX的低四位是否全是0 如果是0 那么使CX 0 否则CX 1TESTAX 0FHJZZEROMOVCX 1ZERO MOVCX 1 TESTAX 0FHJNZNZEROMOVCX 1NZERO MOVCX 1 8086 8088指令系统 2 比较两个无符号数 并根据比较结果转移 格式测试条件 JB JNAE JC OPRCF 1 JNB JAE JNC OPRCF 0 JBE JNA OPRCF ZF 1 JNBE JA OPRCF ZF 0 适用于地址或双精度数低位字的比较 无符号数间的次序关系 高于 A 等于 E 低于 B 8086 8088指令系统 3 比较两个带符号数 并根据比较结果转移 格式测试条件 JL JNGE OPRSF OF 1 JNL JGE OPRSF OF 0 JLE JNG OPR SF OF ZF 1 JNLE JG OPR SF OF ZF 0 适用于带符号数的比较 4 测试CX的值为0则转移格式测试条件JCXZOPR CX 0 有符号数间的次序关系 大于 G 等于 E 小于 L 8086 8088指令系统 例 实现两个无符号数 设在AX和BX中 的比较 把较大的数存放到AX中 把较小的数存放在BX中CMPAX BXJAEOKXCHGAX BXOK 条件测试的标志完全不同 指令不同 两个有符号数比较 CMPAX BXJGEOKXCHGAX BXOK 8086 8088指令系统 无

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论