橙盒芯片解密研究所系国内芯片解密行业的鼻祖,是目前可解型号最多、价格最合理的专业单片机解密、芯片解密、IC解密权威机构。如有解密需求,欢迎来电咨询:0755-33348669
当前位置:首页>IC解密技术 >> 汇编语言教程-重复字符串操作指令

汇编语言教程-重复字符串操作指令

  前面介绍了七种不同的字符串操作指令:取字符串数据、置字符串数据、字符串传送、输入字符串、输出字符串、字符串比较和字符串扫描等指令,所叙述是这些指令执行一次所具有的功能。但我们知道:每个字符串通常会有多个字符的,所以,就需要重复执行这些字符串操作指令。为了满足这种需求,指令系统提供了一组重复前缀指令。
  虽然在这些字符串指令的前面都可以添加一个重复前缀指令,但由于指令执行结果的差异,对某个具体的字符串指令又不用重复前缀指令而改用其它循环来实现重复的需要。
  重复字符串操作指令对标志位的影响是由被重复的字符串操作指令来决定。
  重复前缀指令REP(Repeat String Instruction)
  重复前缀指令是重复其后的字符串操作指令,重复的次数由CX来决定。其一般格式为:
  REPLODS/LODSB/LODSW/LODSD
  REPSTOS/STOSB/STOSW/STOSD
  REPMOVS/MOVSB/MOVSW/MOVSD
  REPINS/ INSB/INSW/INSD
  REPOUTS/OUTSB/OUTSW/OUTSD
  重复前缀指令的执行步骤如下:
  (1)、判断:CX=0;
  (2)、如果CX=0,则结束重复操作,执行程序中的下一条指令;
  (3)、否则,CX=CX-1(不影响有关标志位),并执行其后的字符串操作指令,在该指令执行完后,再转到步骤(1)。
  从上面的重复前缀指令格式来看,虽然我们可以使用重复取字符串数据指令(第一组指令),但可能会因为指令的执行结果而在程序中几乎不被使用。
  例5.20编写一段程序,计算字符串“12345abcdefgh”中字符的ASCII之和。
  解:
  …
  MESSDB’12345abcdefgh’;在数据段中进行变量说明
  …
  MOVAX, SEG MESS
  MOVDS, AX
  LEASI, MESS;用DS:SI来指向字符串的首地址
  MOVCX, 13D;重复次数
  XORBX, BX;置求和的初值为0
  REPLODSB
  …
  虽然指令“REP LODSB”能从字符串中取出每个字符,但它是在一条指令中完成的,程序的其它指令根本无法处理每次取出的数据,指令的执行结果是:AL只保存最后一次所取出的字符’h’的ASCII码。
  所以,为了实现本例的要求,不能使用重复前缀指令,而要把指令“REP LODSB”改写成如下四条指令:
  XORAH, AH;为后面的累加作准备
  again:LODSB
  ADDBX, AX;AL是被取出的字符,AH已被清0
  LOOPagain
  条件重复前缀指令(Repeat String Conditionally)
  条件重复前缀指令与前面的重复前缀指令功能相类似,所不同的是:其重复次数不仅由CX来决定,而且还会由标志位ZF来决定。根据ZF所起的作用又分为二种:相等重复前缀指令REPE/REPZ和不等重复前缀指令REPE/REPZ。
  A、相等重复前缀指令的一般格式为:
  REPE/REPZSCAS/SCASB/SCASW/SCASD
  REPE/REPZCMPS/CMPSB/CMPSW/CMPSD
  该重复前缀指令的执行步骤如下:
  (1)、判断条件:CX≠0且 ZF=1;
  (2)、如果条件不成立,则结束重复操作,执行程序中的下一条指令;
  (3)、否则,CX=CX-1(不影响有关标志位),并执行其后的字符串操作指令,在该指令执行完后,再转到步骤(1)。
  B、不等重复前缀指令的一般格式为:
  REPNE/REPNZSCAS/SCASB/SCASW/SCASD
  REPNE/REPNZCMPS/CMPSB/CMPSW/CMPSD
  该重复前缀指令的执行步骤如下:
  (1)、判断条件:CX≠0且 ZF=0;
  (2)、如果条件不成立,则结束重复操作,执行程序中的下一条指令;
  (3)、否则,CX=CX-1(不影响有关标志位),并执行其后的字符串操作指令,在该指令执行完后,再转到步骤(1)。

[来源:芯片解密研究所] [作者:admin] [日期:10-04-01] [热度:]

评论

发表评论
IC解密服务热线
  • 24小时技术专线:0755-33348696
  • 24小时投诉专线:0755-33348669
  • PIC单片机解密专线:0755-33348608
  • ST单片机解密专线:0755-33348609
  • FPGA/CPLD芯片解密:0755-33348698
  • 51单片机解密专线:0755-33348638
  • AVR单片机解密专线:0755-33348660
  • MSP430芯片解密:0755-033348668
  • 日系单片机解密专线:0755-33348669
  • AT88单片机解密:0755-33348680
  • MASK掩膜解密专线:0755-33348686
热门解密芯片型号
常见芯片解密系列(欲查询更所可解密型号,请直接致电IC芯片解密事业部客服人员)
  • ACTEL芯片解密
  • ALRERA芯片解密
  • AMD系列IC解密
  • ATMEL单片机解密
  • CYPRESS单片机解密
  • DALLAS单片机破解
  • EMC系列IC解密
  • Feeling系列IC破解
  • HITACHI系列IC解密
  • HOLTEK单片机解密
  • INTEL系列芯片解密
  • LATTICE单片机破解
  • MICROCHIP系列解密
  • MOTOROLA单片机解密
  • WINBOND单片机破解
  • ZILOG芯片解密
  • PHILIPS单片机解密
  • PORTEK系列IC破解
  • Quicklogic FPGA解密
  • SAMSUNG芯片破解
  • Silicon单片机解密
  • SST单片机解密
  • ST系列IC解密
  • STC芯片破解
合作网站
关于我们 | 可解IC库 | 解密案例 | IC解密技术 | 解密优惠 | 行业新闻 | 联系我们
电话:0755-33348669 33348668   邮箱:chicjiemi@126.com   地址:深圳市福田区赛格科技园4栋西4C
Copyright © 2009 橙盒科技深圳芯片解密研究所