数据处理位操作和字符串操作指令.ppt

上传人:tian****1990 文档编号:13270662 上传时间:2020-06-11 格式:PPT 页数:30 大小:169.50KB
返回 下载 相关 举报
数据处理位操作和字符串操作指令.ppt_第1页
第1页 / 共30页
数据处理位操作和字符串操作指令.ppt_第2页
第2页 / 共30页
数据处理位操作和字符串操作指令.ppt_第3页
第3页 / 共30页
点击查看更多>>
资源描述
1,3.6位操作类指令,计算机中最基本的数据单位是二进制位针对二进制位进行操作、实现位控制的指令逻辑运算指令移位指令进行一位或若干位处理,采用位操作类指令,2,3.6.1逻辑运算指令,逻辑与指令AND逻辑或指令OR逻辑非指令NOT逻辑异或指令XOR测试指令TEST除NOT指令不影响标志外其他逻辑指令使OFCF0根据结果按定义影响ZF、SF和PF,3,1.逻辑与指令AND,逻辑与(逻辑乘)运算规则:两位都是逻辑1,则结果是1;否则,结果是0逻辑与指令AND:按位进行逻辑与,结果返回目的操作数ANDdest,src;逻辑与:destdestsrc设置CFOF0影响SF,ZF和PF,T,B,A,4,2.逻辑或指令OR,逻辑或(逻辑加)运算规则:两位都是逻辑0,则结果是0;否则,结果是1逻辑或指令OR:按位进行逻辑或,结果返回目的操作数ORdest,src;逻辑或:destdestsrc设置CFOF0影响SF,ZF和PF,T,B,A,5,3.逻辑非指令NOT,逻辑非(逻辑反)运算规则:原来为0的位变成1,原来为1的位变成0逻辑非指令NOT:按位进行逻辑非,结果返回操作数NOTreg/mem;逻辑非:reg/memreg/mem不影响状态标志位,6,4.逻辑异或指令XOR,逻辑异或(逻辑半加)运算规则:两位不同(相异),则结果是1;否则,结果是0逻辑异或指令XOR:按位进行逻辑异或,结果返回目的操作数XORdest,src;逻辑或:destdestsrc设置CFOF0影响SF,ZF和PF,7,例逻辑运算程序1,;定义数据段:varAdword11001010000111100101010101001101BvarBdword00110111010110100011010111100001BvarT1dword?varT2dword?moveax,varA;EAX11001010000111100101010101001101Bnoteax;EAX00110101111000011010101010110010Bandeax,varB;EAX00110101010000000010000010100000B,8,movebx,varB;EBX00110111010110100011010111100001Bnotebx;EBX11001000101001011100101000011110Bandebx,varA;EBX11001000000001000100000000001100Boreax,ebx;EAX11111101010001000110000010101100BmovvarT1,eax,9,例逻辑运算程序2,moveax,varAxoreax,varB;EAX11111101010001000110000010101100BmovvarT2,eax;moveax,varT1;二进制形式显示VART1calldispbdcalldispcrlf;换行显示moveax,varT2;二进制形式显示VART2calldispbd,运行结果,10,1111110101000100011000001010110011111101010001000110000010101100,11,逻辑运算的屏蔽作用,AND指令复位某些位(同0与),不影响其他(同1与)OR指令置位某些位(同1或),不影响其他(同0或)XOR求反某些位(同1异或),不影响其他(同0异或)andbl,11110110b;BL中D0和D3清0,其余位不变orbl,00001001b;BL中D0和D3置1,其余位不变xorbl,00001001b;BL中D0和D3求反,其余位不变,复位Reset:清0,清除Clear,置位Set:置1,大写小写ANDDFH小写大写OR20H,xoreax,eaxsubeax,eaxmoveax,0,12,5.测试指令TEST,按位进行逻辑与运算,不返回逻辑与结果TESTdest,src;作逻辑与运算:destsrcTEST指令像AND指令一样来设置状态标志TEST指令常用于检测一些条件是否满足,一般后跟条件转移指令,目的是利用测试条件转向不同的分支,13,3.6.2移位指令,逻辑左移指令SHL逻辑右移指令SHR算术左移指令SAL算术左移指令SAR,S:ShiftR:RotateL:LeftR:RightA:ArithmeticC:Carryflag,不带进位循环左移指令ROL不带进位循环右移指令ROR带进位循环左移指令RCL带进位循环右移指令RCR,14,1.移位指令,分逻辑(Logical)和算术(Arithmetic)移位具有左移(Left)或右移(Right)操作SHLreg/mem,i8/CL;逻辑左移:最低位补0,最高位进入CFSHRreg/mem,i8/CL;逻辑右移:最高位补0,最低位进入CFSALreg/mem,i8/CL;算术左移,与SHL是同一条指令SARreg/mem,i8/CL;算术右移:最高位不变,最低位进入CF目的操作数:寄存器或存储单元reg/mem后一个操作数:移位位数i8/CL,移位指令的功能和示例,返回,16,例移位指令实现乘法程序,xoreax,eax;EAX0movax,wvar;AX要乘以10的无符号数shleax,1;左移一位等于乘2movebx,eax;EBXEAX2shleax,2;再左移2位,EAXEAX8addeax,ebx;EAXEAX10calldispuid;显示乘积calldispcrlf;换行imuleax,10;EAXEAX10calldispuid;显示乘积,SHL逻辑左移一位相当于无符号数乘以2SHR逻辑右移一位相当于无符号数除以2,17,2.循环移位指令,循环(Rotate)移位指令要将从一端移出的位返回到另一端形成循环分成不带进位循环移位和带进位循环移位分别具有左移或右移操作ROLreg/mem,i8/CL;不带进位循环左移指令RORreg/mem,i8/CL;不带进位循环右移指令RCLreg/mem,i8/CL;带进位循环左移指令RCRreg/mem,i8/CL;带进位循环右移指令,RCL/RCR示意图,ROL/ROR示意图,18,不带进位的循环移位指令,19,带进位的循环移位指令,20,例循环移位程序1,;数据段qvarqword1234567887654321h;代码段movecx,4again:shrdwordptrqvar+4,1rcrdwordptrqvar,1loopagain,21,例循环移位程序2,;数据段asciibyte38bcdbyte?;代码段moval,asciiandal,0fhmovah,ascii+1shlah,4oral,ahmovbcd,al,BCD83H,22,3.7串操作类指令,数据串(数组):以字节、字和双字为单位的多个数据存放在连续的主存区域中源操作数:允许段超越:DS:ESI目的操作数:不允许段超越:ES:EDI每执行一次串操作:ESI和EDI自动1/2/4以字节为单位(用B结尾)操作:地址指针1以字为单位(用W结尾)操作:地址指针2以双字为单位(用D结尾)操作:地址指针4DF0(执行CLD指令):地址指针增加()DF1(执行STD指令):地址指针减小(),23,3.7.1串传送指令,MOVSB|MOVSW|MOVSD;串传送:ES:EDIDS:ESI;然后:ESIESI1/2/4,EDIEDI1/2/4STOSB|STOSW|STOSD;串存储:ES:EDIAL/AX/EAX;然后:EDIEDI1/2/4LODSB|LODSW|LODSD;串读取:AL/AX/EAXDS:ESI;然后:ESIESI1/2/4REP;执行一次串指令,ECX减1;直到ECX0,24,例字符串复制程序1,;数据段srcmsgbyteInamajormatter,nodetailsaresmall.,0destmsgbyte(lengthofsrcmsg)dup(0);代码段movesi,offsetsrcmsg;ESI源字符串地址movedi,offsetdestmsg;ESI源字符串地址movecx,lengthofsrcmsg;ECX字符串长度cld;地址增量传送repmovsb;重复字符串传送moveax,offsetdestmsgcalldispmsg,25,例字符串复制程序2,;数据段srcmsgbyteInamajormatter,nodetailsaresmall.,0destmsgbyte(lengthofsrcmsg)dup(0);代码段xorebx,ebx;EBX0movecx,lengthofsrcmsg;ECX字符串长度again:moval,srcmsgebx;源字符串取一个字符movdestmsgebx,al;传送到目的字符串incebx;指向下一个字符loopagain;重复进行字符串传送,26,3.7.2串检测指令,CMPSB|CMPSW|CMPSD;串比较:DS:ESIES:EDI;然后:ESIESI1/2/4,EDIEDI1/2/4SCASB|SCASW|SCASD;串扫描:AL/AX/EAXES:EDI;然后:EDIEDI1/2/4REPE|REPZ;执行一次串指令,ECX减1;直到ECX0或ZF0REPNE|REPNZ;执行一次串指令,ECX减1;直到ECX0或ZF1,27,例3-17等长字符串比较程序,;代码段movecx,countmovesi,offsetstring1movedi,offsetstring2cldrepzcmpsb;重复比较,不同或比较完jnefound;发现不同字符,转移moval,Y;字符串相同,显示Yjmpdonefound:moval,N;字符串不同,显示Ndone:calldispc,28,3.8IA-32指令系统,指令系统(指令集):处理器支持的所有指令的集合通用指令属于处理器的基本指令,29,Intel80 x86指令系统的发展,8086(80186)建立16位基本指令80286增加保护方式指令80386扩展为32位指令系统,新增许多位操作指令80486新增6条指令,开始直接支持浮点处理指令Pentium新增6条指令,如处理器识别指令CPUIDPentiumPro增加3条指令,如条件传送指令CMOVPemtiumII/III/4逐渐增加多媒体指令:MMX、SSE/SSE2/SSE3/SSSE3指令Intel64处理器提供64位指令,具有虚拟机管理指令,掌握二进制、十六进制及其与十进制相互转换理解定点整数及有符号数表达,掌握求补运算熟悉BCD、ASCII码及其编码规律掌握常量表达方法掌握变量定义、变量属性及其应用掌握基本指令的功能及其应用MOV,XCHG,PUSH,POP加法指令,减法指令,逻辑指令,移位指令熟悉常见指令的功能XLAT,LEA,MUL,IMUL,DIV,IDIVMOVZX,MOVSX,CLC,STC;MOVS,STOS,REP理解常见语法错误、符号扩展、十进制调整等问题,第3章的基本要求,
展开阅读全文
相关资源
相关搜索

最新文档


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


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

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


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