北京理工大学汇编语言实验三 字符串操作实验_第1页
北京理工大学汇编语言实验三 字符串操作实验_第2页
北京理工大学汇编语言实验三 字符串操作实验_第3页
北京理工大学汇编语言实验三 字符串操作实验_第4页
北京理工大学汇编语言实验三 字符串操作实验_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验三字符串操作实验(设计性实验)

一、实验要求和目的1.了解汇编语言字符串处理基本流程;2.熟悉汇编语言宇符串处理基本指令的使用方法;3.掌握利用汇编语言实现宇符串处理的程序设计方法。二、软硬件环境1.硬件环境:计算机系统windows2.软件环境:装有MASM、DEBUG、LINK、等应用程序.三、实验涉及的主要知识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传送指令格式:MOVSDST,SRC或MOVSB(传送宇节)或MOVSW(传送字)。后而两种形式需要与REP指令结合使用。该指令把由源变址寄存器(SRC)指向的数据段中的一个字(或字节)数据传送到由目的变址寄存器(DST)指向的附加段中的一个宇(或字节)中去,同时,根据方向标志及数据格式(字或字节)对源变址寄存器和目的变址寄存器进行修改.(2)STOS存入串指令格式STOSDST或STOSB(存入字节)或STOSW(存入字)。该指令把AL或AX的内容存入由目的变址寄存器指向的附加段的某单元中,井根据方向标志(DF)相数据类型修改日的变址寄存端的内容.(3)LODS从串取指令格式LODSSRC或LODSB(取字节)或LODSW(取字)该指令把由源变址寄存器指向的数据段中某单元的内容传送到AL或AX中,并根据方向标志和数据类型修改源变址寄存器的内容。(4)CMPS串比较指令DST或CMPSB或CMPSW.该指令把由变址寄存器指向的数据段中的一个字节或字与由目的变址寄存器所指向的附加段中的一个字节或字相减,但不保存结果,只根据结果设置条件标志。该指令与REPE/REPZ或REPNE/REPNZ结合,可以比较两个数据串。(5)SCAS串扫描指令格式:SCASDST或SCASB或SCASW。该指令把AL或AX的内容与由目的变址寄存器所指向的附加段中的一个字节或字进行比较,并不保存结果,只根据结果设置条件码。该指令与REPE/REPZ或REPNE/REPNZ结合,可以从某个字符串中查找一个指定的字符。总的来说,字符串处理可以将缓冲区中个数据块搬至存储器的另处,比较两个宇符串是否相等,从缓冲区中一个数据块寻找某一个特定的关键字,顺次从一个缓冲区取字符或顺次向一个缓冲区存字符等.四、程序流程图设计

开始NNY第cx个字符相等且cx!=0Cx=Cx-1YY取字符串长度存入CX两串长度相等NY第cx个字符相等且cx!=0YY两串长度相等开始开始NNY第cx个字符相等且cx!=0Cx=Cx-1YY取字符串长度存入CX两串长度相等NY第cx个字符相等且cx!=0YY两串长度相等开始输出AX结束开始AX=0若当前字符=.AX加1开始取字符串长度存入CXcx!=0YCx=Cx-1不是!NN结束输出0输出1结束输出不相等YN输出相等Cx=0Cx=Cx-1Ycx!=0取字符串长度存入CXNY结束Cx=Cx-1NY复制当前字符cx!=0取字符串长度存入CX输出AX结束开始AX=0若当前字符=.AX加1开始取字符串长度存入CXcx!=0YCx=Cx-1不是!NN结束输出0输出1结束输出不相等YN输出相等Cx=0Cx=Cx-1Ycx!=0取字符串长度存入CXNY结束Cx=Cx-1NY复制当前字符cx!=0取字符串长度存入CX

五、实验结果注:最上方为最终寄存器结果 -g后为执行结果 0001为第一题输出 0002为第二题执行完成标志,具体结果见dds:0后数据段内存输出 0000为第三题输出 000a为第四题输出,即10个。六、汇编代码DATASSEGMENT;此处输入数据段代码str1db'TheUnitedStatesofAmerica'n1dw($-str1)str2db'TheUnitedstatesofAmerica'n2dw($-str2)str3db128dup(0)n3dw($-str3)str4db'The!isasymbol.'n4dw($-str4)str5db'how...many.......?'n5dw($-str5)tempdw0tempcxdw0tabdb'0123456789abcdef'DATASENDSSTACKSSEGMENT;此处输入堆栈段代码dw32dup(0)STACKSENDSCODESSEGMENTASSUMECS:CODES,DS:DATAS,SS:STACKSSTART:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MOVAX,DATASMOVDS,AXMOVES,AXmovax,STACKSmovss,axmovax,0040hmovsp,ax;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1 movtemp,1 movax,n1 movbx,n2 cmpax,bx jnzskip1 leadx,str1 movdi,ax leaax,str2 movsi,ax movcx,n1 cld repecmpsb jcxzchange1 jmpskip1change1: movtemp,0skip1: callprint callnewline callnewline;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1END;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2 leaax,str1 movsi,ax leaax,str3 movdi,ax movcx,n1 cld repmovsb movtemp,2 callprint callnewline callnewline;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2END;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3 movtemp,0 leaax,str4 movdi,ax movcx,n4 moval,'!' cld repnescasb jcxzchange2 jmpskip2change2: movtemp,1skip2: callprint callnewline callnewline;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3END;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4 movtemp,0 leaax,str5 movdi,ax movcx,n5 moval,'.' cldl: repnescasb jcxzskip3 inctemp jmplskip3: callprint callnewline;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4ENDMOVAH,4CHINT21H;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;print: ;outputtheASCIIintemp ;1 movax,temp movcx,4 shrah,cl moval,ah movah,0 leabx,tab addbx,ax movdl,ds:[bx] movah,2 int21h ;2 movax,temp andah,0fh moval,ah movah,0 leabx,tab addbx,ax movdl,ds:[bx] movah,2 int21h ;3 movax,temp movcx,4 shral,cl movah,0 leabx,tab addbx,ax movdl,ds:[bx] movah,2 int21h ;4 movax,temp andal,0fh movah,0 leabx,tab addbx,ax movdl,ds:[bx] movah,2 int21h retnewline: movah,2 movdl,0dh int21h movah,2 movdl,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论