数据处理算数与逻辑运算指令.ppt

上传人:tian****1990 文档编号:13270657 上传时间:2020-06-11 格式:PPT 页数:22 大小:180.50KB
返回 下载 相关 举报
数据处理算数与逻辑运算指令.ppt_第1页
第1页 / 共22页
数据处理算数与逻辑运算指令.ppt_第2页
第2页 / 共22页
数据处理算数与逻辑运算指令.ppt_第3页
第3页 / 共22页
点击查看更多>>
资源描述
3.5算术运算类指令,算术运算对数据进行加减乘除基本的数据处理方法加减运算有“和”或“差”的结果外,还有进借位、溢出等状态标志,也是结果的一部分注意算术运算类指令对标志的影响掌握:加法和减法指令熟悉:乘法和除法指令理解:零位扩展和符号扩展,*/,3.5.1加法指令,加法指令ADD带进位加法指令ADC增量指令INC除INC不影响进位标志CF外其他指令按定义影响全部状态标志位按照运算结果相应设置各个状态标志为0或为1,数据传送类指令不影响(不改变)状态标志加法和减法指令根据结果按定义改变状态标志,1.加法指令ADD,目的操作数加上源操作数,和送到目的操作数ADDdest,src;加法:destdestsrc寄存器与立即数、寄存器、存储单元的加法存储单元与立即数、寄存器的加法可以是字节加法、16位加法、32位加法。影响6个状态标志位,例,moveax,0aaff7348h;EAXAAFF7348Haddal,27h;al=48h+27h=6Fh;EAXAAFF736FH,OF0,SF0,ZF0,PF1,CF0addax,3fffh;ax=736fh+3fffh=b36eh;EAXAAFFB36EH,OF1,SF1,ZF0,PF0,CF0addeax,88000000h;0aaffb36eh+88000000h;EAX32FFB36EH,OF1,SF0,ZF0,PF0,CF1,2.带进位加法指令ADC,两个操作数相加,再加CF,结果送目的操作数按照定义影响6个状态标志位ADCdest,src;destdestsrcCF用于与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/memreg/mem1用于计数器和地址指针的调整不影响进位CF标志,影响其他状态标志位例如incecxincesiincwvarincdvarebx+edi,3.5.2减法指令,减法指令SUB带借位减法指令SBB减量指令DEC求补指令NEG比较指令CMP除DEC不影响CF标志外其他按定义影响全部状态标志位,数据传送类指令不影响(不改变)状态标志加法和减法指令根据结果按定义改变状态标志,1.减法指令SUB,目的操作数减去源操作数,差送到目的操作数SUBdest,src;减法:destdestsrc寄存器与立即数、寄存器、存储单元的减法存储单元与立即数、寄存器的减法可以是字节、16位、32位减法。按照定义影响6个状态标志位,例,moveax,0aaff7348h;EAXAAFF7348Hsubal,27h;EAXAAFF7321H,OF0,SF0,ZF0,PF1,CF0subax,3fffh;EAXAAFF3322H,OF0,SF0,ZF0,PF1,CF0subeax,0bb000000h;EAXEFFF3322H,OF0,SF1,ZF0,PF1,CF1,2.带借位减法指令SBB,目的操作数减去源操作数,再减CF,结果送目的操作数按照定义影响6个状态标志位SBBdest,src;destdestsrcCF用于与SUB指令相结合实现多精度数的减法先将两个操作数的低32位相减(用SUB指令)然后减高位部分、并减去借位(用SBB指令),3.减量指令DEC,对操作数减1(减量)再将结果返回原处DECreg/mem;减1:reg/memreg/mem1用于计数器和地址指针的调整不影响进位CF标志,影响其他状态标志位例如dececxdecesidecwvardecdvarebx+edi,例大小写字母转换程序,;数据段msgbytewelcome,0;代码段movecx,(lengthofmsg)-1;ECX等于字符串长度movebx,0;EBX0指向头一个字母again:submsgebx,a-A;小写字母减20H转换为大写incebx;指向下一个字母loopagain;循环moveax,offsetmsgcalldispmsg;显示,大写小写20H小写大写20H,4.求补指令NEG,对操作数执行求补运算,即用零减去操作数NEGreg/mem;reg/mem0reg/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;做减法运算:destsrc根据标志状态获知两个操作数的大小关系给条件转移等指令使用其形成的状态标志,SUB与CMP?,3.5.3乘法除法等指令,算术运算类指令还有乘法除法指令零位扩展和符号扩展指令十进制调整指令,MULIMULDIVIDIVMOVZXMOVSXCBWCWDCWDECDQDAADASAAAAASAAMAAD,1.乘法指令,无符号数乘法指令MUL有符号数乘法指令IMUL计算二进制数乘法:A5H64H用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,或者在字节除时商不在128127范围内,在字除时商不在3276832767范围内,或者在双字除时商不在2312311范围内,则发生除法溢出除法错溢出,将产生编号为0的内部中断,除法指令,3.零位扩展和符号扩展指令,零位扩展对应无符号数:MOVZX指令前面加0实现位数扩展80H:8位无符号数,零位扩展为16位:0080H符号扩展对应有符号数:MOVSX指令前面加符号位(最高位)实现位数扩展64H:8位有符号数,符号扩展成16位:0064HFF00H:16位有符号数据,符号扩展成32位:FFFFFF00H,都表达真值:-256真值-1,字节量补码:FFH,字量补码:FFFFH,双字量补码:FFFFFFFFH,位数加长,大小没变,零位扩展和符号扩展指令,4.十进制调整指令,算术运算指令实现二进制数的加减乘除十进制BCD码运算:对二进制运算结果调整压缩BCD码:4个二进制位表示一个十进制位一个字节表示两个十进制位:0099压缩BCD码调整指令:加法DAA和减法DAS非压缩BCD码:8个二进制位表示一个十进制位一个字节表示一个十进制位09ASCII码可以认为是非压缩BCD码非压缩BCD码调整指令:加法AAA、减法AAS、乘法AAM和除法AAD,
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!