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

上传人:牧羊曲112 文档编号:5985420 上传时间:2023-09-11 格式:PPT 页数:30 大小:224.13KB
返回 下载 相关 举报
数据处理位操作和字符串操作指令.ppt_第1页
第1页 / 共30页
数据处理位操作和字符串操作指令.ppt_第2页
第2页 / 共30页
数据处理位操作和字符串操作指令.ppt_第3页
第3页 / 共30页
数据处理位操作和字符串操作指令.ppt_第4页
第4页 / 共30页
数据处理位操作和字符串操作指令.ppt_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《数据处理位操作和字符串操作指令.ppt》由会员分享,可在线阅读,更多相关《数据处理位操作和字符串操作指令.ppt(30页珍藏版)》请在三一办公上搜索。

1、1,3.6 位操作类指令,计算机中最基本的数据单位是二进制位针对二进制位进行操作、实现位控制的指令逻辑运算指令移位指令进行一位或若干位处理,采用位操作类指令,2,3.6.1 逻辑运算指令,逻辑与指令 AND逻辑或指令 OR逻辑非指令 NOT逻辑异或指令 XOR测试指令 TEST除NOT指令不影响标志外其他逻辑指令使OFCF0根据结果按定义影响ZF、SF和PF,3,1.逻辑与指令AND,逻辑与(逻辑乘)运算规则:两位都是逻辑1,则结果是1;否则,结果是0逻辑与指令AND:按位进行逻辑与,结果返回目的操作数AND dest,src;逻辑与:destdest src设置CFOF0影响SF,ZF和PF

2、,T,B,A,4,2.逻辑或指令OR,逻辑或(逻辑加)运算规则:两位都是逻辑0,则结果是0;否则,结果是1逻辑或指令OR:按位进行逻辑或,结果返回目的操作数OR dest,src;逻辑或:destdest src设置CFOF0影响SF,ZF和PF,T,B,A,5,3.逻辑非指令NOT,逻辑非(逻辑反)运算规则:原来为0的位变成1,原来为1的位变成0逻辑非指令NOT:按位进行逻辑非,结果返回操作数NOT reg/mem;逻辑非:reg/memreg/mem不影响状态标志位,6,4.逻辑异或指令XOR,逻辑异或(逻辑半加)运算规则:两位不同(相异),则结果是1;否则,结果是0逻辑异或指令XOR:按

3、位进行逻辑异或,结果返回目的操作数XOR dest,src;逻辑或:destdest src设置CFOF0影响SF,ZF和PF,7,例逻辑运算程序1,;定义数据段:varA dword varB dword varT1 dword?varT2 dword?mov eax,varA;EAXnot eax;EAXand eax,varB;EAX,8,mov ebx,varB;EBXnot ebx;EBXand ebx,varA;EBXor eax,ebx;EAXmov varT1,eax,9,例逻辑运算程序2,mov eax,varAxor eax,varB;EAXmov varT2,eax;mo

4、v eax,varT1;二进制形式显示VART1call dispbdcall dispcrlf;换行显示mov eax,varT2;二进制形式显示VART2call dispbd,运行结果,10,11,逻辑运算的屏蔽作用,AND指令复位某些位(同0与),不影响其他(同1与)OR指令置位某些位(同1或),不影响其他(同0或)XOR求反某些位(同1异或),不影响其他(同0异或)and bl,11110110b;BL中D0和D3清0,其余位不变or bl,00001001b;BL中D0和D3置1,其余位不变xor bl,00001001b;BL中D0和D3求反,其余位不变,复位Reset:清0,清

5、除Clear,置位Set:置1,大写小写 AND DFH小写大写 OR 20H,xor eax,eaxsub eax,eaxmov eax,0,12,5.测试指令TEST,按位进行逻辑与运算,不返回逻辑与结果TEST dest,src;作逻辑与运算:dest srcTEST指令像AND指令一样来设置状态标志TEST指令常用于检测一些条件是否满足,一般后跟条件转移指令,目的是利用测试条件转向不同的分支,13,3.6.2 移位指令,逻辑左移指令 SHL逻辑右移指令 SHR算术左移指令 SAL算术左移指令 SAR,S:ShiftR:RotateL:LeftR:RightA:ArithmeticC:C

6、arry flag,不带进位循环左移指令 ROL不带进位循环右移指令 ROR带进位循环左移指令 RCL带进位循环右移指令 RCR,14,1.移位指令,分逻辑(Logical)和算术(Arithmetic)移位具有左移(Left)或右移(Right)操作SHL reg/mem,i8/CL;逻辑左移:最低位补0,最高位进入CFSHR reg/mem,i8/CL;逻辑右移:最高位补0,最低位进入CFSAL reg/mem,i8/CL;算术左移,与SHL是同一条指令SAR reg/mem,i8/CL;算术右移:最高位不变,最低位进入CF目的操作数:寄存器或存储单元reg/mem后一个操作数:移位位数i

