微机原理第03章3算术逻辑移位串.ppt

上传人:cl****1 文档编号:568457184 上传时间:2024-07-24 格式:PPT 页数:76 大小:2.97MB
返回 下载 相关 举报
微机原理第03章3算术逻辑移位串.ppt_第1页
第1页 / 共76页
微机原理第03章3算术逻辑移位串.ppt_第2页
第2页 / 共76页
微机原理第03章3算术逻辑移位串.ppt_第3页
第3页 / 共76页
微机原理第03章3算术逻辑移位串.ppt_第4页
第4页 / 共76页
微机原理第03章3算术逻辑移位串.ppt_第5页
第5页 / 共76页
点击查看更多>>
资源描述

《微机原理第03章3算术逻辑移位串.ppt》由会员分享,可在线阅读,更多相关《微机原理第03章3算术逻辑移位串.ppt(76页珍藏版)》请在金锄头文库上搜索。

1、第第3 3章章(3)(3)第第3章:章:3.4 算术运算类指令算术运算类指令算算术运运算算类指指令令用用来来执行行二二进制制的的算算术运运算:算:加减乘除加减乘除。这类指指令令会会根根据据运运算算结果果影影响响状状态标志志,有有时要要利利用用某某些些标志志才才能能得得到到正正确确的的结果果;使用他使用他们时请留心有关状留心有关状态标志志重点掌握重点掌握加法指令:加法指令:ADD、ADC、INC 减法指令:减法指令:SUB 、SBB、DEC、CMP、NEG第第3章:章:3.4.1 加法和减法指令加法和减法指令加法指令加法指令:ADD, ADC和和INC减法指令减法指令:SUB, SBB, DEC

2、, NEG和和CMP他他们分分别执行行字字或或字字节的的加加法法和和减减法法运运算算,除除INC和和DEC不不影影响响CF标志志外外,其其他他按按定定义影响全部状影响全部状态标志位志位操作数操作数组合:合:运算指令助记符运算指令助记符 reg, imm/reg/mem运算指令助记符运算指令助记符 mem, imm/reg第第3章:章:1. 加和减指令加和减指令 ADD dest,src;加法:加法:destdestsrc;ADD指指令令使使目目的的操操作作数数加加上上源源操操作作数数,和的和的结果送到目的操作数果送到目的操作数SUB dest,src;减法:减法:destdestsrc;SUB

3、指指令令使使目目的的操操作作数数减减去去源源操操作作数数,差的差的结果送到目的操作数果送到目的操作数第第3章:例题章:例题3.7 加法加法mov ax,7348h;AX7348Hadd al,27h;AL48H27H6FH,AX736FH;OF0,SF0,ZF0,PF1,CF0第第3章:例题章:例题3.7 减法减法sub ah,0f0h;AHB3HF0HC3H,AXC36EH;OF0,SF1,ZF0,PF1,CF1mov word ptr200h,0ef00h;200HEF00H,标志不志不变sub 200h,ax;200HEF00HC36EH2B92H;OF0,SF0,ZF0,PF0,CF0

4、第第3章:章:3. 带进位加和减指令带进位加和减指令 ADC dest,src;加法:;加法:destdestsrcCF;ADC指指令令除除完完成成ADD加加法法运运算算外外,还要要加上加上进位位CF,结果送到目的操作数果送到目的操作数SBB dest,src;减法:减法:destdestsrcCF;SBB指指令令除除完完成成SUB减减法法运运算算外外,还要要减去借位减去借位CF,结果送到目的操作数果送到目的操作数第第3章:例章:例3.8 无符号双字加法和减法无符号双字加法和减法mov ax,7856h;AX7856Hmov dx,8234h;DX8234Hadd ax,8998h;AX01E

5、EH,CF1adc dx,1234h;DX9469H,CF0sub ax,4491h;AXBD5DH,CF1sbb dx,8000h;DX1468H,CF0DX.AX8234 7856H1234 8998H8000 4491H1468 BD5DH第第3章:章:3. 比较指令比较指令CMP(compare)CMP dest,src;做减法运算:;做减法运算:destsrc;CMP指指令令将将目目的的操操作作数数减减去去源源操操作作数数,但但差差值不回送不回送目的操作数目的操作数比比较指指令令通通过减减法法运运算算影影响响状状态标志志,用用于比于比较两个操作数的大小关系两个操作数的大小关系cmp

