汇编语言程序设计实验报告
《汇编语言程序设计》实验报告(一)

MESS2 DB 'NO MATCH!’,13,10,’$'
DATA ENDS
对以上源程序重新汇编、连接、运行,结果输出为:MATCH!
七、实验总结
通过这次上机实践,我对汇编程序和连接程序的使用开始有一点了解。但刚开始还是很不顺的,总是出现找不到文件,后来经过同学的指导,终于知道自己的错误,原来是路径错误。所以还需要勤加练习,多多实践。
四、实验材料、工具、或软件
多媒体计算机、WINDOWS XP系统或纯DOS系统、MASM6.11以上版本或汇编语言程序设计实验集成环境。
五、实验要求
1. 编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能。
2.完成课堂例题,并用DEBUG运行,观察结果。
六、试验内容与步骤:(附上必要的调试过程及运行结果截图,可加附页)
试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。用串比较功能来完成程序所要求的功能。上机步骤如下:
《汇编语言程序设计》实验报告(一)
姓名
学号
系别
班级
指导教师
实验日期
课程名称
《汇编语言程序设计》
同组实验者
一、实验名称:实验一汇编程序和连接程序的使用
二、实验目的:
1. 熟悉汇编语言的上机环境;
2. 学习EDIT,MASM,LINK程序的使用;3. 掌握建立、汇、链接、运行汇编语言程序的过程。
汇编语言程序设计实验报告一

汇编语言程序设计实验报告(一)一、实验目的1. 掌握顺序程序设计方法2. 掌握分支程序的结构及分支程序的设计,调试方法3. 学习数据传送及算术和逻辑运算指令的用法4. 熟悉在PC 机上建立、汇编、连接、调试和运行汇编语言程序的过程二、实验内容1. 从键盘上接收一位十进制数X ,计算Y 值,并以十六进制形式显示出来,Y 按下列公式计算。
⎪⎪⎩⎪⎪⎨⎧===-=+=)6(2/)5()4(2)3(2222X X X X X X X X X X Y 2. 从键盘上接收两个一位十六进制数X 和Y ,然后再输入一个A-D 之间的字符,按下列要求计算。
A )当输入字符为A ,则计算X+Y ,并以十六进制形式显示出来B )当输入字符为B ,则计算|X-Y|,并以十六进制形式显示出来C )当输入字符为C ,则计算X*Y ,并以十六进制形式显示出来D )当输入字符为D ,则计算X/Y ,并以十六进制形式显示出来三、实验结果1、结果截图2、结果截图四、源代码1、代码DATA SEGMENTX DB ?TABLE DW L1,L2,L3,L4DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA START:MOV AX,DATAMOV DS,AXMOV AH,1INT 21HCMP AL,33HJB L0CMP AL,36HJA L0AND AL,0FHMOV X,ALSUB AL,3SHL AL,1XOR AH,AHMOV BX,OFFSET TABLEADD BX,AXJMP [BX]L1:MOV AL,XMUL ALADD AL,XJMP L7MUL ALSUB AL,XSUB AL,XJMP L7L3:MOV AL,XMUL ALJMP L7L4:MOV AL,XMUL ALMOV CL,2DIV CLJMP L7L7:MOV BL,ALMOV CL,4SHR AL,CLCMP AL,9JLE L5ADD AL,7L5:ADD AL,30HMOV DL,ALMOV AH,2INT 21HAND BL,0FHCMP BL,9JLE L6ADD BL,7L6:ADD BL,30HMOV DL,BLMOV AH,2INT 21HL0:MOV AH,4CHINT 21HCODE ENDSEND START2、代码DA TA SEGMENTX DB ?Y DB ?Z DB ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA START:MOV AX,DATAXOR AX,AXMOV AH,1INT 21HMOV X,ALMOV AH,1INT 21HMOV Y,ALMOV AH,1INT 21HMOV Z,ALMOV AL,XMOV BL,YMOV AH,ZCMP AL,39HJBE M1SUB AL,7M1:SUB AL,30H MOV X,ALCMP BL,39HJBE M2SUB BL,7M2:SUB BL,30H MOV Y,BLMOV AL,XMOV BL,YCMP AH,41HJE L1CMP AH,42HJE L4CMP AH,43HJE L6CMP AH,44HJE L7L1:ADD AL,BLJMP L5L4:CMP AL,BLJA L8SUB BL,ALMOV AL,BLJMP L5L8:SUB AL,BLJMP L5L6:MOV AL,XMUL BLJMP L5L7:XOR AX,AXMOV AL,XDIV BLL5:MOV BH,ALMOV CL,4SHR AL,CLCMP AL,9JLE L2ADD AL,7L2:ADD AL,30HMOV DL,ALMOV AH,2INT 21HAND BH,0FHCMP BH,9JLE L3ADD BH,7L3:ADD BH,30HMOV DL,BHMOV AH,2INT 21HL0:MOV AH,4CHINT 21HCODE ENDSEND START五、实验心得通过本次实验,我对汇编语言程序设计的方法和特点有了一点理解,并有以下心得体会。
汇编语言程序设计实验报告

