第3章数据处理3算数与逻辑运算指令优秀课件.ppt

上传人:石*** 文档编号:72351212 上传时间:2023-02-10 格式:PPT 页数:22 大小:1.16MB
返回 下载 相关 举报
第3章数据处理3算数与逻辑运算指令优秀课件.ppt_第1页
第1页 / 共22页
第3章数据处理3算数与逻辑运算指令优秀课件.ppt_第2页
第2页 / 共22页
点击查看更多>>
资源描述

《第3章数据处理3算数与逻辑运算指令优秀课件.ppt》由会员分享,可在线阅读,更多相关《第3章数据处理3算数与逻辑运算指令优秀课件.ppt(22页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第第3 3章数据处理章数据处理3 3算数算数与逻辑运算指令与逻辑运算指令第1页,本讲稿共22页3.5.1 3.5.1 加法指令加法指令加法指令加法指令 ADDADD带进位加法指令带进位加法指令 ADCADC增量指令增量指令 INCINC除除INCINC不影响进位标志不影响进位标志CFCF外外其他指令按定义影响全部状态标志位其他指令按定义影响全部状态标志位按照运算结果相应设置各个状态标志为按照运算结果相应设置各个状态标志为0 0或为或为1 1数据传送类指令数据传送类指令不影响(不改变)不影响(不改变)状态标志状态标志加法和减法指令加法和减法指令根据结果按定义改变根据结果按定义改变状态标志状态标志

2、第2页,本讲稿共22页1.1.加法指令加法指令ADDADD目的操作数加上源操作数,和送到目的操作数目的操作数加上源操作数,和送到目的操作数ADD dest,srcADD dest,src;加法:加法:destdestdestdestsrcsrc寄存器与立即数、寄存器、存储单元的加法寄存器与立即数、寄存器、存储单元的加法存储单元与立即数、寄存器的加法存储单元与立即数、寄存器的加法可以是字节加法、可以是字节加法、1616位加法、位加法、3232位加法。位加法。影响影响6 6个状态标志位个状态标志位第3页,本讲稿共22页例例mov eax,0aaff7348hmov eax,0aaff7348h;E

3、AX;EAXAAFF7348HAAFF7348Hadd al,27h add al,27h ;al=48h+27h=6Fh;al=48h+27h=6Fh;EAX;EAXAAFF736FHAAFF736FH,OFOF0 0,SFSF0 0,ZFZF0 0,PFPF1 1,CFCF0 0add ax,3fffh add ax,3fffh ;ax=736fh+3fffh=b36eh;ax=736fh+3fffh=b36eh;EAX;EAXAAFFB36EHAAFFB36EH,OFOF1 1,SFSF1 1,ZFZF0 0,PFPF0 0,CFCF0 0add eax,88000000h add ea

4、x,88000000h ;0aaffb36eh+88000000h;0aaffb36eh+88000000h;EAX;EAX32FFB36EH32FFB36EH,OFOF1 1,SFSF0 0,ZFZF0 0,PFPF0 0,CFCF1 1第4页,本讲稿共22页2.2.带进位加法指令带进位加法指令ADCADC两个操作数相加,再加两个操作数相加,再加CFCF,结果送目的操作数,结果送目的操作数按照定义影响按照定义影响6 6个状态标志位个状态标志位ADC dest,srcADC dest,src;destdest;destdestsrcsrcCFCF用于与用于与ADDADD指令相结合实现多精度数的

5、加法指令相结合实现多精度数的加法先将两个操作数的低先将两个操作数的低3232位相加(用位相加(用ADDADD指令)指令)再加高位部分、并将进位加到高位(用再加高位部分、并将进位加到高位(用ADCADC指令)指令)例例6464位数据相加程序位数据相加程序mov eax,dword ptr qvar1mov eax,dword ptr qvar1;取低取低3232位位addadd eax,dword ptr qvar2 eax,dword ptr qvar2;加低加低3232位,设置位,设置CFCFmov edx,dword ptr qvar1+4mov edx,dword ptr qvar1+4

6、;取高取高3232位位adcadc edx,dword ptr qvar2+4 edx,dword ptr qvar2+4;加高加高3232位,同时加位,同时加CFCF第5页,本讲稿共22页3.3.增量指令增量指令INCINC只有一个操作数:寄存器或存储单元只有一个操作数:寄存器或存储单元对操作数加对操作数加1 1(增量)再将结果返回原处(增量)再将结果返回原处INC reg/memINC reg/mem;加加1 1:reg/memreg/memreg/memreg/mem1 1用于计数器和地址指针的调整用于计数器和地址指针的调整不影响进位不影响进位CFCF标志,影响其他状态标志位标志,影响其

7、他状态标志位例如例如inc ecxinc ecxinc esiinc esiinc wvarinc wvarinc dvarebx+ediinc dvarebx+edi第6页,本讲稿共22页3.5.2 3.5.2 减法指令减法指令减法指令减法指令 SUBSUB带借位减法指令带借位减法指令 SBBSBB减量指令减量指令 DECDEC求补指令求补指令 NEGNEG比较指令比较指令 CMPCMP除除DECDEC不影响不影响CFCF标志外标志外其他按定义影响全部状态标志位其他按定义影响全部状态标志位 数据传送类指令数据传送类指令不影响(不改变)不影响(不改变)状态标志状态标志加法和减法指令加法和减法指

8、令根据结果按定义改变根据结果按定义改变状态标志状态标志第7页,本讲稿共22页1.1.减法指令减法指令SUBSUB目的操作数减去源操作数,差送到目的操作数目的操作数减去源操作数,差送到目的操作数SUB dest,srcSUB dest,src;减法:减法:destdestdestdestsrcsrc寄存器与立即数、寄存器、存储单元的减法寄存器与立即数、寄存器、存储单元的减法存储单元与立即数、寄存器的减法存储单元与立即数、寄存器的减法可以是字节、可以是字节、1616位、位、3232位减法。位减法。按照定义影响按照定义影响6 6个状态标志位个状态标志位 第8页,本讲稿共22页例例mov eax,0a

9、aff7348hmov eax,0aaff7348h ;EAX;EAXAAFF7348HAAFF7348Hsub al,27hsub al,27h;EAX;EAXAAFF7321HAAFF7321H,OFOF0 0,SFSF0 0,ZFZF0 0,PFPF1 1,CFCF0 0sub ax,3fffhsub ax,3fffh;EAX;EAXAAFF3322HAAFF3322H,OFOF0 0,SFSF0 0,ZFZF0 0,PFPF1 1,CFCF0 0sub eax,0bb000000hsub eax,0bb000000h;EAX;EAXEFFF3322HEFFF3322H,OFOF0 0,

10、SFSF1 1,ZFZF0 0,PFPF1 1,CFCF1 1第9页,本讲稿共22页2.2.带借位减法指令带借位减法指令SBBSBB目的操作数减去源操作数,再减目的操作数减去源操作数,再减CFCF,结果送目的操作,结果送目的操作数数按照定义影响按照定义影响6 6个状态标志位个状态标志位SBB dest,srcSBB dest,src;destdest;destdestsrcsrcCFCF用于与用于与SUBSUB指令相结合实现多精度数的减法指令相结合实现多精度数的减法先将两个操作数的低先将两个操作数的低3232位相减(用位相减(用SUBSUB指令)指令)然后减高位部分、并减去借位(用然后减高位部

11、分、并减去借位(用SBBSBB指令)指令)第10页,本讲稿共22页3.3.减量指令减量指令DECDEC对操作数减对操作数减1 1(减量)再将结果返回原处(减量)再将结果返回原处DEC reg/memDEC reg/mem;减减1 1:reg/memreg/memreg/memreg/mem1 1用于计数器和地址指针的调整用于计数器和地址指针的调整不影响进位不影响进位CFCF标志标志,影响其他状态标志位,影响其他状态标志位例如例如dec ecxdec ecxdec esidec esidec wvardec wvardec dvarebx+edidec dvarebx+edi第11页,本讲稿共2

12、2页例例大小写字母转换程序大小写字母转换程序;数据段数据段msgmsgbyte welcome,0byte welcome,0;代码段代码段mov ecx,(lengthof msg)-1mov ecx,(lengthof msg)-1;ECX;ECX等于字符串长度等于字符串长度mov ebx,0mov ebx,0;EBX;EBX0 0指向头一个字母指向头一个字母again:again:sub msgebx,a-Asub msgebx,a-A;小写字母减小写字母减20H20H转换为大写转换为大写inc ebxinc ebx;指向下一个字母指向下一个字母loop againloop again;

13、循环循环mov eax,offset msgmov eax,offset msgcall dispmsgcall dispmsg;显示显示大写小写大写小写20H小写大写小写大写20H第12页,本讲稿共22页4.4.求补指令求补指令NEGNEG对操作数执行求补运算,即用零减去操作数对操作数执行求补运算,即用零减去操作数NEG reg/memNEG reg/mem;reg/mem0;reg/mem0reg/memreg/mem对标志的影响与用零作减法的对标志的影响与用零作减法的SUBSUB指令一样指令一样可用于求补码或由补码求其绝对值可用于求补码或由补码求其绝对值mov ax,0ff64hmov

14、ax,0ff64hneg alneg al;AX=FF9CH;AX=FF9CH,OF=0OF=0,SF=1SF=1,ZF=0ZF=0,PF=1PF=1,CF=1CF=1sub al,9dhsub al,9dh;AX=FFFFH;AX=FFFFH,OF=0OF=0,SF=1SF=1,ZF=0ZF=0,PF=1PF=1,CF=1CF=1neg axneg ax;AX=0001H;AX=0001H,OF=0OF=0,SF=0SF=0,ZF=0ZF=0,PF=0PF=0,CF=1CF=1dec aldec al;AX=0000H;AX=0000H,OF=0OF=0,SF=0SF=0,ZF=1ZF=1,

15、PF=1PF=1,CF=1CF=1neg axneg ax;AX=0000H;AX=0000H,OF=0OF=0,SF=0SF=0,ZF=1ZF=1,PF=1PF=1,CF=0CF=0第13页,本讲稿共22页5.5.比较指令比较指令CMPCMP将目的操作数减去源操作数将目的操作数减去源操作数差值不回送目的操作数差值不回送目的操作数按照减法结果影响状态标志按照减法结果影响状态标志CMP dest,srcCMP dest,src;做减法运算:做减法运算:destdestsrcsrc根据标志状态获知两个操作数的大小关系根据标志状态获知两个操作数的大小关系给条件转移等指令使用其形成的状态标志给条件转移

16、等指令使用其形成的状态标志SUB与与CMP?ADD与与ADC?INC与与DEC?SUB与与SBB?ADD与与SUB?ADC与与SBB?DEC与与NEG?第14页,本讲稿共22页3.5.3 3.5.3 乘法除法等指令乘法除法等指令算术运算类指令还有算术运算类指令还有乘法除法指令乘法除法指令零位扩展和符号扩展指令零位扩展和符号扩展指令十进制调整指令十进制调整指令 MUL IMUL DIV IDIVMUL IMUL DIV IDIVMOVZX MOVSX CBW CWD CWDE CDQMOVZX MOVSX CBW CWD CWDE CDQDAA DAS AAA AAS AAM AADDAA DA

17、S AAA AAS AAM AAD第15页,本讲稿共22页1.1.乘法指令乘法指令无符号数乘法指令无符号数乘法指令 MULMUL有符号数乘法指令有符号数乘法指令 IMULIMUL计算二进制数乘法:计算二进制数乘法:A5H64HA5H64H用用MULMUL指令作无符号数乘法:指令作无符号数乘法:4074H4074H(1650016500)A5HA5H(165165)64H64H(100100)用用IMULIMUL指令作无符号数乘法:指令作无符号数乘法:DC74HDC74H(-9100-9100)A5HA5H(-91-91)64H64H(100100)加减指令只进行无符号数运算加减指令只进行无符号

18、数运算利用利用CF和和OF区别无符号数和有符号数区别无符号数和有符号数第16页,本讲稿共22页乘法指令乘法指令指令指令类类型型操作数操作数组组合及功能合及功能举举例例无符号数乘法无符号数乘法MUL srcAXALr8/m8DX.AXAXr16/m16EDX.EAXEAXr32/m32mul blimul bxmul dvar有符号数乘法有符号数乘法IMUL src双操作数乘法双操作数乘法IMUL dest,srcr16r16r16/m16/i8/i16r32r32r32/m32/i8/i32imul eax,10imul ebx,ecx三操作数乘法三操作数乘法IMUL dest,src,imm

19、r16r16/m16i8/i16r32r32/m32i8/i32imul ax,bx,-2imul eax,dword ptr esi+8,5第17页,本讲稿共22页2.2.除法指令除法指令无符号除法指令无符号除法指令DIVDIV和有符号除法指令和有符号除法指令IDIVIDIV除法指令可能产生除法溢出除法指令可能产生除法溢出对对DIVDIV指指令令,除除数数为为0 0,或或者者在在字字节节除除时时商商超超过过8 8位位,在在字字除除时时商商超超过过1616位位,或或者者双双字字除除时时超超过过3232位位,则发生除法溢出则发生除法溢出对对IDIVIDIV指指令令,除除数数为为0 0,或或者者在

20、在字字节节除除时时商商不不在在128128127127范范围围内内,在在字字除除时时商商不不在在32768327683276732767范范围围内内,或或者者在在双双字字除除时时商商不不在在2 231312 231311 1范围内,则发生除法溢出范围内,则发生除法溢出除法错溢出,将产生编号为除法错溢出,将产生编号为0 0的内部中断的内部中断第18页,本讲稿共22页除法指令除法指令指令指令操作数组合及功能操作数组合及功能举例举例无符号除法:无符号除法:DIV srcDIV srcALAXALAXr8/m8r8/m8的商的商AHAXAHAXr8/m8r8/m8的余数的余数AXDX.AXAXDX.A

21、Xr16/m16r16/m16的商的商DXDX.AXDXDX.AXr16/m16r16/m16的余数的余数EAXEDX.EAXEAXEDX.EAXr32/m32r32/m32的商的商EDXEDX.EAXEDXEDX.EAXr32/m32r32/m32的余数的余数div bldiv blidiv bxidiv bxdiv ebxdiv ebx有符号除法:有符号除法:IDIV srcIDIV src第19页,本讲稿共22页3.3.零位扩展和符号扩展指令零位扩展和符号扩展指令零位扩展对应无符号数:零位扩展对应无符号数:MOVZXMOVZX指令指令前面加前面加0 0实现位数扩展实现位数扩展80H80H

22、:8 8位无符号数,零位扩展为位无符号数,零位扩展为1616位:位:0080H0080H符号扩展对应有符号数:符号扩展对应有符号数:MOVSXMOVSX指令指令前面加符号位(最高位)实现位数扩展前面加符号位(最高位)实现位数扩展64H64H:8 8位有符号数,符号扩展成位有符号数,符号扩展成1616位:位:0064H0064HFF00HFF00H:1616位位有有符符号号数数据据,符符号号扩扩展展成成3232位位:FFFFFF00HFFFFFF00H,都表达真值:,都表达真值:-256-256真真值值-1-1,字字节节量量补补码码:FFHFFH,字字量量补补码码:FFFFHFFFFH,双字量补

23、码:双字量补码:FFFFFFFFHFFFFFFFFH 位数加长,大小没变位数加长,大小没变第20页,本讲稿共22页零位扩展和符号扩展指令零位扩展和符号扩展指令指令类型指令类型指令指令举例举例零位扩展零位扩展MOVZX r16,r8/m8MOVZX r16,r8/m8movzx di,bvarmovzx di,bvarmovzx eax,axmovzx eax,axMOVZX r32,r8/m8/r16/m16MOVZX r32,r8/m8/r16/m16符号扩展符号扩展MOVSX r16,r8/m8MOVSX r16,r8/m8movsx ax,almovsx ax,almovsx edx,b

24、xmovsx edx,bxMOVSX r32,r8/m8/r16/m16MOVSX r32,r8/m8/r16/m16第21页,本讲稿共22页4.4.十进制调整指令十进制调整指令算术运算指令实现二进制数的加减乘除算术运算指令实现二进制数的加减乘除十进制十进制BCDBCD码运算:对二进制运算结果调整码运算:对二进制运算结果调整压缩压缩BCDBCD码:码:4 4个二进制位表示一个十进制位个二进制位表示一个十进制位一个字节表示两个十进制位:一个字节表示两个十进制位:00009999压缩压缩BCDBCD码调整指令:加法码调整指令:加法DAADAA和减法和减法DASDAS非压缩非压缩BCDBCD码:码:8 8个二进制位表示一个十进制位个二进制位表示一个十进制位一个字节表示一个十进制位一个字节表示一个十进制位0 09 9ASCIIASCII码可以认为是非压缩码可以认为是非压缩BCDBCD码码非压缩非压缩BCDBCD码调整指令:码调整指令:加法加法AAAAAA、减法、减法AASAAS、乘法、乘法AAMAAM和除法和除法AADAAD第22页,本讲稿共22页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 资格考试

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