北京理工大学实验三 字符串操作实验(设计性实验)
- 格式:docx
- 大小:309.02 KB
- 文档页数:5
实验一请在数据段中定义两个数,要求编写程序分别计算出这两个数的和、差、积、商,并用Debug 的相关命令查询计算结果。
(略)实验二内存自TABLE开始的连续16个单元中存放着0-15的平方值,查表求DATA中任意数X(0≤X ≤15)的平方值,并将结果放在RESULT中。
DATA1 SEGMENTTABLE DB 0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225DATA DB 10RESULT DB ?DATA1 ENDSSTAC SEGMENTDB 100 DUP (?)STAC ENDSCODE SEGMENTASSUME DS:DATA1,SS:STAC,CS:CODESR:MOV AX,DATA1MOV DS,AXMOV AX,STACMOV SS,AXLEA BX,TABLEMOV AH,0MOV AL,DATAXLATMOV RESULT,ALMOV AH,4CHINT 21HCODE ENDSEND SR实验三试编写一程序:比较两个字符串STRING1 和STRING2所含的字符是否相同。
若相同则显示‘MATCH’,否则显示‘NO MATCH’。
DATA1 SEGMENTSTRING1 DB 10,?,10 DUP (?)STRING2 DB 10,?,10 DUP (?)REM1 DB 'PLEASE INPUT STR1: $'REM2 DB 'PLEASE INPUT STR2: $'MESS1 DB 'MATCH$'MESS2 DB 'NO MATCH$'DATA1 ENDSCODE1 SEGMENTASSUME CS:CODE1,DS:DATA1STT: MOV AX,DATA1MOV DS,AXMOV ES,AX LEA DX,REM1 MOV AH,09H INT 21HLEA DX, STRING1 MOV AH, 0AH INT 21HMOV DL, 0DH MOV AH, 6INT 21HMOV DL, 0AH MOV AH, 6INT 21HLEA DX,REM2 MOV AH,09H INT 21HLEA DX, STRING2 MOV AH, 0AH INT 21HMOV DL,0DH MOV AH,6INT 21HMOV DL,0AHMOV AH,6INT 21HLEA SI, STRING1LEA DI,STRING2MOV CL,[SI+1]MOV BL,[DI+1]CMP CL,BLJNE NOMCLDMOV CH,0ADD CL,2REPZ CMPSBJNZ NOM MAT: LEA DX,MESS1JMP SHORT DISP1 NOM: LEA DX,MESS2DISP1: MOV AH,09HINT 21HMOV AH,4CHINT 21HCODE1 ENDSEND STT实验四设有10个学生的成绩分别为:56,69,84,82,73,88,99,63,100,80分。
一、实验目的1、掌握子程序有关基本知识,学会子程序设计方法;2、掌握主程序与子程序之间的调用关系及调用方法;3、掌握汇编语言字符串处理方法;4、掌握字符串的输入输出程序设计方法;5、掌握数制转换程序实现方法。
二、实验软硬件环境1、硬件环境:惠普64 位一体化计算机及局域网;2、软件环境:windows 8,红蜘蛛管理系统,MASM for Windows。
三、实验相关知识把功能相对独立的程序段单独编写和调试,作为一个相对独立的模块供程序使用,就性成子程序。
子程序可以实现源程序的模块化,可简化源程序结构,可以提高编程效率。
1) 子程序的定义语句格式汇编语言子程序以proc 语句行开始,以endp 语句行结束。
如:过程名PROC near[或far]过程体..........................过程名ENDP在主程序中用CALL 过程名调用。
主程序和子程序之间传递参数通常通过栈来进行,当然也可以用某些缺省的寄存器或内存来传递。
但以通过栈来传递参数程序的通用性最强。
2) 子程序调用说明子程序从PROC 语句开始,以ENDP 语句结束,程序中至少应当包含一条RET 语句用以返回主程序。
在定义子程序时,应当注意其距离属性:当子程序和调用程序在同一代码段中时,用NEAR 属性;当子程序及其调用程序不在同一个代码段中时,应当定义为FAR 属性。
当由DOS 系统进入子程序时,子程序应当定义为FAR 属性。
为执行子程序后返回操作系统,在子程序的前几条指令中设置返回信息。
3) 子程序使用中的问题A、主程序调用子程序是通过CALL 指令来实现的。
子程序执行后,通过RET 指令,返回主程序调用指令CALL 的下一条指令,继续执行主程序。
一个子程序可以由主程序在不同时刻多次调用。
如果在子程序中又调用了其他的子程序,则称为子程序的嵌套。
特别是当子程序又能调用子程序本身时,这种调用称为递归。
B、调用子程序时寄存器及所用存储单元内容的保护。
字符串操作一、问题描述字符串是一种常见的数据类型,在现实生活中有着广泛的应用。
本次课程设计需要选择合适的结构完成字符串的建立,实现串的基本操作,编写三种模式匹配算法和字符串的加密与解密算法,并利用它们实现字符串的应用:包括文本文件对单词的检索和计数。
二、基本要求程序要求选择合适的存储结构,并实现以下功能:1.完成串的基本操作,如:串的赋值,比较,连接,插入,删除;2.实现串的模式匹配,包括:穷举法,BF算法和KMP算法;3.字符串的应用:字符串的加密与解密;文本文件单词的计数;文本文件单词的检索;三、测试数据1.对模式匹配(穷举法,KMP算法和BF算法)的测试:如:在“asd sfhasd asd”中找从第3个下标开始匹配的模式串“asd”。
2.对加密与解密的测试:如:对串“afhbs 537hsj/sjdh”加密,再将加密后的串还原。
3.对文本文件单词的计数和检索的测试:如创建一个文本文件,在其中对单词“me”进行计数并且检索其所处行、列。
四、算法思想1、用结构体SString记录字符串信息,其中ch代表字符串,length代表字符串长度。
2、模式匹配:1)穷举法的Index(S,T,pos):从位置开始通过SubString截取S中T长度的字符串,并与T通过StrCompare进行比较,若找到则返回位置;否则继续。
若没找到,返回-1。
2)BF算法: IndexBF(S, T,pos)主串S从pos位置开始,模式串T从0位置开始,从目标串s=“s0s2…sn-1"的第一个字符开始和模式串t=“t0t2…tm-1"中的第一个字符比较,若相等,则继续逐个比较后续字符;否则从目标串s的第二个字符开始重新与模式串t的第一个字符进行比较。
依次类推,若从模式串s的i位置字符开始,每个字符依次和目标串t中的对应字符相等,则匹配成功,该算法返回i;否则,匹配失败,函数返回-1。
3)KMP算法:该算法较BF算法有较大改进,主要是消除了主串指针的回溯,从而使算法效率有了某种程度的提高。
实验课程名称微机原理实验实验项目名称字符串处理程序实验指导老师学生姓名学院理学院专业电子信息科学与技术年级2008级(一)班学号实验时间2010年12月20日总成绩ﻩﻩ①INT21HPOP AXMOVDL, ALORDL,30HMOV AH,2INT 21HMOV AH,4CHINT 21HCODEﻩENDSEND START编译源程序:如下,发现地29行有错误。
用EDIT命令找到错误地方,并进行修改,如下图所示:修改后保存程序,重新编译:重新编译后程序没有错误,用反汇编查看指令代码:如下图所示:运行程序,验证程序设计结果的正确性。
从键盘上输入字符串“ADKJjkdjfljdeowekdjg”,共二十个字符,其中小写字母十六个,显示结果如下:由运行结果可知,程序运行正确,实现了设计要求。
②实验2课参考教材第五章练习10的解法,但要编写一个在同一个字符串中删除字符,并将其余字符向前递补。
删除字符串中重复字符的源程序清单:;DELD.ASMDATA SEGMENTSTRN DB 80 DUP(?)LEN DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATAMOV DS,AXMOV ES,AXLEA SI,STRN①MOV CL,0 AGAIN: MOV AH,1 ①INT 21HCMP AL,0DHJZ DONEMOV [SI],ALINC SIINC CLJMP AGAINDONE: MOV CH, 0MOV LEN,CLDEC SI②MOV BYTE PTR [SI+1],'$'源程序在27行有错误,有提示的消息可知,此处需要用到变址或基址寄存器,用EDIT命令找到错误的地方,并改正:此处是寄存器直接寻址,把cl的值送给标号为LEN存储单元,所以应去掉”[]”修改程序保存再编译以检查是否还有错误:有上图编译可知,程序修改正确,接下来连接成目标程序:生成的目标程序名为DELD.EXE用反汇编命令查看程序代码:运行程序,检验程序设计的正确性:执行程序,输入字符串”DKJKLDKEIOWEJDLJAHNVL”,根据编写要求,显示的结果为“KIOWEDJAHNVL“,既删除字符串中重复的字符。
《数据结构与算法统计》实验报告——实验三学院:班级:学号:姓名:一、实验目的1 熟悉VC环境,学会使用C++解决关于二叉树的问题。
2 在上机、调试的过程中,加强对二叉树的理解和运用。
3 锻炼动手编程和独立思考的能力。
二、实验内容遍历二叉树。
请输入一棵二叉树的扩展的前序序列,经过处理后生成一棵二叉树,然后对于该二叉树输出前序、中序和后序遍历序列。
三、程序设计1、概要设计为实现上述程序功能,首先需要二叉树的抽象数据结构。
⑴二叉树的抽象数据类型定义为:ADT BinaryTree {数据对象D:D是具有相同特性的数据元素的集合。
数据关系R:若D=Φ,则R=Φ,称BinaryTree为空二叉树;若D≠Φ,则R={H},H是如下二元关系;(1)在D中存在惟一的称为根的数据元素root,它在关系H下无前驱;(2)若D-{root}≠Φ,则存在D-{root}={D1,Dr},且D1∩Dr =Φ;(3)若D1≠Φ,则D1中存在惟一的元素x1,<root,x1>∈H,且存在D1上的关系H1 ⊆H;若Dr≠Φ,则Dr中存在惟一的元素xr,<root,xr>∈H,且存在上的关系Hr ⊆H;H={<root,x1>,<root,xr>,H1,Hr};(4)(D1,{H1})是一棵符合本定义的二叉树,称为根的左子树;(Dr,{Hr})是一棵符合本定义的二叉树,称为根的右子树。
基本操作:CreatBiTree(BiTree &T)操作结果:按先序次序建立二叉链表表示的二叉树TPreOrderTraverse(BiTree T,int (*visit)(char e))初始条件:二叉树T已经存在,visit是对结点操作的应用函数操作结果:先序遍历二叉树T ,对每个结点调用visit函数仅一次;一旦visit()失败,则操作失败。
InOrderTraverse(BiTree T,int (*visit)(char e))初始条件:二叉树T已经存在,visit是对结点操作的应用函数操作结果:中序遍历二叉树T ,对每个结点调用visit函数仅一次;一旦visit()失败,则操作失败。
北京理工大学汇编第四次(分支和循环程序设计实验)报告汇编第四次(分支和循环程序设计实验)报告一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言分支程序基本指令的使用方法;3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法;4.了解汇编语言循环程序设计的基本流程;5.熟悉汇编语言循环基本指令的使用方法;6.掌握利用汇编语言的循环指令完成循环程序设计方法。
二、软硬件环境1、硬件环境:计算机系统 windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识在实际应用中,经常根据一些条件来选择一条分支执行。
汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减产生的结果来进行。
1.无条件转移指令JMP无条件转移指令JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。
2.条件转移指令JXX条件转移指令可分为三大类:1).简单条件转移指令。
根据单个标志位的状态判断转移条件。
下表表示条件转移指令标志位的状态:2).无符号数条件转移指令。
假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是A-B,其转移指令如下:3)带符号数条件转移指令。
在汇编程序设计中,要熟练使用循环指令和跳转指令等来实现循环,理解循环体结构中的初始化部分、循环体、结束部分,并且要结合前面分支结构相关的知识点,加深对循环结构的理解和掌握。
循环结构的组成及其设计方法的知识要点有:1、循环程序的基本结构通常由3部分组成1) 初始化部分建立循环初始值,为循环做准备,如设置地址指针,(BX/SI/DI/BP),初始化循环控制变量或计数器(CX),数据寄存器(AX/DX)初值等.2) 循环体循环体是循环程序的主体,是程序中重复执行的程序段.它是由循环工作部分、修改部分、和循环控制部分。
①循环工作部分:完成程序功能的主要程序段,用于解决程序的实际任务;②修改部分:对循环参数进行修改,并为下一次循环做准备;③循环控制部分:判断循环结束条件是否满足。
北京理工大学汇编语言实验报告实验五子程序设计实验实验五子程序设计实验(设计性实验)一、实验要求和目的1.熟悉汇编语言程序设计结构;2.熟悉汇编语言子程序设计方法;3.熟悉利用汇编语言子程序参数传递方法;4.熟悉汇编语言字符串处理基本指令的使用方法;5.掌握利用汇编语言实现字符串的输入输出程序设计方法;6.掌握数制转换程序实现方法。
二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识A)子程序知识要点:1、掌握子程序的定义语句;过程名 PROC [near/far]过程体RET过程名 ENDP2.子程序结构形式一个完整的子程序一般应包含下列内容:1. )子程序的说明部分在设计了程序时,要建立子程序的文档说明,使用户能清楚此子程序的功能和调用方法. 说明时,应含如下内容:.子程序名:命名时要名中见意..子程序的功能:说明子程序完成的任务;.子程序入口参数:说明子程序运行所需参数及存放位置;.子程序出口参数:说明子程序运行结果的参数及存放位置;.子程序所占用的寄存器和工作单元;.子程序调用示例;2、)掌握子程序的调用与返回在汇编语言中,子程序的调用用CALL,返回用RET 指令来完成。
.段内调用与返回:调用子程序指令与子程序同在一个段内。
因此只修改IP;.段间调用与返回:调用子程序与子程序分别在不同的段,因此在返回时,需同时修改CS:IP。
3.)子程序的现场保护与恢复保护现场:在子程序设计时,CPU 内部寄存器内容的保护和恢复。
一般利用堆栈实现现场保护和恢复的格式:过程名PROC [NEAR/FAR]PUSH BXPUSH DXPOP DXPOP AXRET过程名 ENDP4.子程序的参数传递方法1.寄存器传递参数这种方式是最基本的参数传递方式。
2.存储器单元传(变量)递参数这种方法是在主程序调用子程序前,将入口参数存放到约定的存储单元中;子程序运行时到约定存储位置读取参数;子程序执行结束后将结果也放在约定存储单元中。
第六章磁盘文件存取实验(设计性实验一、实验要求和目的1. 理解文件、目录的概念;2. 了解 FCB(文件控制块方式文件管理方法;3. 掌握文件代号式文件存取方式;4. 学习使用文件指针读取文件二、软硬件环境1. 硬件环境:计算机系统 windows;2. 软件环境:装有 MASM、DEBUG、LINK、等应用程序。
三、实验涉及的主要知识单元DOS 功能调用中断(INT 21H提供了两类磁盘文件管理功能,一类是 FCB(文件控制块方式,另一类是文件代号式存取方式。
对于文件的管理,实际上是对文件的读写管理, DOS 设计了四种存取文件方式:顺序存取方式、随机存取方式、随机分块存取方式和代号法存取方式。
文件的处理步骤A 写之前必须先建立文件、读之前必须先打开文件。
B 写文件之后一定要关闭文件。
通过关闭文件,使操作系统确认此文件放在磁盘哪一部分,写后不关闭会导致写入文件不完整。
1、文件代号式存取方式: 当用户需要打开或建立一个文件时,必须提供文件标识符。
文件标识符用ASCII Z 字符串表示。
ASCII Z 字符串是指文件标识符的 ASCII 字符串后面再加1 个“0”字符。
文件标识符的字符串包括驱动器名、路径名和文件名。
其格式为[d:][path]filename[.exe]其中 d 为驱动器名,path 为路径名,.exe 为文件名后缀。
中断 21H 提供了许多有关目录和文件操作的功能,其中文件代号式存取方式常用的功能如下:2、操作目录的常用功能39H——创建目录 3BH——设置当前目录3AH——删除目录 47H——读取当前目录有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅相关资料之目录控制功能。
3、用文件句柄操作文件的常用功能3CH——创建文件 4EH——查找到第一个文件3DH——打开文件 4FH——查找下一个文件3EH——关闭文件 56H——文件换名3FH——读文件或设备 57H——读取/设置文件的日期和时间40H——写文件或设备 5AH——创建临时文件41H——删除文件 5BH——创建新文件42H——设置文件指针 67H——设置文件句柄数(最多文件数43H——读取/设置文件属性 6CH——扩展的打开文件功能有关中断功能的详细描述和调用参数在此从略,需要查阅者可参阅相关资料之文件操作功能。
实验三 字符串操作实验(设计性实验)
一、实验要求和目的
1.了解汇编语言字符串处理基本流程;
2.熟悉汇编语言宇符串处理基本指令的使用方法;
3.掌握利用汇编语言实现宇符串处理的程序设计方法。
二、实验涉及的主要知识
1.字符串处理基本操作流程
(1)利用SI寄存器保存源串首地址
(2)利用DI寄存器保存目的串首地址
(3)利用CX寄存器保存字符串长度
(4)的利用CLD或STD指令设置字符串处理方向.
(5)利用宇符串处理指令实现相关处理.
2.重复前缀指令
重复次数由计数寄存器CX中存放的值决定,指令每重复执行一次计数器cx中值减1,
当cx 中值减至0时,停止重复执行,继续执行下一条指令。
REP 无条件重复串操作直到计数寄存器的内容CX为0为止. 经常与REP配合工作的宇
符串处理指令有MOVS,STOS和LODS。
REPE/REPZ 判断计数寄存器的内容CX 是否为0或ZF=O (即比较的两个操作数不等),只
要满足一个则重复执行结束,否则继续执行. 可以与REPE/REPZ 配合工作的串指令有CMPS
和SCAS。
REPNE/REPNZ 判断计数寄存器的内容是否为0或ZF=1(即比较的两个操作数相等),只要
满足一个则重复执行结束,否则继续执行. 可以与REPE/REPZ 配合工作的串指令有CMPS和
SCAS。
3.字符串处理基本指令
(1) MOVS 传送指令
格式:MOVS DST,SRC 或MOVSB (传送宇节)或MOVSW (传送字)。后而两种形式需要与REP
指令结合使用。
该指令把由源变址寄存器(SRC)指向的数据段中的一个字(或字节)数据传送到由
目的变址寄存器(D S T)指向的附加段中的一个宇(或字节)中去,同时,根据方向标志及
数据格式(字或字节)对源变址寄存器和目的变址寄存器进行修改.
(2 ) STOS 存入串指令
格式STOS DST 或STOSB (存入字节)或STOSW (存入字)。
该指令把AL或AX的内容存入由目的变址寄存器指向的附加段的某单元中,井根据方
向标志( DF ) 相数据类型修改日的变址寄存端的内容.
(3) LODS 从串取指令
格式LODS SRC 或LODSB (取字节)或LODSW (取字)
该指令把由源变址寄存器指向的数据段中某单元的内容传送到AL或AX中,并根据方
向标志和数据类型修改源变址寄存器的内容。
(4) CMPS 串比较指令
DST或CMPSB或CMPSW .
该指令把由变址寄存器指向的数据段中的一个字节或字与由目的变址寄存器所指向的
附加段中的一个字节或字相减,但不保存结果,只根据结果设置条件标志。
该指令与REPE/REPZ或REPNE/REPNZ 结合,可以比较两个数据串。
(5)SCAS 串扫描指令
格式:SCAS DST或SCASB或SCASW 。
该指令把AL或AX 的内容与由目的变址寄存器所指向的附加段中的一个字节或字进行
比较,并不保存结果,只根据结果设置条件码。
该指令与REPE/REPZ 或REPNE/REPNZ 结合,可以从某个字符串中查找一个指定的字符。
总的来说,字符串处理可以将缓冲区中个数据块搬至存储器的另处,比较两个宇符串是
否相等,从缓冲区中一个数据块寻找某一个特定的关键字,顺次从一个缓冲区取字符或顺次
向一个缓冲区存字符等.
三、实验内容及步骤
1、 比较缓冲区中两个字符串是否相同,相同则AL返回0,不同AL返回1.为了使程序的通
用性比较好,字符串长度要求自动获取。
程序代码
DATAS SEGMENT STR1 DB'This is a hard code' CNT EQU $-STR1 STR2 DB'This is a hard code';此处输入数据段代码 DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV ES,AX MOV CX,CNT LEA SI,STR1 LEA DI,STR2
CLD
MOV AH,0
MOV AL,1
REPZ CMPSB
JZ NEXT
MOV AL,0
NEXT:
MOV AH,4CH
INT 21H
CODES ENDS
ENDSTART
流程图
实验结果
2、 编写程序,将内存中某一区域的数据传送到另一区域。
程序代码
DATAS SEGMENT STR1 DB'i love flower' cnt equ $-STR1;此处输入数据段代码 DATAS ENDS extra segment STR2 DB CNT DUP(?) extra ends CODES SEGMENT ASSUME CS:CODES,DS:DATAS,ES:EXTRA START: MOV AX,DATAS MOV DS,AX
MOV AX,EXTRA
MOV ES,AX
MOV CX,CNT
LEA SI,STR1
LEA DI,STR2
CLD
REP MOVSB;此处输入代码段代码
MOV AH,4CH
INT 21H
CODES ENDS
ENDSTART
流程图
定义SI,DI重复使用CMPSB按位进行比较相等则将1送入al,JZ NEXT程序结束不相等则将0送入al
定义SI源串的首地址DI目的串的首地址CX串长度REP MOVSB,按位将【SI】内容存
入【DI】
需注意
STR2是存在extra
segment内
3、编写程序,在已知字符串中搜索特定字符’!’,若找到则AL 返回0,找不到AL 返回
1。(要求用字符串处理方法)
流程图:
DATAS SEGMENT STR1 DB'WHAT A HAPPY DAY!' CNT EQU $-STR1 ;此处输入数据段代码 DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV ES,AX LEA DI,STR1 MOV CX,CNT MOV AL,'!'
CLD
MOV AL,1
REPNZ SCASB
JZ NEXT
MOV AL,0
NEXT:;此处输入代码段代码
MOV AH,4CH
INT 21H
CODES ENDS
ENDSTART
结果
字符串为:'WHAT A HAPPY DAY!'寻找‘!’
字符串为:'WHAT A HAPPY DAY'寻找‘!’
定义DI为STR1串的首地址
CX串长度
REPNZ SCASB,按位用AL内容减去ES:[DI]内容,并依据指令设置标志位CX=0,不论是否
找到,都停止
4、编写程序,统计一串字符串中字符"."出现的次数。(要求用字符串处理方法);
流程图:
DATAS SEGMENT STR1 DB'SH...JDJ...D' CNT EQU $-STR1 NUM DW 0 DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV BX,NUM LEA SI,STR1 MOV CX,CNT CLD
L1:LODSB
CMP AL,'.'
JNZ L2
INC BX
LOOP L1;为什么此处的LOOP L1加
或者不加,结果一样
L2: LOOP L1
MOV AH,4CH
INT 21H
CODES ENDS
ENDSTART
结果
四、思考题
如果不用字符串处理方法,而用其他方法如何实现题目2 的程序设计,比较两种
方法效果?
答:可用loop指令方式实现,比较时采用cmp比较字符的ASCII值的方式实现,并
通过跳转对不同的结果进行处理。采用循环方式需要更多的指令才能完成相应的
功能,而采用MOVSB指令则程序更加简洁,处理更加方便快捷
。
六、实验心得
通过CMP加条件转换可以简化程序
理解SI和DI寄存器在字符串处理中使用的巧妙之处。
体会cx作为计数寄存器的方便之处
发现rep与movs、stos和lods以及repr/repz、repne/repnz和cmps、scas联合使用可
以很有针对性的处理字符串问题,以及其对于标致位DF的影响。
定义DI为STR1串的首地址
CX串长度
REPNZ SCASB,按位用AL内容减去ES:[DI]内容,并依据指令设置标志位CX=0,不论是否
找到,都停止