简单应用程序的设计 -重复前缀

重复前缀

由于串操作指令只能每次对字符串的一个字符进行处理,所以使用了一个循环,以便完成对整个字符串的处理,为了进一步提高效率,8086和8088还提供了重复指令前缀,重复指令前缀可以加载串操作指令指令之前,已达到重复执行其后串操作指令的目的

重复前缀REP

REP用作为一个串操作指令的前缀,它重复其后面的串操作指令动作,每一次重复都先判断CX是否为0,如果为0
就结束重复,否则CX的值就减1,重复其后面的串操作指令,所以CX等于0 时,就不执行其后面的字符操作指令

重复前缀REP主要用在传送指令MOVS和STOS之前,值得指出的是REP不用在LODSB和LODSW指令之前

【1】重复操作指令REPZ、REPE

REPZ与REPE是一个前缀的两个助记符,下面的介绍REPZ为代表

REPZ用作一个串操作指令的前缀,他重复其后的串操作指令动作,每重复一次,CX的值减少1,重复直到CX为0或者串操作指令使零标志ZF为0,重复结果条件的检查实在重复结果之前进行的


子程序STRCMP
功能比较两个字符串是否相同
入口参数:DS:SI = 字符串1首地址的段值的偏移
ES:DI = 字符串2首地址的段值的偏移
STRCMP PROC
CLD
PUSH DI
XOR AL,AL;先测量一个字符串的长度
MOV CX,0FFFFH
NEXT:SCANSB
JNZ NEXT
NOT CX
POP DI
REPZ CMPSB
MOV AL,[SI-1]
MOV BL,ES:[DI-1]
XOR AH,AH
MOV BH,AH
SUB AX,BX
RET
STRCMP ENDP

【2】重复前缀REPNZ、REPNE

REPZ用作一个串操作指令的前缀,他重复其后的串操作指令动作,每重复一次,CX的值减少1,重复直到CX为0或者串操作指令使零标志ZF为1,重复结果条件的检查实在重复结果之前进行的


;子程序名称 STRCHR
;功能 判断字符是否属于字符串
;入口参数:DS:SI搜索字符串首地址的段值:偏移
;

STRCHR PROC
PUSH BX
PUSH SI
CLD
MOV BL,AL
TEST SI,1
JZ STRCHR1
LODSB
CMP AL,BL
JZ STRCHR3
AND AL,AL
JZ STRCHR2
STRCHR1:LODSW
CMP AL,BL
JZ SRTCHR4
AND AL,AL
JZ STRCHR2
CMP AH,BL
JZ STRCHR3
AND AH,AH
JNZ STRCHR1
STRCHR2:STC
JMP SHORT STRCHR5
STRCHR3:INC SI
STRCHR3:LEA AX,[SI-2]
STRCHR5:POP SI
POP BX
RET
STRCHR ENDP

简单应用程序的设计 -重复前缀,布布扣,bubuko.com

时间: 2024-10-19 22:33:29

简单应用程序的设计 -重复前缀的相关文章

简单应用程序的设计字符串处理

字符串是字符的一个序列,对字符串的操作包括复制检索,插入删除和替换等,为了便于对字符串进行有效的处理,8086和8088提供专门的用户处理字符串的指令,我们称之为字符串操作指令,简称串操作指令 在字符串操作指令中,一般由变址寄存器SI指向源操作数(串),由变址寄存器DI指向目的操作数,规定源串存放在当前数据段中,目的串存放在当前附加段中,也就是说 在涉及源操作数是,引用数据段寄存器DS,在涉及目的操作数时,引用附加段寄存器ES,换句话说,DS:SI指向源操作数,ES:DI指向目的操作数 串操作指

一个简单的DELPHI程序注册码设计 .

当你辛辛苦苦用DELPHI做好了一个你认为十分不错的程序,你是否想把它发布出去成为共享软件呢  做为一个共享软件,注册码肯定是少不了的,你可以通过判断程序是否注册来进行功能,时间或一些其它限制.现在就介绍一种简单的注册码制造方法.思路是这样的:程序运行时先检测注册表,如果找到注册项,则表明已经注册,如果没有找到注册项,则提示要求注册. <注册例程>在DELPHI下新建一工程,放置Edit1,Edit2,Label1,Label2,Button1组件.具体代码如下:unit Unit1;inte