6、ax,bxcmp al,100第第3章:章:4. 增量和减量指令增量和减量指令INC reg/mem;增量(加;增量(加1):):reg/memreg/mem1DEC reg/mem;减量(减;减量(减1):):reg/memreg/mem1INC指令和指令和DEC指令是指令是单操作数指令操作数指令与与加加法法和和减减法法指指令令实现的的加加1和和减减1不不同同的的是是:INC和和DEC不影响不影响CF标志志inc si;sisi1dec byte ptr si;sisi1第第3章:章:5. 求补指令求补指令NEG(negtive)NEG reg/mem;reg/mem0reg/memNEG指

7、指令令对操操作作数数执行行求求补运运算算,即即用用零零减去操作数,然后减去操作数,然后结果返回操作数果返回操作数求求补运运算算也也可可以以表表达达成成:将将操操作作数数按按位位取取反后加反后加1NEG指指令令对标志志的的影影响响与与用用零零作作减减法法的的SUB指指令令一一样,操操作作结果果不不为零零,CF1,反之。反之。NEG指令也是一个指令也是一个单操作数指令操作数指令第第3章:例题章:例题3.9 求补运算求补运算mov ax,0ff64hneg al;AL064H9CH,AXFF9CH;OF0 SF1,ZF0,PF1,CF1第第3章:章:3.4.2 符号扩展指令(符号扩展指令(字节-字转

8、换指令)符符号号扩展展是是指指用用一一个个操操作作数数的的符符号号位位(最最高高位位)形形成成另另一一个个操操作作数数,后后一一个个操操作作数数的的高高位位是是全全0(正正数)或全数)或全1(负数)数)符符号号扩展展虽然然使使数数据据位位数数加加长,但但数数据据大大小小并并没没有有改改变,扩展的高部分展的高部分仅是低部分的符号是低部分的符号扩展展符符号号扩展展指指令令有有两两条条,用用来来将将字字节转换为字字,字字转换为双字双字CBW;AL符号符号扩展成展成AXCWD;AX符号符号扩展成展成DX用途:用于有符号数的除法。用途:用于有符号数的除法。例如:例如:(AL) = A7H,则执行行CBW