汇编语言程序设计实验报告汇编语言程序设计实验报告引言汇编语言是一种低级语言,用于编写计算机的底层程序。
在计算机科学与技术领域,汇编语言程序设计是一门重要的课程。
本篇实验报告将介绍我在汇编语言程序设计实验中所学到的知识和经验。
实验目的本次实验的目的是通过编写汇编语言程序,加深对计算机底层原理的理解,并掌握汇编语言的基本语法和编程技巧。
实验环境在实验中,我使用了一台运行Windows操作系统的计算机,并安装了MASM 汇编语言开发工具。
实验内容1. 汇编语言基础知识在实验开始前,我先学习了汇编语言的基础知识。
汇编语言使用助记符来代表机器指令,与机器指令一一对应。
了解了寄存器、内存和指令的概念,并学会了如何使用它们来编写汇编程序。
2. 汇编语言程序设计在实验中,我编写了一些简单的汇编语言程序,以加深对汇编语言的理解和应用。
例如,我编写了一个计算两个数之和的程序,通过将两个数存储在寄存器中,并使用加法指令进行运算,最后将结果保存到指定的内存位置。
3. 汇编语言程序调试在编写汇编语言程序时,我遇到了一些错误和问题。
为了解决这些问题,我学会了使用调试工具来定位错误。
通过逐步执行程序,并观察寄存器和内存的变化,我能够找到程序中的错误并进行修正。
4. 汇编语言程序优化在实验中,我也尝试了对汇编语言程序进行优化,以提高程序的性能和效率。
通过减少指令的数量和使用更高效的算法,我成功地改进了程序的执行速度。
实验心得通过本次实验,我深刻体会到了汇编语言程序设计的重要性和挑战性。
汇编语言虽然复杂,但它能够直接操作计算机的硬件,提供了更高的灵活性和效率。
通过编写汇编语言程序,我不仅加深了对计算机底层原理的理解,还提高了问题解决和调试能力。
总结汇编语言程序设计实验是一门重要的课程,它为我们提供了学习计算机底层原理和编程技巧的机会。
通过实验,我掌握了汇编语言的基本知识和技巧,并成功编写和优化了汇编语言程序。
这次实验不仅加深了我的理论知识,还培养了我的实际操作能力。
汇编语言程序设计上机实验报告(实验三)-循环程序设计

汇编语言程序设计上机实验报告(实验三)一、实验题目、内容及要求:一、实验题目、内容及要求:题目:循环程序设计内容:编写一程序,要求从键盘接收一个4位十六进制数,在终端上显示与它等值的二进制数。
二进制数。
要求:实验前要作好充分准备,包括程序清单、调试步骤、调试方法,对程序结果的分析等。
本实验要求在EDIT 下编写完整的汇编语言程并生成可执行文件运行。
下编写完整的汇编语言程并生成可执行文件运行。
二、实验时间及地点二、实验时间及地点日期:日期: 2011/11/21 节次:节次: 7.8 地点:地点:电子实验楼二楼电子机房电子实验楼二楼电子机房 三、实验目的三、实验目的通过本实验掌握DOS 系统功能调用功能,掌握循环程序设计的方法;学会编写循环结构程序。
构程序。
简述在实验过程中遇到的问题和解决的方法:简述在实验过程中遇到的问题和解决的方法:1、问题:遇到死循环解决方法:程序显示disp 中发现执行int int 21h 21h 会修改al 的值,避免这种情况的方法就是使用堆栈段。
2、问题:调试中出现no data segment 解决方法:start 开始时没有将数据段的IP 地址赋给dx 。
data segment 3、问题:可执行,结果为乱码解决方法:数据划分比较的粗,没有系统的将数据系统划分。
系统划分:<30h other 30h-39h num 39h-41h other 41h-46h big zi mu 46h-61h other 61h-67h small zi mu >67h other 运行结果:(要求用“抓图软件”抓程序的运行结果)(要求用“抓图软件”抓程序的运行结果)结果分析及实验体会:结果分析及实验体会:1、结果0001001000110100是十六进制数1234转化而来。
十六进制数通过ASCII码对照转换为二进制数。
A~F----- -57hA~ f----- -57h0~9 ------ -37h2、学习应用了循环指令并了解了其特点:A、循环指令不影响标志位B、其功能为使寄存器CX的值减1,如果结果不等于0,则循环至标号,否则顺序执行。
汇编语言程序设计-实验报告