7、8/CL,移位指令的功能和示例,返回,16,例移位指令实现乘法程序,xor eax,eax;EAX0mov ax,wvar;AX要乘以10的无符号数shl eax,1;左移一位等于乘2mov ebx,eax;EBXEAX2shl eax,2;再左移2位,EAXEAX8add eax,ebx;EAXEAX10call dispuid;显示乘积call dispcrlf;换行imul eax,10;EAXEAX10call dispuid;显示乘积,SHL逻辑左移一位相当于无符号数乘以2 SHR逻辑右移一位相当于无符号数除以2,17,2.循环移位指令,循环(Rotate)移位指令要将从一端移出的位

8、返回到另一端形成循环分成不带进位循环移位和带进位循环移位分别具有左移或右移操作ROL reg/mem,i8/CL;不带进位循环左移指令ROR reg/mem,i8/CL;不带进位循环右移指令RCL reg/mem,i8/CL;带进位循环左移指令RCR reg/mem,i8/CL;带进位循环右移指令,RCL/RCR示意图,ROL/ROR示意图,18,不带进位的循环移位指令,19,带进位的循环移位指令,20,例循环移位程序1,;数据段qvar;代码段mov ecx,4again:shr dword ptr qvar+4,1rcr dword ptr qvar,1loop again,21,例循环移

9、位程序2,;数据段asciibyte 38bcdbyte?;代码段mov al,asciiand al,0fhmov ah,ascii+1shl ah,4or al,ahmov bcd,al,BCD83H,22,3.7 串操作类指令,数据串(数组):以字节、字和双字为单位的多个数据存放在连续的主存区域中源操作数:允许段超越:DS:ESI目的操作数:不允许段超越:ES:EDI每执行一次串操作:ESI和EDI自动1/2/4以字节为单位(用B结尾)操作:地址指针1以字为单位(用W结尾)操作:地址指针2以双字为单位(用D结尾)操作:地址指针4DF0(执行CLD指令):地址指针增加()DF1(执行STD

10、指令):地址指针减小(),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,;数据段srcmsgbyte In a major matter,no details are small.,0destmsg byte(

11、lengthof srcmsg)dup(0);代码段mov esi,offset srcmsg;ESI源字符串地址mov edi,offset destmsg;ESI源字符串地址mov ecx,lengthof srcmsg;ECX字符串长度cld;地址增量传送rep movsb;重复字符串传送mov eax,offset destmsgcall dispmsg,25,例字符串复制程序2,;数据段srcmsgbyte In a major matter,no details are small.,0destmsg byte(lengthof srcmsg)dup(0);代码段xor ebx,e

12、bx;EBX0mov ecx,lengthof srcmsg;ECX字符串长度again:mov al,srcmsgebx;源字符串取一个字符mov destmsgebx,al;传送到目的字符串inc ebx;指向下一个字符loop again;重复进行字符串传送,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

13、|REPNZ;执行一次串指令,ECX减1;直到ECX0或ZF1,27,例3-17等长字符串比较程序,;代码段mov ecx,countmov esi,offset string1mov edi,offset string2cldrepz cmpsb;重复比较,不同或比较完jne found;发现不同字符,转移mov al,Y;字符串相同,显示Yjmp donefound:mov al,N;字符串不同,显示Ndone:call dispc,28,3.8 IA-32指令系统,指令系统(指令集):处理器支持的所有指令的集合通用指令属于处理器的基本指令,29,Intel 80 x86指令系统的发展,8

14、086(80186)建立16位基本指令80286增加保护方式指令80386扩展为32位指令系统,新增许多位操作指令80486新增6条指令,开始直接支持浮点处理指令Pentium新增6条指令,如处理器识别指令CPUIDPentium Pro增加3条指令,如条件传送指令CMOVPemtium II/III/4逐渐增加多媒体指令:MMX、SSE/SSE2/SSE3/SSSE3指令Intel 64处理器提供64位指令,具有虚拟机管理指令,掌握二进制、十六进制及其与十进制相互转换理解定点整数及有符号数表达,掌握求补运算熟悉BCD、ASCII码及其编码规律掌握常量表达方法掌握变量定义、变量属性及其应用掌握基本指令的功能及其应用MOV,XCHG,PUSH,POP加法指令,减法指令,逻辑指令,移位指令熟悉常见指令的功能XLAT,LEA,MUL,IMUL,DIV,IDIVMOVZX,MOVSX,CLC,STC;MOVS,STOS,REP理解常见语法错误、符号扩展、十进制调整等问题,第3章的基本要求,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号