9、后,后,AH的内的内 容容为FFH。第第3章:例题章:例题3.10 符号扩展符号扩展mov al,64h;AL64H (机器数)(机器数) ,表示,表示10进制数制数100(真(真值)cbw;将符号将符号0扩展,展,AX0064H,仍然表示,仍然表示100mov ax,0ff00h;AXFF00H,表示有符号,表示有符号10进制数制数256cwd;将符号位将符号位“1”扩展,展,DX.AXFFFFFF00H;仍然表示;仍然表示256第第3章:章:3.4.3 乘法和除法指令乘法和除法指令乘法指令分乘法指令分无符号无符号和和有符号有符号乘法指令乘法指令MUL reg/mem;无符号乘法;无符号乘法

10、IMUL reg/mem;有符号乘法;有符号乘法除法指令分除法指令分无符号无符号和和有符号有符号除法指令除法指令DIV reg/mem;无符号除法;无符号除法IDIV reg/mem;有符号除法;有符号除法乘法指令乘法指令MUL r8/m8MUL r8/m8;无符号字节乘法;无符号字节乘法;AXALAXALr8/m8r8/m8MUL r16/m16MUL r16/m16;无符号字乘法;无符号字乘法;DX.AXAXDX.AXAXr16/m16r16/m16IMUL r8/m8IMUL r8/m8;有符号字节乘法;有符号字节乘法;AXALAXALr8/m8r8/m8IMUL r16/m16IMUL

11、 r16/m16;有符号字乘法;有符号字乘法;DX.AXAXDX.AXAXr16/m16r16/m16除法指令除法指令DIV r8/m8DIV r8/m8;无符号字节除法:;无符号字节除法:ALAXALAXr8/m8r8/m8的商,的商,AhAXAhAXr8/m8r8/m8的余数的余数DIV r16/m16DIV r16/m16;无符号字除法:;无符号字除法:;AXDX.AXAXDX.AXr16/m16r16/m16的商,的商,DXDX.AXDXDX.AXr16/m16r16/m16的余数的余数IDIV r8/m8IDIV r8/m8;有符号字节除法:;有符号字节除法:ALAXALAXr8/m

12、8r8/m8的商,的商,AhAXAhAXr8/m8r8/m8的余数的余数IDIV r16/m16IDIV r16/m16;有符号字除法:;有符号字除法:;AXDX.AXAXDX.AXr16/m16r16/m16的商,的商,DXDX.AXDXDX.AXr16/m16r16/m16的余数的余数余数符号同被除数。余数符号同被除数。除法指令除法指令对标志没有定志没有定义除法指令会除法指令会产生生结果溢出果溢出 当当被被除除数数远大大于于除除数数时,所所得得的的商商就就有有可可能能超超出出它它所所能能表表达达的的范范围。如如果果存存放放商商的的寄寄存存器器AL/AX不不能能表表达达,便便产生生溢溢出出,

13、8086CPU中中就就产生生编号号为0的内部中断的内部中断除法除法错中断中断对对DIV指指令令,除除数数为为0,或或者者在在字字节节除除时时商商超超过过8位位,或或者在字除时商超过者在字除时商超过16位,则发生除法溢出位,则发生除法溢出对对IDIV指指令令,除除数数为为0,或或者者在在字字节节除除时时商商不不在在-128127范范围围内内,或或者者在在字字除除时时商商不不在在-3276832767范范围围内,则发生除法溢出内,则发生除法溢出第第3章:章:3.4.4 十进制调整指令十进制调整指令 十十进制制数数调整整指指令令对二二进制制运运算算的的结果果进行行十十进制制调整整,以以得得到到十十进

14、制制的的运运算算结果果,以此以此实现十十进制制BCDBCD码运算运算80888088指令系指令系统支持两种支持两种BCDBCD码调整运算整运算q压压缩缩BCD码码就就是是通通常常的的8421码码;它它用用4个个二二进进制制位位表表示示一一个个十十进进制制位位,一一个个字字节节可可以以表表示示两两个十进制位,即个十进制位,即0099q非非压压缩缩BCD码码用用8个个二二进进制制位位表表示示一一个个十十进进制制位位,只只用用低低4个个二二进进制制位位表表示示一一个个十十进进制制位位09,高,高4位任意,通常默认为位任意,通常默认为0第第3章:编码的比较章:编码的比较真真值(十(十进制)制)864二

15、二进制制编码08H40H压缩BCD码08H64H非非压缩BCD码08H0604HASCII码38H3634H压缩压缩BCD码加减法调整指令码加减法调整指令DAA DAS非压缩非压缩BCD码加减乘除法调整指令码加减乘除法调整指令AAA AAS AAM AAD第第3章:章:3.5 位操作类指令位操作类指令 位位操操作作类指指令令以以二二进制制位位为基基本本单位位进行行数数据据的的操作操作当当需需要要对字字节或或字字数数据据中中的的各各个个二二进制制位位操操作作时,可以考可以考虑采用位操作采用位操作类指令指令注意注意这些指令些指令对标志位的影响志位的影响1. 逻辑运算指令逻辑运算指令AND OR X

16、OR NOT TEST2. 移位指令移位指令SHL SHR SAR3. 循环移位指令循环移位指令ROL ROR RCL RCR第第3章:章:3.5.1 逻辑运算指令逻辑运算指令双双操操作作数数逻辑指指令令AND、OR、XOR和和TEST设置置CFOF0,根根据据结果果设置置SF、ZF和和PF状状态,而而对AF未未定定义;它它们的的操操作作数数组合与合与ADD、SUB等一等一样:运算指令助记符运算指令助记符 reg, imm/reg/mem运算指令助记符运算指令助记符 mem, imm/reg 单操操作作数数逻辑指指令令NOT不不影影响响标志志位位,操操作数与作数与INC、DEC和和NEG一一样

17、:NOT reg/mem第第3章:逻辑与指令章:逻辑与指令AND对两个操作数两个操作数执行行逻辑与运算,与运算,结果送目的操作数果送目的操作数AND AND dest,srcdest,src;destdestdestdestsrcsrc 只只有有相相“与与”的的两两位位都都是是1,结结果果才才是是1;否否则,则,“与与”的结果为的结果为0第第3章:逻辑或指令章:逻辑或指令OR对两个操作数两个操作数执行行逻辑或运算,或运算,结果送目的操作数果送目的操作数OR OR dest,srcdest,src;destdestdestdestsrcsrc只只要要相相“或或”的的两两位位有有一一位位是是1,结

18、结果果就就是是1;否则,结果为;否则,结果为0第第3章:逻辑异或指令章:逻辑异或指令XOR对两个操作数两个操作数执行行逻辑异或运算,异或运算,结果送目的操作数果送目的操作数XOR XOR dest,srcdest,src;destdestdestdestsrcsrc只只有有相相“异异或或”的的两两位位不不相相同同,结结果果才才是是1;否则,结果为;否则,结果为0第第3章:测试指令章:测试指令TEST对两两个个操操作作数数执行行逻辑与与运运算算,结果果并并不不送送目的操作数,目的操作数,仅按按AND指令影响指令影响标志志TEST TEST dest,srcdest,src;destdestsrc

19、src AND与与TEST指令的关系,指令的关系,同同SUB与与CMP指令的关系一样指令的关系一样第第3章:逻辑非指令章:逻辑非指令NOT对一个操作数一个操作数执行行逻辑非运算非运算NOT NOT reg/memreg/mem;reg/memreg/memreg/memreg/mem 按按位位取取反反,原原来来是是 “0”的的 位位 变变 为为“1”; 原原 来来 是是“1”的的 位位 变变 为为“0”第第3章:例章:例3.6 逻辑运算逻辑运算mov al,75h;AL75Hand al,32h;AL30H;CFOF0, SF0,ZF0,PF1or al,71h;AL71H;CFOF0,SF0

20、,ZF0,PF1xor al,0f1h;AL80H;CFOF0,SF1,ZF0,PF0not al;AL7FH,标志不志不变第第3章:章: 例例3.17 逻辑运算指令的应用逻辑运算指令的应用and bl,11110110b;BL中中D0和和D3清清0,其余位不,其余位不变or bl,00001001b;BL中中D0和和D3置置1,其余位不,其余位不变xor bl,00001001b;BL中中D0和和D3求反,其余位不求反,其余位不变 AND指令可用于复位某些位(同指令可用于复位某些位(同0相与),不影响其他位相与),不影响其他位 OR指令可用于置位某些位(同指令可用于置位某些位(同1相或),不

21、影响其他位相或),不影响其他位 XOR指令可用于求反某些位(同指令可用于求反某些位(同1相异或),不影响其他位相异或),不影响其他位第第3章:章:3.5.2 移位指令移位指令将将操操作作数数移移动一一位位或或多多位位,分分成成逻辑移移位位和算和算术移位,分移位,分别具有左移或右移操作具有左移或右移操作移移位位指指令令的的第第一一个个操操作作数数是是指指定定的的被被移移位位的的操操作作数数,可可以以是是寄寄存存器器或或存存储单元元;后后一个操作数一个操作数表示移位位数:表示移位位数:该操作数该操作数为为1,表示移动一位,表示移动一位该该操操作作数数为为CL,CL寄寄存存器器值值表表示示移移位位位

22、位数数 (移位位数(移位位数大于大于1只能只能CL表示表示)移位指令对标志的影响移位指令对标志的影响按按照照移移入入的的位位设置置进位位标志志CF,根根据据移移位位后的后的结果影响果影响SF、ZF、PF对AF没有定没有定义进行行一一位位移移动,按按操操作作数数的的最最高高符符号号位位是是否否改改变,设置置OF,移移位位前前后后有有变化化,OF1,否否则OF0。移移位位次次数数大大于于1,则OF不不确定。确定。第第3章:逻辑左移指令章:逻辑左移指令SHLSHL reg/mem,1/CL;reg/mem左移左移1或或CL位位;最低位;最低位补0,最高位,最高位进入入CF演示演示第第3章:逻辑右移指

23、令章:逻辑右移指令SHRSHR reg/mem,1/CL;reg/mem右移右移1/CL位位;最高位;最高位补0,最低位,最低位进入入CF演示演示第第3章:算术左移指令章:算术左移指令SALSAL reg/mem,1/CL;与;与SHL是同一条指令是同一条指令演示演示第第3章:算术右移指令章:算术右移指令SARSAR reg/mem,1/CL;reg/mem右移右移1/CL位位;最高位不;最高位不变,最低位,最低位进入入CF演示演示第第3章:例章:例3.18 数据移位数据移位mov dx,6075h;DX01100000 01110101Bshl dx,1;DX11000000 1110101

24、0B;CF0,SF1、ZF0、PF0sar dx,1;DX11100000 01110101B;CF0,SF1、ZF0、PF0shr dx,1;DX01110000 00111010B;CF1,SF0、ZF0、PF1mov cl,4;CL4,标志不志不变sar dx,cl;DX00000111 00000011B;CF1,SF0、ZF0、PF1第第3章:例章:例3.19 将将AL寄存器中的无符号数乘以寄存器中的无符号数乘以10xor ah,ah;实现AH0,同,同时使使CF0shl ax,1;AX2ALmov bx,ax;BXAX2ALshl ax,1;AX4ALshl ax,1;AX8ALa

25、dd ax,bx;AX8AL2AL10ALsub ah,ahand ah,0 逻辑左移一位相当于无符号数乘以逻辑左移一位相当于无符号数乘以2 逻辑右移一位相当于无符号数除以逻辑右移一位相当于无符号数除以2第第3章:章:3.5.3 循环移位指令循环移位指令循循环移移位位指指令令类似似移移位位指指令令,但但要要将将从从一一端移出的位返回到另一端形成循端移出的位返回到另一端形成循环。分。分为:ROL reg/mem,1/CL;不带进位循环左移不带进位循环左移ROR reg/mem,1/CL;不带进位循环右移不带进位循环右移RCL reg/mem,1/CL;带进位循环左移带进位循环左移RCR reg/

26、mem,1/CL;带进位循环右移带进位循环右移循循环移移位位指指令令的的操操作作数数形形式式与与移移位位指指令令相相同同,按按指指令令功功能能设置置进位位标志志CF,但但不不影影响响SF、ZF、PF、AF标志志演示演示演示演示演示演示演示演示第第3章:章:32位数据移位位数据移位;将;将DX.AXDX.AX中中3232位数位数值左移一位左移一位shlshl ax,1 ax,1rclrcl dx,1 dx,1DXAXCF0考考虑虑32位位数数据据的的右右移移等等操操作作串操作类指令串操作类指令串串操操作作指指令令是是80868086指指令令系系统中中比比较独独特特的的一一类指指令令,采采用用比比

27、较特特殊殊的的数数据据串串寻址址方方式式,在在操操作作主主存存连续区区域域的的数数据据时,特特别好好用用、因而常用因而常用重点掌握:重点掌握:MOVS STOS LODSCMPS SCAS REP一般了解:一般了解:REPZ/REPE REPNZ/REPNE串数据类型串数据类型串串操操作作指指令令的的操操作作数数是是主主存存中中连续存存放放的的数数据据串串(String)即即在在连续的的主主存存区区域域中,字中,字节或字的序列或字的序列串串操操作作指指令令的的操操作作对象象是是以以字字(W)为单位的字串,或是以字位的字串,或是以字节(B)为单位的字位的字节串串串寻址方式串寻址方式源源操操作作数

28、数用用寄寄存存器器SI寻址址,默默认在在数数据据段段DS中中,但允但允许段超越:段超越:DS:SI目目的的操操作作数数用用寄寄存存器器DI寻址址,默默认在在附附加加段段ES中中,不允不允许段超越:段超越:ES:DI每每执行一次串操作指令,行一次串操作指令,SI和和DI将自将自动修改:修改:1(对于字节串)或(对于字节串)或2(对于字串)(对于字串)执执行行指指令令CLD指指令令后后,DF = 0,地地址址指指针针增增1或或2执执行行指指令令STD指指令令后后,DF = 1,地地址址指指针针减减1或或2串传送串传送MOVS(move string)把把字字节或或字字操操作作数数从从主主存存的的源

29、源地地址址传送送至至目的地址目的地址MOVSBMOVSB;字节串传送:;字节串传送:ES:DIDS:SIES:DIDS:SI;SISISISI1 1,DIDIDIDI1 1演示演示演示演示MOVSWMOVSW;字串传送:;字串传送:ES:DIDS:SIES:DIDS:SI;SISISISI2 2,DIDIDIDI2 2演示演示演示演示字节串传送字节串传送movmov si,offsetsi,offset source sourcemovmov di,offsetdi,offset destination destinationmovmov cx, cx,100100;cxcx传送次数送次数cl

30、dcld;置;置DF=0DF=0,地址增加,地址增加again:again:movsbmovsb;传送一个字送一个字节decdec cxcx;传送次数减送次数减1 1jnzjnz again again;判断;判断传送次数送次数CXCX是否是否为0 0;若;若CXCX不不为0 0,则到到againagain位置位置执行指令行指令;否;否则,结束束offsetoffset是汇编操作符,是汇编操作符,求出变量的偏移地址求出变量的偏移地址演示演示演示演示字串传送字串传送movmov si,offsetsi,offset source sourcemovmov di,offsetdi,offset d

31、estination destinationmovmov cx, cx,5050;cxcx传送次数送次数cldcld;置;置DF=0DF=0,地址增加,地址增加again:again:movswmovsw;传送一个字送一个字decdec cxcx;传送次数减送次数减1 1jnzjnz again again;判断;判断传送次数送次数cxcx是否是否为0 0;不;不为0 0,则到到againagain位置位置执行指令行指令;否;否则,结束束串存储串存储STOS(STOre String)把把AL或或AX数据数据传送至目的地址送至目的地址STOSBSTOSB;字节串存储:;字节串存储:ES:DIA

32、LES:DIAL;DIDIDIDI1 1STOSWSTOSW;字串存储:;字串存储:ES:DIAXES:DIAX;DIDIDIDI2 2串存储串存储movmov ax,0 ax,0movmov di,0 di,0movmov cx,8000h cx,8000h;cxcx传送次数(送次数(323210241024)cldcld;DF=0DF=0,地址增加,地址增加again:again:stoswstosw;传送一个字送一个字decdec cxcx;传送次数减送次数减1 1jnzjnz again again;传送次数送次数cxcx是否是否为0 0 可将可将CLD改为改为STD吗?如何改用吗?如

33、何改用STOSB? 可不用给可不用给DI赋值吗?赋值吗?DI为偶数即可为偶数即可串读取串读取LODS(load string)把指定主存把指定主存单元的数据元的数据传送送给AL或或AXLODSBLODSB;字节串读取:;字节串读取:ALDS:SIALDS:SI;SISISISI1 1LODSWLODSW;字串读取:;字串读取:AXDS:SIAXDS:SI;SISISISI2 2串读取串读取1movmov si,offsetsi,offset block blockmovmov di,offsetdi,offset dplusdplusmovmov bx,offsetbx,offset dmin

34、usdminusmovmov ax,dsax,dsmovmov es,axes,ax;数据都在一个段中,所以;数据都在一个段中,所以设置置eses= =dsdsmovmov cx,countcx,count;cxcx字字节数数cldcld串读取串读取2go_ongo_on: :lodsblodsb;从;从blockblock取出一个数据取出一个数据test al,80htest al,80h;检测符号位,判断是正是符号位,判断是正是负jnzjnz minus minus;符号位;符号位为1 1,是,是负数,数,转向向minusminusstosbstosb;符号位;符号位为0 0,是正数,存入

35、,是正数,存入dplusdplusjmpjmp again again;程序;程序转移到移到againagain处继续执行行jnzjnz go_ongo_on;完成正;完成正负数据分离数据分离串读取串读取3minus:minus: xchgxchg bx,dibx,distosbstosb;把;把负数存入数存入dminusdminusxchgxchg bx,dibx,diagain:again: decdec cxcx;字;字节数减数减1 1jnzjnz go_ongo_on;完成正;完成正负数据分离数据分离串比较串比较CMPS(CoMPare String)将将主主存存中中的的源源操操作作数

36、数减减去去至至目目的的操操作作数数,以以便便设置置标志志,进而而比比较两两操操作作数数之之间的的关系关系CMPSBCMPSB;字节串比较:;字节串比较:DS:SIDS:SIES:DIES:DI;SISISISI1 1,DIDIDIDI1 1CMPSWCMPSW;字串比较:;字串比较:DS:SIDS:SIES:DIES:DI;SISISISI2 2,DIDIDIDI2 2比较字符串比较字符串movmov si,offsetsi,offset string1 string1movmov di,offsetdi,offset string2 string2movmov cx,countcx,coun

37、tcldcldagain:again:cmpsbcmpsb;比;比较两个字符两个字符jnzjnz unmatchunmatch;有不同字符,;有不同字符,转移移decdec cxcxjnzjnz again again;进行下一个字符比行下一个字符比较movmov al,0 al,0;字符串相等,;字符串相等,设置置00h00hjmpjmp output output;转向向outputoutputunmatchunmatch: : movmov al,0ffh al,0ffh;设置置ffhffhoutput:output:movmov result,alresult,al;输出出结果果标记串

38、扫描串扫描SCAS(scan string)将将AL/AX减减去去至至目目的的操操作作数数,以以便便设置置标志,志,进而比而比较AL/AX与操作数之与操作数之间的关系的关系SCASBSCASB;字节串扫描:;字节串扫描:ALALES:DIES:DI;DIDIDIDI1 1SCASWSCASW;字串扫描:;字串扫描:AXAXES:DIES:DI;DIDIDIDI2 2查找字符串查找字符串movmov di,offsetdi,offset string stringmovmov al, al,20h20hmovmov cx,countcx,countcldcldagain:again:scasbs

39、casb;搜索;搜索jzjz found found;为0 0(ZF=1ZF=1),),发现空格空格decdec cxcx;不是空格;不是空格jnzjnz again again;搜索下一个字符;搜索下一个字符.;不含空格,;不含空格,则继续执行行found:found:.重复前缀指令重复前缀指令(repeat)串串操操作作指指令令执行行一一次次,仅对数数据据串串中中的的一一个个字字节或或字字量量进行行操操作作。但但是是串串操操作作指指令令前前,都都可可以以加加一一个个重重复复前前缀,实现串串操操作作的重复的重复执行。重复次数行。重复次数隐含在含在CX寄存器中寄存器中重复前重复前缀分分2类,3

40、条指令:条指令:配配合合不不影影响响标标志志的的MOVS、STOS(和和LODS)指令的指令的REP前缀前缀配配合合影影响响标标志志的的CMPS和和SCAS指指令令的的REPZ和和REPNZ前缀前缀REP重复前缀指令重复前缀指令REP前前缀可可以以理理解解为:当当数数据据串串没没有有结束束(CX0),),则继续传送送REPREP;每执行一次串指令,;每执行一次串指令,CXCX减减1 1;直到;直到CXCX0 0,重复执行结束,重复执行结束REPZ重复前缀指令重复前缀指令REPZ/REPE前前缀可可以以理理解解为:当当数数据据串串没没有有结束束(CX0),并并且且串串相相等等(ZF1),),则继