1.2跑个简单的程序

1.程序编程风格 在写程序时,有个良好的编程习惯,对自己对别人都有好处.华为的编程规范就很不错,可以借鉴,没必要完全模仿.看别人代码往往是很折磨人的,如果自己的代码不用注释也能让别人清晰明确了解,不仅节约别人时间,也可以免去自己被打扰. a. 标识符的命名要清晰.明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解.尽可能给出描述性名称,不要节约空间,让别人很快理解你的码更重要.其中有些单词是大家公认的缩写,常用单词的缩写必须统一.协议中的单词的缩写与协议保持一致.对于

iOS程序模块化设计

一.模块化设计的概述: 模块化设计(Block-based design):对一定范围内的不同功能或相同功能的不同性能.不同规格的产品进行功能分析的基础上,划分并设计出一系列功能模块,通过模块的选择和组合构成不同的定制产品,以满足市场的不同需求. 模块化设计是绿色设计方法之一,绿色设计是指“在产品整个生命周期内,着重考虑产品环境属性(可拆卸性.可回收性.可维护性.可重复利用性等)并将其作为设计目标,在满足环境目标要求的同时,保证产品应该有的功能.使用寿命.质量等要求”. 绿色设计的原则被公认为“

[转]Android程序框架设计

这篇文章主要内容来自于之前我讲的一个PPT文档,现在将其整理如下.欢迎指正.以下的内容都是来自于我自身的经验,欢迎大家多提自己的建议. 1.一些概念 模式的定义: 每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心.通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作. 什么是设计模式? 设计模式是在某种特别的情况下,针对某种问题的某种典型.通用的解决方法. 我们是需要适当了解并学习一些设计模式,在程序开发过程中,总是会涉及到一些框架设计,模块

【MPI学习1】简单MPI程序示例

有了apue的基础,再看mpi程序多进程通信就稍微容易了一些,以下几个简单程序来自都志辉老师的那本MPI的书的第七章. 现在ubuntu上配置了一下mpich的环境: http://www.cnblogs.com/liyanwei/archive/2010/04/26/1721142.html 注意,为了编译运行方便,在~/.bashrc文件中添加mpi的两个环境变量 设置完之后注意执行source ~/.bashrc命令 程序1 计时功能 主要用到的MPI_Wtime()这个函数 1 #inc

计算机科学及编程导论(3)迭代程序的设计与实现、遍历、元组

1. 迭代程序的设计:基础元素 迭代程序的实现,通常包括下了以下五个部分: 计数器(Count):用于标记循环的次数 初始化(Initiate):在循环外部进行初始化 正确的结束测试(Right End Test):在什么情况下结束通常与计数器(Count)密切相关 循环部分的代码块:该部分代码块通常包含了对计数器的改变 结束后程序应该做什么 2. 迭代程序的设计:流程图 在使用具体的代码实现之前,可以用流程图来组织程序. 举一个简单的例子,已经一个正整数的平方为X,要求这个正整数,可以设这个正

【小程序码 - 设计篇】菊花绽放

作者:lincolnlin,endyxu,changoran 2017 年四月,微信正式推出了小程序码.小程序码的使命及诞生的过程, 扫码背后藏了什么秘密?小程序码又为何长得像菊花? | 你问鹅答一文已经作过一番介绍.本文将为你剖析更多关于小程序码的技术细节. 小程序码的前世 初见小程序码,犹如一朵盛开的菊花. 其实这种脑洞大开的异形码并非微信首创,Facebook.kik.snapchat 等公司都研发了自己体系的码. 从设计的图形上,我们把上述方案简单分成: ? 平面类 如 qrcode ,

JavaScript简单抽奖程序的实现及代码

JavaScript简单抽奖程序的实现及代码 1.需求说明 某公司年终抽奖,需要有如下功能 1)可以根据实际情况设置到场人数的最大值 2) 点击"开始",大屏幕滚动,点击"停止",获奖者的编号出现在大屏幕上 3)在界面里显示全部奖项获奖人编号 4)不重复获奖 5)不会因为输入错误而导致抽奖结果异常. 2.代码呈上 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">