《汇编语言程序设计》实验报告实验项目1:DOS操作练习一、实验目的:熟悉windows环境下常用DOS命令的使用;掌握一些常用DOS命令。
二、实验内容:1、进入命令提示符方式Win+R 输入cmd 进入DOS2、常用DOS命令练习I、目录操作类命令:a.CD——改变当前目录格式:CD[盘符:][路径名][子目录名]b.MD——建立子目录格式:MD[盘符:][路径名]〈子目录名〉c.RD——删除子目录命令格式:RD[盘符:][路径名][子目录名]d.DIR——显示磁盘目录命令格式:DIR [盘符][路径][/P][/W]e.PATH——路径设置命令格式:PA TH[盘符1]目录[路径名1]{[;盘符2:],〈目录路径名2〉…}f.TREE——显示磁盘目录结构命令格式:TREE[盘符:][/F][》PRN]II、文件操作类命令a、COPY 文件复制命令格式:COPY [源盘][路径]〈源文件名〉[目标盘][路径][目标文件名]b、XCOPY——目录复制命令格式:XCOPY [源盘:]〈源路径名〉[目标盘符:][目标路径名][/S][/V][/E]c、TYPE——显示文件内容命令格式:TYPE[盘符:][路径]〈文件名〉d、REN——文件改名命令格式:REN[盘符:][路径]〈旧文件名〉〈新文件名〉e、ATTRIB——修改文件属性命令格式:ATTRIB [+R][-R][+A][-A] [+S][-S] [+H][-H] [文件夹或文件名]f、DEL——删除文件命令格式:DEL[盘符:][路径]〈文件名〉[/P]g、UNDELETE——恢复删除命令UNDELETE[盘符:][路径名]〈文件名〉[/DOS]/LIST][/ALL]III、磁盘操作类命令(没有做)IV、其它命令(只做了CLS指令)三、分析和体会:在实验调试中有时忘记打“:或\”都会出现错误,还有一些指令是无法执行,出现“不是内部或外部指令,也不是可运行程序或处理文件”不知道是不是系统的问题,还是我的输入格式错误,没解决。
汇编语言实验报告_6

青岛理工大学课程实验报告
课程名称汇编语言程序设计班级实验日期
2013.11.3
姓名学号实验成绩
实验
名称
子程序
实验目的及要求1.掌握子程序设计相关指令和伪指令的使用方法
2.掌握子程序设计方法, 特别是参数传递方法
3.掌握主程序和子程序之间的调用关系和调用方法
4.熟悉循环和子程序结合应用解答问题的思路
实验环境1.命令行方式
2.MASM.EXE LINK.EXE DEBUG.EXE
实验内容1.设DATA1开始的内存单元中, 存放着一串带符号字数据, 要求采用冒泡排序算法(Bubble Sort)按照从小到大的顺序排序并将排好序的数据存在DATA1开始的单元。
然后在显示器输出排好序的数据, 中间用’,’隔开。
2.输出数据使用子程序方式。
算法描述及实验步骤步骤:
(1)设置数据段地址
(2)设置堆栈段地址
(3)设置堆栈指针
(4)调用9号功能, 输出一个提示性字符串。
(5)循环进入子程序, 输出原始数据。
(6)在子程序内循环输出每一位的十进制数字。
(7)主程序进行内外循环, 进行冒泡排序。
(8)再一次调用子程序输出排序后的结果。
调试过程及实验结果调试过程:
(2)(1)在输出时, 调用DOS 9号功能, 并不是只要语句MOV AH,09H
(3)它是存在入口条件的, 入口条件:DS:DX=输出字符缓冲区首地址。
所以前面必须加上MOV DX,OFFSET NOTE1。
(4)汇编语言是不会再输出汉字的。
(5)子程序结束时一定要有RET
(6)冒泡排序也遇到一些困难。
调试结果:。
《汇编语言程序设计》实验报告二n