41、续比比较REPZREPZ;每执行一次串指令,;每执行一次串指令,CXCX减减1 1;并判断;并判断ZFZF是否为是否为0 0,;只要;只要CXCX0 0或或ZFZF0 0,重复执行结束,重复执行结束REPNZ重复前缀指令重复前缀指令REPNZ/REPNE前前缀可可以以理理解解为:当当数数据据串串没没有有结束束(CX0),并并且且串串不不相等相等(ZF0),),则继续比比较REPNZREPNZ;每执行一次串指令,;每执行一次串指令,CXCX减减1 1;并判断;并判断ZFZF是否为是否为1 1,;只要;只要CXCX0 0或或ZFZF1 1,重复执行结束,重复执行结束比较字符串比较字符串movmov

42、 si,offsetsi,offset string1 string1movmov di,offsetdi,offset string2 string2movmov cx,countcx,countcldcldrepzrepz cmpsbcmpsb;重复比;重复比较两个字符两个字符jnzjnz unmatchunmatch;字符串不等,;字符串不等,转移移movmov al,0 al,0;字符串相等,;字符串相等,设置置00h00hjmpjmp output output;转向向outputoutputunmatchunmatch: : movmov al,0ffh al,0ffh;设置置ff

43、hffhoutput:output:movmov result,alresult,al;输出出结果果标记查找字符串查找字符串movmov di,offsetdi,offset string stringmovmov al,20h al,20hmovmov cx,countcx,countcldcldrepnzrepnz scasbscasb;搜索;搜索jzjz found found;为0 0(ZF=1ZF=1),),发现空格空格.;不含空格,;不含空格,则继续执行行found:found: .教学要求教学要求1.熟悉熟悉串操作寻址特点串操作寻址特点2.掌掌握握基基本本指指令令:ANDORXORNOTTEST、SHLSHRSAR、ROLRORRCLRCR、MOVSLODSSTOS、REP3.熟悉特色指令:熟悉特色指令:CMPSSCAS4.了解不常使用的指令:了解不常使用的指令:REPZREPNZ

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号