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

下载本文档

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

文档简介

1、实验三字符串操作实验(设计性实验一、实验要求和目的1.了解汇编语言字符串处理基本流程;2.熟悉汇编语言字符串处理基本指令的使用方法;3.掌握利用汇编语言实现字符串处理的程序设计方法。二、软硬件环境1、硬件环境:计算机系统windows ;2、软件环境:装有MASM、DEBUG、LINK、等应用程序。三、实验涉及的主要知识1、字符串处理基本操作流程(1利用SI寄存器保存源申首地址;(2利用DI寄存器保存目的申首地址;(3利用CX寄存器保存字符串长度;(4利用CLD或STD指令设置字符串处理方向;(5利用字符串处理指令实现相关处理。其中,CLD指令使DF=0,在执行用处理指令时可使地址自动增量;S

2、TD使DF=1, 在执行审处理指令时可使地址自动减量。提示:字符串处理一般都涉及到源用和目的申,汇编语言规定源用在数据段中定 义,目的用在附加段中定义2、重复前缀指令重复次数由计数寄存器CX中存放的值决定,指令每重复执行一次,计数器CX 中值减1,当CX中值减至0时,停止重复执行,继续执行下一条指令REP无条件重复前缀,重复用操作直到计数寄存器的内容 CX为0为止。经常 与REP配合工作的字符串处理指令有 MOVS、STOS和LODS。REPE/REPZ判断计数寄存器的内容CX是否为0或ZF=0(即比较的两个操作 数不等,只要满足一个则重复执行结束,否则继续执行。可以与 REPE/REPZ配合

3、工 作的用指令有CMPS和SCAS。REPNE/REPNZ判断计数寄存器的内容是否为 0或ZF=1(即比较的两个操作数 相等,只要满足一个则重复执行结束,否则继续执行。可以与REPE/REPZ配合工作 的申指令有CMPS和SCAS。3、字符串处理基本指令(1 MOVS传送指令格式:MOVS DST, SRC或MOVSB (传送字节或MOVSW (传送字。后面两种形式需要与REP指令结合使用。该指令把由源变址寄存器(SRC指向的数据段中的一个字(或字节数据传送到由 目的变址寄存器(DST指向的附加段中的一个字(或字节中去,同时,根据方向标志及 数据格式(字或字节对源变址寄存器和目的变址寄存器进行

4、修改。(2 STOS存入用指令格式:STOS DST或STOSB存入字节或STOSW (存入字。该指令把AL或AX的内容存入由目的变址寄存器指向的附加段的某单元中,并根据方向标志(DF和数据类型修改目的变址寄存器的内容。(3 LODS从申取指令格式:LODS SRC或LODSB (取字节或LODSW (取字。该指令把由源变址寄存器指向的数据段中某单元的内容传送到AL或AX中,并根据方向标志和数据类型修改源变址寄存器的内容。(4 CMPS用比较指令格式:CMPS SRC, DST 或 CMPSB 或 CMPSW。该指令把由源变址寄存器指向的数据段中的一个字节或字与由目的变址寄存器 所指向的附加段

5、中的一个字节或字相减,但不保存结果,只根据结果设置条件标志。该指令与 REPE/REPZ或REPNE/REPNZ结合,可以比较两个数据申。(5 SCAS用扫描指令格式:SCAS DST 或 SCASB 或 SCASW。该指令把AL或AX的内容与由目的变址寄存器所指向的附加段中的一个字节 或字进行比较,并不保存结果,只根据结果设置条件码。该指令与 REPE/REPZ或REPNE/REPNZ结合,可以从一个字符串中查找一个 指定的字符。总的来说,字符串处理可以将缓冲区中一个数据块搬至存储器的另一处,比较两个字符串是否相等,从缓冲区中一个数据块寻找某一个特定的关键字,顺次从一个 缓冲区取字符或 顺次

6、向一个缓冲区存字符等。四、实验内容与步骤1、比较缓冲区中两字符串是否相同,相同则AL返回0,不同AL返回1。为了 使程序的通用性比较好,字符串长度要求自动获取。(要求用字符串处理方法流程图:REPE OVIPSB口串1的苜地址 川串2的疔地址SuMl早1限度Counts啡2氏度LCLflL * * c c rs程序代码:DATAS SEGMENTBUF1 DB ABCDEFGH COUNT1 EQU $-BUF1DATAS ENDS EXTRA SEGMENTBUF2 DB ABCDEFGH COUNT2 EQU $-BUF2 EXTRA ENDSCODES SEGMENTASSUME CS:

7、CODES,DS:DATAS,ES:EXTRA START :MOV AX,DATAS MOV DS,AX MOV AX,EXTRA MOV ES,AX LEA SI,BUF1LEA DI,BUF2 MOV CX,COUNT1 CMP CX,COUNT2 JNZ EXIT1 CLDREPE CMPSB JNZ EXIT1 MOV AL,0 JMP EXIT2 EXIT1: MOV AL,1 EXIT2:MOV AH,4CH INT 21H CODES ENDS END STARTT实验结果:BUF1 ABCDEFGH BUF2 ABCDEFGHAX=1400BK=O0OODS 二:U85 ES

8、=1486 1487:0026 BUCCX-0000 DX=0000 SP-0000 BP=0000 SI-0SS=1485 CS=1487 IP=0026 NV UP EI PL MOVBUF1 ABCDEFGH BUF2 ABCDHGIJBX-0000ESB6 8 4C 1X4CX-0000 DX-0000 SP-0000 BP-0000 S:-0SS=1485 CS-1487 IP=6026 NV UP EI PLMOV fill.U2、编写程序,将内存中某一区域的数据传送到另一区域。(要求用字符串处理 方法SI曲中的广打也用一m F1的串的苜地址DF=O 或 1CX串长度程序代码:结束

9、串操作DATAS SEGMENTBUF1 DB ABCDEFGHCOUNT EQU ($-BUF1 /DATAS ENDSextra segmentBUF2 DB COUNT dup (?extra endsCODES SEGMENTASSUME CS:CODES,DS:DATAS,ES:EXTRA START :MOV AX,DATAS MOV DS,AXMOV AX,EXTRAMOV ES,AXLEA SI,BUF1;置源用指针LEA DI,BUF2;置目的用指针 MOV CX,COUNT;数据个数存入 CX CLD ;置正方 向REP MOVSB;用传送MOV AH,4CHINT 21H

10、CODES ENDSENDSTART实验结果:3、编写程序,在已知字符串中搜索特定字符!若找到则AL返回0,找不到AL 返回1。(要求用字符串处理方法流程图:-DDS:B 1486:6900 L49G:00L0 1486:6020 L48G033 1486:0840 1.4O6:00S0 6;则日 1496:0070 -DES:0 149710900 i_4a?:00i_0 1487:0020 149216038 144?二肺包4出44E90600 4480 0000394-90S00 441D8000 2260 000044-90kJobH 1180 00044E0 机0口94E00 A48

11、00 A34 9 0 R 41BMA2600 A 4a00ft 1OO00A6 6 8cM006 44BF 09035588R0B3 44D0 0993SOO00A d-D30n46eeFC474B-00304748-0000我8714-8 EC081)F3R4-B44CCB00 0000 00 0609 0000 00 9G00 0Q-00 30 Q00 03Q8 30 33F3fi4-B44cCD00000100008HAfiflflfilAH47 4600 50 SOH7 14-8E C0 QD00&L 00030032 00000E1060220ft。usMflii R-0A00 66

12、00 00UD 3E86 QS时860的86 Q800 Q6UD 3E00 00Mtl MUHA 0新程序代码:DATAS SEGMENTSTRING DB WONDERFUL DAY! IT IS ACOUNT EQU $-STRINGDATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,ES:DATAS START :MOV AX,DATASMOV DS,AXMOV ES,AXLEA DI,STRING MOV AL,!MOV CX,COUNT CLDREPNE SCASB JZ FOUNDMOV AL,1JMP EXITFOUND:MOV AL,

13、0 EXIT:MOV AH,4CHINT 21HCODES ENDS ENDSTART实验结果:案例一:字符串为:WONDERFUL DAY! IT IS A寻找!案例二:字符串 为:WONDERFUL DAY IT IS AFIX-1400 3=9099 CX =6699 DX=0曰曰 色 P=9009S1照 4485 ES-14S5 SS=1485 CS=1487 IP=001S NU UI EI PL ZR Ni14:87:0018 B44cMOU AH4CAX-1480 BX-0300DS =148 5 ES=1485 B44cCX=0008 DX=0008 SP=0000 BP=30

14、00SS=1485 CS*1487 IF=001B NU UP EI FL ZR NlMOU AH.4C-gibaw=i /tm nv m国口口出 rwnwnvaai3 c t4、编写程序,统计一用字符串中字符.”出现的次数。(要求用字符串处理方 法); 流程图: 程序代码:DATAS SEGMENT STRING DBWO.DA.Y.I.TCOUNT EQU $-STRING N DW 0 DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV BX,N LEASI,STRING MOV CX,COUNT CLD L1:LODSB CMP AL,. JNZ L2 INC BX L2:LOOP L1 MOV AH,4CH INT 21H CODES ENDS ENDSTART 运行结果:字符串: WO.DA.Y.I.T匹配字符:五、思考题如果不用字符串处理方法,而用其他方法如何实现题目2的程序设计,比较两种方法效果?答:可用loop指令方式实现,比较时采用cmp比较字符的ASCII 值的方式实现,并通过跳转对不同的结果进行处理。采用循环方式需要更多的指令才

温馨提示

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

评论

0/150

提交评论