实验报告课程名称汇编语言程序设计实验项目实验二、分支与循环程序结构和设计实验仪器微机系统、汇编调试环境系别专业班级/学号学生姓名实验日期成绩指导教师宋平实验二分支与循环程序结构和设计一、实验目的1.学习汇编程序设计的基本方法,掌握用汇编语言设计、编写、调试和运行程序的方法;2.熟悉汇编语言源程序的编辑和汇编、目标模块的连接以及可执行程序的调试;3.熟悉、掌握顺序结构、分支结构、循环结构程序设计和调试。
二、实验要求1.Windows操作系统并具有命令提示符操作界面的计算机,且系统内安装有汇编语言编程环境;2.在开始本实验之前,复习教科书的相关内容,并预先写出相应的源程序;3.通过汇编IDE上机调试,注意观察,并记录下现象;4.学会顺序结构程序设计、分支结构程序设计、循环结构程序设计;5.通过本实验掌握汇编语言程序调试的具体步骤;6.通过查看存储单元和寄存器的内容掌握程序的运行结果。
三、实验内容1.编辑源文件【使用文本编辑器编辑具有下列功能源文件,并将该文件存入一指定的“实验文件夹”(如D:\4123\4123-2\4123-2-1.asm),分别编辑要求的源程序(共三个功能文件,涵盖顺序、分支、循环等基本程序结构)。
】2. 汇编源文件、连接目标文件,生成可执行文件操作步骤如下:(1)建立独立的实验文件夹【将源程序文件、汇编和连接工具程序(MASM.EXE、LINK.EXE)复制到同一实验文件夹】(2)TPC-USB集成开发环境【参阅“TPC-USB学生实验指导书.pdf”文档第21页开始处的说明】(3)汇编与连接操作【参阅“TPC-USB学生实验指导书.pdf”文档第21页开始处的说明当汇编和连接后出现错误提示时,请按提示位置和信息修改后保存,并重新执行汇编和连接,直至没有严重错误。
】3. 调试【参阅“TPC-USB学生实验指导书.pdf”文档用TPC-USB集成开发环境中的编译连接、启动调试/执行、单步执行、跳过、连续执行等命令调试程序,观察指令执行过程中各语句执行后的状况及程序运行结果。
《汇编语言程序设计》实验报告(一)

