资源描述:
《北京理工大学汇编语言实验报告3字符串操作实验(设计性实验)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实验三字符串操作实验(设计性实验)蔡航(1120110312)一、实验要求和口的1.了解汇编语言字符串处理基本流程;2.熟悉汇编语言字符串处理基木指令的使用方法;3.掌握利用汇编语言实现字符串处理的程序设计方法。二、软硬件环境1、硬件环境:计算机系统windows;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。三、实验涉及的主要知识1、字符串处理基木操作流程(1)利用SI寄存器保存源串首地址;(2)利用DI寄存器保存冃的串首地址;(3)利用CX寄存器保存字符串长度;(4)利用CLD或STD指令设置字符串处理方向;(5)利用字符串处理指令实现相关处理
2、。其中,CLD指令使DF=0,在执行串处理指令时可使地址自动增昼STD使DF=1,在执行串处理指令时可使地址自动减量。提示:字符串处理一般都涉及到源串和目的串,汇编语言规定源串在数据段中定义,目的串在附加段中定义。2、重复前缀指令,重复次数由计数寄存器CX屮存放的值决定,指令每重复执行一次,计数器CX中值减1,当CX中值减至0时,停止重复执行,继续执行下一条指令REP无条件重复前缀,重复串操作肓到计数寄存器的内容CX为0为止。经常与REP配合工作的字符串处理指令有MOVS>STOS和LODSoREPE/REPZ判断计数寄存器的内容CX是否为()或ZF=()(即比鮫
3、的两个操作数不等),只要满足一个则重复执行结束,否则继续执行。可以与REPE/REPZ配合工作的串指令有CMPS和SCAS。REPNE/REPNZ判断计数寄存器的内容是否为0或ZF=1(即比较的两个操作数和等),只要满足一个则垂复执行结束,否则继续执行。可以与REPE/REPZ配合工作的串指令冇CMPS和SCASc3、字符串处理基木指令(1)MOVS传送指令格式:MOVSDST,SRC或MOVSB(传送字节)或MOVSW(传送字)。后面两种形式需要与REP指令结合使用。该指令把由源变址寄存器(SRC)指向的数据段屮的一个字(或字节)数据传送到由目的变址寄存器(DS
4、T)指向的附加段中的一个字(或字节)中去,同时,根据方向标志及数据格式(字或字节)对源变址寄存器和目的变址寄存器进行修改。(2)STOS存入串指令格式:STOSDST或STOSB(存入字节)或STOSW(存入字)。该指令把AL或AX的内容存入由Id的变址寄存器指向的附加段的某单元中,并根据方向标志(DF)和数据类型修改目的变址奇存器的内容。(3)LODS从串取指令格式:LODSSRC或LODSB(取字节)或LODSW(取字)。该指令把由源变址寄存器指向的数据段屮某单元的内容传送到AL或AX屮,并根据方向标志和数据类型修改源变址寄存器的内容。(4)CMPS串比较指令
5、格式:CMPSSRC,DST或CMPSB或CMPSW。该指令把由源变址寄存器指向的数据段屮的一个字节或字与由目的变址寄存器所指向的附加段中的一个字节或字相减,但不保存结果,只根据结果设置条件标志。该指令与REPE/REPZ或REPNE/REPNZ结合,可以比较两个数据小。(5)SCAS串扫描指令格式:SCASDST或SCASB或SCASW。该指令把AL或AX的内容与山目的变址寄存器所指向的附加段中的一个字节或字进行比较,并不保存结果,只根据结果设置条件码。该指令与REPE/REPZ或REPNE/REPNZ结合,可以从一个字符串屮查找一个指定的字符。总的來说,字符串
6、处理町以将缓冲区中一个数据块搬至存储器的另一处,比较两个字符串是否相等,从缓冲区屮一个数据块寻找某一个特定的关键字,顺次从一个缓冲区取字符或顺次向一个缓冲区存字符等。四、实验内容与步骤1、比较缓冲区中两字符串是否相同,和同则AL返回0,不同AL返回1。为了使程序的通用性比较好,字符串长度要求口动获取。(要求用字符串处理方法)・流程图如下:・源代码如下:DATASSEGNfENTstrldbT23456'countlcqu$-strl;此处输入数据段代码DATASENDScomparesegmentstr2db'1234563'count2equ$-str2comp
7、areendsCODESSEGMENTASSUMECS:CODES,DS:DATAS,es:compareSTART:MOVAX,DATASMOVDS,AXmoves,axleasi,strlleadi,str2cldmovex,countlempex,count2jnzreslrepeempsbjnzreslmoval,0jmpres2resl:moval,1res2:MOVAH,4CHINT21HCODESENDSENDSTART・运行结果如下fete查找注释取注徹销恢复运行列表调试教程日记注册王页帝助DATASSEGMENTStr1db*1231156*co
8、untl?