数据处理算数与逻辑运算指令.ppt_第1页
数据处理算数与逻辑运算指令.ppt_第2页
数据处理算数与逻辑运算指令.ppt_第3页
数据处理算数与逻辑运算指令.ppt_第4页
数据处理算数与逻辑运算指令.ppt_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

3 5算术运算类指令 算术运算对数据进行加减乘除基本的数据处理方法加减运算有 和 或 差 的结果外 还有进借位 溢出等状态标志 也是结果的一部分注意算术运算类指令对标志的影响掌握 加法和减法指令熟悉 乘法和除法指令理解 零位扩展和符号扩展 3 5 1加法指令 加法指令ADD带进位加法指令ADC增量指令INC除INC不影响进位标志CF外其他指令按定义影响全部状态标志位按照运算结果相应设置各个状态标志为0或为1 数据传送类指令不影响 不改变 状态标志加法和减法指令根据结果按定义改变状态标志 1 加法指令ADD 目的操作数加上源操作数 和送到目的操作数ADDdest src 加法 dest dest src寄存器与立即数 寄存器 存储单元的加法存储单元与立即数 寄存器的加法可以是字节加法 16位加法 32位加法 影响6个状态标志位 例 moveax 0aaff7348h EAX AAFF7348Haddal 27h al 48h 27h 6Fh EAX AAFF736FH OF 0 SF 0 ZF 0 PF 1 CF 0addax 3fffh ax 736fh 3fffh b36eh EAX AAFFB36EH OF 1 SF 1 ZF 0 PF 0 CF 0addeax 88000000h 0aaffb36eh 88000000h EAX 32FFB36EH OF 1 SF 0 ZF 0 PF 0 CF 1 2 带进位加法指令ADC 两个操作数相加 再加CF 结果送目的操作数按照定义影响6个状态标志位ADCdest src dest dest src CF用于与ADD指令相结合实现多精度数的加法先将两个操作数的低32位相加 用ADD指令 再加高位部分 并将进位加到高位 用ADC指令 例 64位数据相加程序moveax dwordptrqvar1 取低32位addeax dwordptrqvar2 加低32位 设置CFmovedx dwordptrqvar1 4 取高32位adcedx dwordptrqvar2 4 加高32位 同时加CF 3 增量指令INC 只有一个操作数 寄存器或存储单元对操作数加1 增量 再将结果返回原处INCreg mem 加1 reg mem reg mem 1用于计数器和地址指针的调整不影响进位CF标志 影响其他状态标志位例如incecxincesiincwvarincdvar ebx edi 3 5 2减法指令 减法指令SUB带借位减法指令SBB减量指令DEC求补指令NEG比较指令CMP除DEC不影响CF标志外其他按定义影响全部状态标志位 数据传送类指令不影响 不改变 状态标志加法和减法指令根据结果按定义改变状态标志 1 减法指令SUB 目的操作数减去源操作数 差送到目的操作数SUBdest src 减法 dest dest src寄存器与立即数 寄存器 存储单元的减法存储单元与立即数 寄存器的减法可以是字节 16位 32位减法 按照定义影响6个状态标志位 例 moveax 0aaff7348h EAX AAFF7348Hsubal 27h EAX AAFF7321H OF 0 SF 0 ZF 0 PF 1 CF 0subax 3fffh EAX AAFF3322H OF 0 SF 0 ZF 0 PF 1 CF 0subeax 0bb000000h EAX EFFF3322H OF 0 SF 1 ZF 0 PF 1 CF 1 2 带借位减法指令SBB 目的操作数减去源操作数 再减CF 结果送目的操作数按照定义影响6个状态标志位SBBdest src dest dest src CF用于与SUB指令相结合实现多精度数的减法先将两个操作数的低32位相减 用SUB指令 然后减高位部分 并减去借位 用SBB指令 3 减量指令DEC 对操作数减1 减量 再将结果返回原处DECreg mem 减1 reg mem reg mem 1用于计数器和地址指针的调整不影响进位CF标志 影响其他状态标志位例如dececxdecesidecwvardecdvar ebx edi 例 大小写字母转换程序 数据段msgbyte welcome 0 代码段movecx lengthofmsg 1 ECX等于字符串长度movebx 0 EBX 0指向头一个字母again submsg ebx a A 小写字母减20H转换为大写incebx 指向下一个字母loopagain 循环moveax offsetmsgcalldispmsg 显示 大写 小写 20H小写 大写 20H 4 求补指令NEG 对操作数执行求补运算 即用零减去操作数NEGreg mem reg mem 0 reg mem对标志的影响与用零作减法的SUB指令一样可用于求补码或由补码求其绝对值movax 0ff64hnegal AX FF9CH OF 0 SF 1 ZF 0 PF 1 CF 1subal 9dh AX FFFFH OF 0 SF 1 ZF 0 PF 1 CF 1negax AX 0001H OF 0 SF 0 ZF 0 PF 0 CF 1decal AX 0000H OF 0 SF 0 ZF 1 PF 1 CF 1negax AX 0000H OF 0 SF 0 ZF 1 PF 1 CF 0 5 比较指令CMP 将目的操作数减去源操作数差值不回送目的操作数按照减法结果影响状态标志CMPdest src 做减法运算 dest src根据标志状态获知两个操作数的大小关系给条件转移等指令使用其形成的状态标志 SUB与CMP 3 5 3乘法除法等指令 算术运算类指令还有乘法除法指令零位扩展和符号扩展指令十进制调整指令 MULIMULDIVIDIVMOVZXMOVSXCBWCWDCWDECDQDAADASAAAAASAAMAAD 1 乘法指令 无符号数乘法指令MUL有符号数乘法指令IMUL计算二进制数乘法 A5H 64H用MUL指令作无符号数乘法 4074H 16500 A5H 165 64H 100 用IMUL指令作无符号数乘法 DC74H 9100 A5H 91 64H 100 加减指令只进行无符号数运算利用CF和OF区别无符号数和有符号数 乘法指令 2 除法指令 无符号除法指令DIV和有符号除法指令IDIV除法指令可能产生除法溢出对DIV指令 除数为0 或者在字节除时商超过8位 在字除时商超过16位 或者双字除时超过32位 则发生除法溢出对IDIV指令 除数为0 或者在字节除时商不在 128 127范围内 在字除时商不在 32768 32767范围内 或者在双字除时商不在 231 231 1范围内 则发生除法溢出除法错溢出 将产生编号为0的内部中断 除法指令 3 零位扩展和符号扩展指令 零位扩展对应无符号数 MOVZX指令前面加0实现位数扩展80H 8位无符号数 零位扩展为16位 0080H符号扩展对应有符号数 MOVSX指令前面加符号位 最高位 实现位数扩展64H 8位有符号数 符号扩展成16位 0064HFF00H 16位有符号数据 符号扩展成32位 FFFFFF00H 都表达真值 256真值 1 字节量补码 FFH 字量补码 FFFFH 双字量补码 FFFFFFFFH 位数加长 大小没变 零位扩展和符号扩展指令 4 十进制调整指令 算术运算指令实现二进制数的加减乘除十进制BCD码运算

温馨提示

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

最新文档

评论

0/150

提交评论