《汇编语⾔程序设计》实验报告(⼀)《汇编语⾔程序设计》实验报告(⼀)姓名学号系别班级指导教师实验⽇期课程名称《汇编语⾔程序设计》同组实验者⼀、实验名称:实验⼀汇编程序和连接程序的使⽤⼆、实验⽬的:1. 熟悉汇编语⾔的上机环境;2. 学习EDIT,MASM,LINK程序的使⽤;3. 掌握建⽴、汇编、链接、运⾏汇编语⾔程序的过程。
三、实验类型:验证四、实验材料、⼯具、或软件多媒体计算机、WINDOWS XP系统或纯DOS系统、MASM6.11以上版本或汇编语⾔程序设计实验集成环境。
五、实验要求1. 编写⼀程序,要求⽐较两个字符串STRING1和STRING2所含字符是否相同,若相同则显⽰‘MATCH’,若不相同则显⽰‘NO MATCH’。
⽤串⽐较功能来完成程序所要求的功能。
2.完成课堂例题,并⽤DEBUG运⾏,观察结果。
六、试验内容与步骤:(附上必要的调试过程及运⾏结果截图,可加附页)试编写⼀程序,要求⽐较两个字符串STRING1和STRING2所含字符是否相同,若相同则显⽰‘MATCH’,若不相同则显⽰‘NO MATCH’。
⽤串⽐较功能来完成程序所要求的功能。
上机步骤如下:1、调⽤/doc/284972810.html程序建⽴汇编语⾔源程序.ASM建⽴好的源⽂件以EX_1.ASM为⽂件名存盘DATA SEGMENTSTRING1 DB 'Visual C++ 'STRING2 DB 'Visual Basic'COUNT EQU $-STRING2MESS1 DB 'MATCH!’,13,10,’$'MESS2 DB 'NO MATCH!’,13,10,’$'DATA ENDScode segmentassume cs:code,ds:data,es:datamain proc farstart:push dssub ax,axpush axmov ax,datamov ds,axmov es,ax;main programmov cx,countlea si,string1lea di,string2cldrepz cmpsbjz mes1mov dx,offset mess2jmp disp0mes1:mov dx,offset mess1disp0: mov ah,9int 21hexit: retmain endpcode endsend start2、⽤汇编程序MASM对源⽂件汇编产⽣⽬标⽂件.obj键⼊命令 masm ex_1;如汇编指⽰出错则需重新调⽤EDIT程序修改错误,直到汇编通过产⽣.obj⽂件为⽌。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告实验名称汇编语言程序设计||专业班级:信息安全学号:姓名:实验一汇编语言上机过程和Debug常用调试命令一.实验目的:学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法。
二.实验题目:熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)的使用方法。
在调试过程中,学习及掌握debug程序的各种操作命令。
三.问题描述:试编写一程序:比较两个字符串string1和string2所含的字符是否相同,若相同则显示‘match’; 否则,显示‘no match’。
四.方法说明:a)使用ws、tc或EDIT编辑程序来建立源文件,然后存盘,使系统返回DOS。
b)用汇编程序masm(或asm)对源文件汇编产生目标文件obj如:汇编指示出错则需重新调用编辑程序修改错误,直至汇编通过为止。
c)用连接程序link 产生执行文件EXE.d)执行程序,可直接从DOS执行程序。
e)使用debug程序调试程序的方法。
五.实验步骤:1.调用字处理程序EDIT 建立以sample.asm文件datarea segmentstring1 db‘move the cursor backward.’string2 db‘move the cursor backward.’mess1 db ‘Match..’,13,10,’$’mess2 db ‘No match!..’,13,10,’$’datarea endsprognam segmentmain proc farassume cs:prognam,ds:datarea,es:datareastart:push dssub ax,axpush axmov ax,datareamov ds,axmov es,axlea si,string1lea di,string2cldmov cx,25repz cmpsbjz matchlea dx,mess2jmp short dispmatch:lea dx, mess1disp:mov ah,09int 21hretmain endpprognam endsend start2.对源文件汇编产生目标文件objD:\masm 文件名。
Asm3.用连接程序link产生执行文件exeD:\link文件名。
Obj4.执行程序D:\ 文件名5. 使用debug程序调试程序的方法。
d>debug 文件名.exe_1.用G命令运行程序2.用U命令显示程序3.学会设置断点。
4.学会查看数据段的容情况D5.用E命令修改数据区的字符串。
6.用A 命令把数据区的容恢复原状7.T命令逐条跟踪程序的执行8.学会使用F命令、R命令、Q命令等等五、实验总结第一次进行汇编实验,主要是学习程序设计的基本方法和技能,熟练掌握用汇编语言设计、编写、调试和运行程序的方法,只有多上机练习,才能更好的掌握汇编语言程序设计的思想。
实验二循环程序设计1循环结构是控制重复执行某一程序段的基本程序结构. 在汇编语言程序设计中, 循环程序的地位也是极为重要,从本质上来看, 循环程序结构是分支程序结构的一种手特殊形式, 也是使用条件转移指令来控制执行循环的.一.实验目的:学会用循环结构进行程序编程。
二.实验题目:设计一个按表格形式显示ASC||码为10H—100H的所有字符的程序。
三.实验要求:按15行*16列的表格形式显示ASC||码为10H----100H的所有字符,即以行为主的顺序及ASC||码递增的次序依次显示对应的字符。
每16个字符为一行,每行中的相邻两个字符之间用空白符(ASC||为0)隔开。
四.方法说明:(1) 显示每个字符可使用功能号为02的显示输出功能调用,使用方法如下:mov ah,02hmov dl,0AHint 21h本题中可把dl 初始化为10H, 然后不断使其加1(用INC指令) 以取得下一个字符的ASC||码。
(2) 显示空白符时,用其ASC||码0置入dl 寄存器,每行结束时,用显示回车(ASC||为0dh)和换行符(ASC||为oah)来结束本行并开始下一行。
(3) 由于逐个显示相继的ASC||字符时,需要保存并不断修改dl寄存器的容,而显示空白、回车、换行符时也需要使用dl寄存器,为此可使用堆栈来保存相继的ASC||字符。
具体用法是:在显示空白或回车,换行符前用指令push dx 把dl 的容保存到堆栈中去。
在显示空白或回车,换行符后用指令pop dx 恢复dl寄存器的原始容。
五、实验代码stack segmentdb100 dup (?)stack endscode segmentassume cs:code,ss:stackstart:mov dl,10hmov cl,0fhloopc:mov ah,02hmov al,dlint 21hinc dlpush dxmov dl,0hmov ah,02hmov al,dlint 21hpop dxloopnz loopcpush dxmov dl,0dhmov ah,02hmov al,dlint 21hmov dl,0ahmov ah,02hmov al,dlint 21hpop dxmov cl,0fhcmp dl,0hjne loopcmov ah,4chint 21hcode endsend start 六、实验结果七、实验总结本次试验学会用循环结构进行程序编程,学好循环程序是很重要的,在程序设计中,它的地位是极其重要的。
实验三循环程序设计2一.实验目的:学会用循环程序设计进行程序编程。
二.实验题目:设计查找匹配字符串SEARCH的程序。
三.问题要求:程序接收用户键入的一个关键字以及一个句子。
如果句子中不包含关键字则显示’no match’;如果句子中包含关键字则显示‘match’,且把该字在句子中的位置用十六进制数显示出来,要求程序的执行过程如下:enter keyword :abcenter sentence :we are studying abcmatch at location :11H of the sentenceenter sentence: xyz ,ok?no matchenter sentence :^c四. 方法说明:程序可由三部分组成:(1 ) 输入关键字和一个句子,分别存入相应的缓冲区中,可用功能调用0AH。
(2)在句子中查找关键字。
1.关键字和一个句子中相应字段的比较可使用串比较指令,为此必须定义附加段,但附加段和数据段可以定义为同一段,以便于串指令的使用,这样,相应的寄存器容也有了确定的含义,如下:SI 寄存器为关键字的指针DI 寄存器为句子中正相比较的字段的指针CX寄存器存放关键字的字母个数(长度)2.整个句子和关键字的比较过程可以用一个循环结构来完成。
循环次数为:(句子长度--关键字长度)+1在计算循环次数时,如遇到句子长度小于关键字长度的情况则应转向显示“no match”,循环中还需要用到BX寄存器,它用来保存句子中当前正在比较字段的首地址。
(3)输出信息:用功能调用09h分“找到”或“找不到”两种情况分别显示不同的信息。
在“找到”时,还要求显示出匹配字符串在句子中的位置,在“找到”时BX寄存器的容为匹配字符串的首地址,将此值减到句子的首地址,再将差值加1 即是所要的匹配字符串在句子中的位置,可将位置转换为十六进制数从屏幕上显示出来。
五、实验代码sseg segment stackdw256 dup(?)sseg endsdata segmentmsg1 db'Enter keyword:',24hmsg2 db'Enter Sentence:',24hcr db13,10,24hkeyword db250,?,250 dup(?)Sentence db250,?,250 dup(?)match db'Match at location:',24hmatch1 db' of the sentence',13,10,24hnomatch db'No match',13,10,24hdata endscode segmentassume cs:code,ds:data,ss:ssegdisp_hex proc nearpush axpush cxpush dxpush axmov cl,4ror al,cland al,0fhadd al,30hcmp al,39hjna d1add al,7d1:mov dl,almov ah,2int 21hpop axand al,0fhadd al,30hcmp al,39hjna d2add al,7d2:mov dl,almov ah,2int 21hmov dl,'h'mov ah,2int 21hpop dxpop cxpop axretdisp_hex endpbegin:mov ax,datamov ds,axmov es,axmov dx,offset msg1mov ah,9int 21hmov dx,offset keywordmov ah,0ahint 21hcmp keyword +1,0 je quitmov dx,offset crmov ah,9int 21hb1:mov dx,offset msg2mov ah,9int 21hmov dx,offset Sentencemov ah,0ahint 21hmov dx,offset crmov ah,9int 21hmov dl,Sentence + 1cmp dl,0je quitmov dh,keyword + 1mov di,offset Sentence + 2b2:cmp dh,dlja _nomatchmov si,offset keyword + 2mov cl,dhmov ch,0cldpush direpe cmpsbpop dije _matchinc didec dljmp b2_match:mov ax,disub ax,offset Sentence + 2inc axpush axmov dx,offset matchmov ah,9int 21hpop axcall disp_hexmov dx,offset match1mov ah,9int 21hjmp b1_nomatch:mov dx,offset nomatchmov ah,9int 21hjmp b1quit:mov ah,4chint 21hcode endsend begin六、实验结果七、实验总结本次试验主要考察了串比较指令的用法,同时将串指令和REPE联合起来用,使得指令变得简单。